Как заполнить поле выбора на основе записей базы данных, которые соответствуют переменной сеанса - PullRequest
1 голос
/ 29 марта 2019

Я пытаюсь заполнить поля выбора списком элементов, которые имеют атрибут, соответствующий заданной переменной сеанса, однако результаты не загружаются

// Мой внешний php-файл, который получает кубки и связанные с ними команды, а также устанавливает переменную сеанса для кубков

<?php
session_start();

if (isset($_POST['submit'])) { //checking if submit button was clicked

  include_once 'dbcon.php';

  $cname = $_POST['cupname'];

  if (empty($cname)) {
      header("Location: tables.php?field=empty"); //return them if fields are empty
      exit();
  } else {
      $sql = "SELECT * FROM teams WHERE cup_name='$cname'";
      $show_teams = mysqli_query($conn, $sql);
      $numberCheck = mysqli_num_rows($show_teams);

      if ($numberCheck < 8) {
      header("Location: ../teams.php?team=5"); //Take to cup page if there arent enough teams in the cup
    }else {
      $_SESSION['c_cname'] = $cname;
      header("Location: ../tables.php?tables=1");
    }
  }
}
?>

// моя попытка загрузки результатов

    <select name="team-1" required>
    <option value='Holder' disabled selected>Team 1</option> <!--Placeholder for Select-->
      <?php
      $cupname = $_SESSION['c_cname'];

      if(isset($_SESSION['c_cname'])){
        $sql = "SELECT * FROM teams WHERE cup_name='$cupname'";
        $show_teams = mysqli_query($conn, $sql);
          echo "<option>$show_teams</option>";
      }
      ?>
    </select>

мне нужен список команд, связанных с загрузкой этого кубка, в мое поле выбора, я почти уверен, что мне нужно использовать оператор while, но не знаю, как его включить. Пример ценится

Ответы [ 2 ]

1 голос
/ 29 марта 2019

Вы зацикливаетесь сразу после получения результатов:

     $show_teams = mysqli_query($conn, $sql);
     while($row = mysqli_fetch_array($show_teams)) {
        echo "<option>$row['column_name, like team']</option>";
     }

Обязательно замените 'column_name, like team' на фактическое имя столбца, которое вы хотите отобразить.

ОБНОВЛЕНИЕ: на основе комментариев,сохранить параметры в переменной, которая может быть отражена в HTML:

<?php
    $cupname = $_SESSION['c_cname'];
    $team_options = ''; // setup variable to hold options

    if(isset($_SESSION['c_cname'])){
        $sql = "SELECT * FROM teams WHERE cup_name='$cupname'";
        $show_teams = mysqli_query($conn, $sql);
        while($row = mysqli_fetch_array($show_teams)) {
            // put the options in a variable
            $team_options .= "<option>$row['column_name, like team']</option>";
        }
    }

Теперь, позже в HTML:

<select name="team-1" required>
    <option value='Holder' disabled selected>Team 1</option> <!--Placeholder for Select-->
    <?php echo $team_options; ?>
</select>
1 голос
/ 29 марта 2019

Вы только выполняете запрос, вам нужно зациклить его, чтобы получить результаты из базы данных, используя mysqli_fetch_assoc () .

Мы не можем просто использовать набор результатов, так как это ресурс, а не массив.

Заменить:

$show_teams = mysqli_query($conn, $sql);
echo "<option>$show_teams</option>";

С:

while ($row = mysqli_fetch_assoc($show_teams)) {
 echo '<option value="' . $row['ID-COLUMN'] . '">'. $row['NAME-COLUMN'] . '</option>';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...