Skip to content
Advertisement

PHP how to send and receive multiple choice box

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.

User contributions licensed under: CC BY-SA
1 People found this is helpful
Advertisement