I apologize for my bad English, I hope I can explain myself better.
<? php
$ login = 'XL8T7924H9G9U1M99GTSVV9BHC2KYRFL';
$ password = '';
$ url = 'https://www.website.com/api/products?&output_format=JSON&display=full';
$ ch = curl_init ();
curl_setopt ($ ch, CURLOPT_URL, $ url);
curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt ($ ch, CURLOPT_USERPWD, "$ login: $ password");
$ result = curl_exec ($ ch);
curl_close ($ ch);
$ json = json_decode ($ result, true);
/ echo ($ result);
?>
<form action = "" method = "post">
<table id = "example" class = "table table-striped table-bordered zero-configuration">
<thead>
<tr>
<th class = "th-sm"> # </th>
<th class = "th-sm"> Name </th>
<th class = "th-sm"> Description </th>
<th class = "th-sm"> Short Description </th>
<th class = "th-sm"> Image </th>
<th class = "th-sm"> Activate </th>
</tr>
</thead>
<tbody>
<div class = "form-group" style = "text-align: -webkit-center;">
<div class = "form-check form-check-inline">
<? php
foreach ($ json ['products'] as $ data)
{
echo "<tr>";
echo "<td>". $ data ['id']. "</td>";
echo "<td>". $ data ['name']. "</td>";
echo "<td>". $ data ['description']. "</td>";
echo "<td>". $ data ['description_short']. "</td>";
echo "<td>". '<img src = "http://www.website.com/'.$data [" id_default_image "] .'- home_default /'.$ data [" link_rewrite "].'. jpg" class = "img-thumbnail "width =" 120 "height =" auto "/> ';
echo "<td> <input type = 'checkbox' name = 'checkbox' value = '1'> </td>";
echo "</tr>";
}?>
</tbody>
</table>
<input type = "submit" name = "submitp" id = "submitp" value = "submit">
</form>
<? php
if (isset ($ _ POST ['submitp'])) {
$ id = "product id:". $ _ POST ['id']. "";
$ name = "product name:". $ _ POST ['name']. "";
$ description = "product description:". $ _ POST ['description']. "";
$ description_short = "short product description:". $ _ POST ['description_short']. "";
$ image = "product image:". $ _ POST ['image']. "";
$ file = fopen ("file.txt", "w +");
fwrite ($ file, $ id);
fwrite ($ file, $ name);
fwrite ($ file, $ description);
fwrite ($ file, $ short_description);
fwrite ($ file, $ image);
fclose ($ file);
}
?>
I know I'm wrong but I can't figure out how to save the entire selected row.
what you want to achieve: saving the selected row with its id, name, description and short description through the checkbox
errors: none
what it saves: only the contents of the checkbox
I hope I have explained myself well and thank you for your help
When you submit, it only submits input
s (and a couple of other input types, like select
, textarea
).
<td>123</td>
will not be submitted.
You can add hidden inputs, built and populated at the same time as your build your table, which will then also be submitted, eg:
<td>123<input type='hidden' name='id[0]' value='123'></td>
You'll need to use the correct format for name=id[0]
to ensure php picks up all the rows in different values; there's different ways to do this.
The essential part of this question/answer is to include a hidden input.
Only form fields are submitted to the server. The table cells without a field will not be sent on submission
You can have a set of hidden fields populated by JavaScript when you check the box, (see later)
Alternatively you could use AJAX
You have checkboxes, do you want to save more than one row? If not, use radios instead
Change
echo "<td>". $data ['id']. "</td>";
echo "<td>". $data ['name']. "</td>";
echo "<td>". $data ['description']. "</td>";
echo "<td>". $data ['description_short']. "</td>";
to
echo "<td data-key=\"id\">". $data ['id']. "</td>";
echo "<td data-key=\"name\">". $data ['name']. "</td>";
echo "<td data-key=\"description\">". $data ['description']. "</td>";
echo "<td data-key=\"description_short\">". $data ['description_short']. "</td>";
Then use
$(function() {
$("form").on("submit",function(e) {
e.preventDefault(); // stop submission
let details = $('input[name="checkbox"]:checked')
.closest("tr") / parent row
.find("td[key]") // only the ones with a key attribute
.map(function() { return { [this.dataset.key] : this.textContent})
.get();
$.post("yourSaveUrl.php",details,function() { console.log("Details saved") })
})
})
Using hidden fields for ONE checked box (same data attributes as above):
<form>
<input type="hidden" name="id">
<input type="hidden" name="name">
<input type="hidden" name="description">
<input type="hidden" name="description_short">
using
$(function() {
$("form").on("submit",function(e) {
const form = this; // save the form
$('input[name="checkbox"]:checked')
.closest("tr") / parent row
.find("td[key]") // only the ones with a key attribute
.each(function() {
form[key].value = this.textContent;
})
})
})
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.