i have textarea
generated based on how many times they're in table id. people have no textarea
, others have one, others two, etc... how can update tabled based on these using example if possible.
main page
<?php $q = $_get["q"]; $list = $db->prepare("select * table id = ?"); $list->execute(array($q)); $data = $list->fetchall(); foreach ($data $row) :?> <textarea id="tableid<?=$row["tableid"]?>"></textarea> <?endforeach?> <div class="button">save</div> <script type="text/javascript"> $( '.button' ).click(function() { var tableid = $("#tableid").attr('id'); var comment = $("#tableid").val(); $.ajax({ method: "post", url: "save.php", data : { tableid : tableid, comment : comment } }); }); </script>
save page
<?php $comment = $_post["comment"]; $tableid = $_post["tableid"]; $save = $db->prepare('update table set comment = ? tableid = ?'); $save->execute(array($comment,$tableid)); ?>
rather generating textarea
elements different numbered names, cumbersome process on end:
<textarea name="tableid1"></textarea> <textarea name="tableid2"></textarea> <textarea name="tableid3"></textarea>
you can name them placed single $_post
variable. this, name them brackets @ end of name this:
<textarea name="tableid[]"></textarea> <textarea name="tableid[]"></textarea> <textarea name="tableid[]"></textarea>
on php side, values 3 of above text areas placed array values @ indexes 0, 1, & 2.
in case, since want each textarea associated specific tableid, use array within array using tableid first key this:
<textarea name="tableid[12][]"></textarea> <textarea name="tableid[54][]"></textarea> <textarea name="tableid[163][]"></textarea> <textarea name="tableid[180][]"></textarea>
in doing this, you'd passing tableid part of element name, don't need post 2 different variables, comment & tableid, need post comment (textarea value).
so code in foreach loop generating page like:
<textarea id="comment[<?=$row["tableid"]?>][]"></textarea>
and submit code (assuming wrap <textarea>
elements in <form>
):
$(function () { $('form').submit(function () { $.post('save.php', $('form').serialize(), function () { // here if want }); return false; }); });
once have data being neatly posted in single array, prepare statement doing already, wrap execute
in loop iterates through each tableid:
foreach($comment $tableid => $commenttext){ $save->execute(array($commenttext,$tableid)); }