Через некоторое время беспорядок петли! - PullRequest
0 голосов
/ 19 июля 2010

Я потратил довольно много времени на создание функции и последние 15-20 минут пытался понять это.Мне нужна помощь!

Я выбираю несколько строк из базы данных и запускаю их в цикле while.

Они доступны в раскрывающемся меню.

<form method="POST" action="adminprocess.php">
  <fieldset>
    <p>
      <label class="left2">League:</label>
      <select name="league" class="combo">
      <?php 
        $q = $database->selectAllLeagues();
        while($row=mysql_fetch_assoc($q))
        {
          $theid = $row['id'];
          extract($row);
          ?>
          <option value="<? echo $theid; ?>"> 
            <? echo $format.'_'.$game.'_'.$name.'_Season '.$season;?> 
          </option>
          <?
        }
      ?>
      </select>
    </p>
    <p>
      <input type="hidden" name="replaceleague" />
      <input type="hidden" name="format" value="<? echo $format; ?>" />
      <input type="hidden" name="game" value="<? echo $game; ?>" />
      <input type="hidden" name="name" value="<? echo $name; ?>" />
      <input type="hidden" name="season" value="<? echo $season; ?>" />
      <input type='submit' class="button" value='Select league' />
    </p>
  </fieldset>
</form>

$ theid, кажется, работает нормально, в зависимости от того, какую строку я выбираю в выпадающем меню.Однако я не могу получить указанные ниже значения в скрытых входных данных, чтобы они проходили через правильные значения из строки, выбранной в раскрывающемся списке.

Кажется, что всегда проходят через 4 переменные из первой строки базы данных.

Так что, в основном, мне нужно выбрать правильный ряд и использовать эти данные.Что я делаю неправильно!!!Спасибо за чтение!

Ответы [ 2 ]

2 голосов
/ 19 июля 2010
  1. Ваши скрытые поля инициализируются вне цикла, поэтому они будут использовать значения, оставшиеся после последней итерации цикла while.(т.е. последняя извлеченная строка)

  2. Зачем вам вообще нужны скрытые поля?Когда вы отправляете форму, поле league будет содержать идентификатор строки, выбранной в раскрывающемся списке.Используя идентификатор, вы можете получить другие поля из базы данных при обработке формы.

2 голосов
/ 19 июля 2010

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

Но я предлагаю вместо использования таких скрытых элементов формы, вы отправляете свою форму с <option> со значением, которое выбирает пользователь, читаете значение (как в $_POST['league']) и извлекаете строку из вашей базы данных. с этим идентификатором и использовать его соответственно. (Возможно, вы захотите сохранить скрытый ввод replaceleague, если это требуется вашему приложению.)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...