I need suggestion. I have an list of position from database, displayed in table and in the last table row is an option to select “TAK” – YES and “NIE” – NO, please tell me is it possible and if it, how to send and receive it all selected to “TAK” fields at file wypozyczalnia.php
<form action='wypozyczalnia.php' method='post'> <table width="1000px" align="center" border="1"> <tr> <th width="250px">Tytuł</th> <th width="250px">Autor</th> <th width="300px">Opis</th> <th width="200px">Dostępność</th> </tr> <?php //sprawdzanie czy taka zmienna jest ustawiona w sesji, jest to dla nowo wchodzących na stronę if(isset($_SESSION['blad'])) echo $_SESSION['blad']; //wyświetlanie wyników gdy zmienna ile zwróciła przynajmniej 1 rząd if ($ile>=1) { //pętle wyświetlająca wszystkie zwrócone z zapytania wpisy for ($i = 1; $i <= $ile; $i++) { //pobranie rzędu jako tablicę asocjacyjną $row = mysqli_fetch_assoc($rezultat); //przypisanie każdej kolumny do odpowiedniej zmiennej $title = $row['title']; $author = $row['author']; $description = $row['description']; $available = $row['available']; echo "<tr> <td> ".$title." </td> <td> ".$author." </td> <td> ".$description." </td> <td>"; if($available==1) { echo "TAK"; } else { echo "NIE"; } "</td> </tr>"; if(isset($_SESSION['zalogowany']) && ($_SESSION['zalogowany']==true) && $available==1) { echo "<select name='idksiazki[]' > <option name='NIE'>NIE</option> <option name='TAK'>TAK</option> </select>"; } } }?> </table> <?php if(isset($_SESSION['zalogowany']) && ($_SESSION['zalogowany']==true)) { echo "<br /> <input type='submit' name='zapis' value='wypożyczam'></form>"; } ?> </form>
Advertisement
Answer
At the moment you have multiple forms – one per table row, so each <select
is inside its own form. You can’t submit multiple forms at once from a HTML page. Also your existing forms seem to be missing the </form>
tag so they will be invalid anyway.
Therefore, to be able to submit all the <select
values at the same time, you need a single form, which has the entire table contained within it.
For example:
<form action='wypozyczalnia.php' method='post'> <table> <?php if ($ile>=1) { //pętle wyświetlająca wszystkie zwrócone z zapytania wpisy for ($i = 1; $i <= $ile; $i++) { //pobranie rzędu jako tablicę asocjacyjną $row = mysqli_fetch_assoc($rezultat); //przypisanie każdej kolumny do odpowiedniej zmiennej $title = $row['title']; $author = $row['author']; $description = $row['description']; $available = $row['available']; echo "<tr> <th> ".$title." </th> <th> ".$author." </th> <th> ".$description." </th> <th>"; if($available==1) { echo "TAK"; } else { echo "NIE"; } "</th>"; if(isset($_SESSION['zalogowany']) && ($_SESSION['zalogowany']==true) && $available==1) { echo "<th> <select name='idksiazki[]' > <option value=$i;>NIE</option> <option value=$i;>TAK</option> </select> </th>"; } echo "</tr>"; } } ?> </table> </form>
P.S. A note about HTML semantics: <th>
is mean to indicate a table heading, e.g. the title of a column, or the main heading within a row. It should not be used for every cell in your table. <td>
is for normal table cells. If you wish to make the text bold, use CSS instead.