Использование PHP MySQL для получения данных для формы, но есть проблемы в $ _POST - PullRequest
0 голосов
/ 28 января 2012

Хорошо, я уверен, что упускаю что-то простое, но я заполняю скрытое поле в форме данными из оператора MySQL While.данные отображаются правильно, когда на странице, но при отправке, отправленные данные всегда с последнего загруженного идентификатора.

while ($row = mysql_fetch_assoc($result)) {
    $id = $row['id'];
    echo '<form name="voting" action="thanks_for_voting.php" method="POST">
    <align="right"><input type="hidden" name="id" value="'.$id.'"
    <br><input type="submit" value="VOTE FOR '.$id.'"><br>';
}

Что я делаю не так?Я пытаюсь сохранить один вызов к моей БД, чтобы предотвратить перегрузку, я предполагаю, что должен быть простой способ достичь моей цели?Но что?

Machineadict решил мою проблему ниже, заметив, что я не закрывал свою форму.Я закрыл его, и проблема была решена.Спасибо!

Ответы [ 3 ]

2 голосов
/ 28 января 2012

Тег формы не закрыт. Потерять HTML-теги, они вам не нужны. И можно использовать формы в циклах, вам не нужно менять имена входов.

1 голос
/ 28 января 2012

Как уже упоминал machineaddict, если вы хотите использовать несколько форм, вы должны закрыть тег предыдущей, прежде чем открывать следующую.

Вы также можете сделать это с одной формой с одним скрытым полем, присваивая ей конкретное значение в зависимости от того, какая кнопка нажата:

echo '<html><form name="voting" action="thanks_for_voting.php" method="POST"><align="right">';
echo '<input type="hidden" name="id" value="-1">';
while ($row = mysql_fetch_assoc($result)) {
  $id = $row['id'];
  echo '<input type="button" value="VOTE FOR '.$id.'" onclick="javascript:document.forms[\'voting\'].elements[\'id\'].value='.$id.'; document.forms[\'voting\'].submit();">';
}
echo '</form></html>';

Здесь у вас есть кнопка для каждого из идентификаторов из базы данных. Каждая кнопка выполняет следующий код JavaScript в своем обработчике onclick:

document.forms['voting'].elements['id'].value = YOUR_ID;
document.forms['voting'].submit();

Устанавливает идентификатор на желаемое значение, а затем отправляет форму. Вы можете отложить этот код в функцию и поместить имя функции в обработчик onclick.

Кроме того, вы, вероятно, не хотите создавать несколько тегов <html>.

0 голосов
/ 28 января 2012

Ваш <form> находится внутри цикла while. И, как говорит Адам Зальцман, используйте уникальное имя.

Попробуйте

echo '<html><form name="myform" action="thanks_for_voting.php" method="POST"><align="right">';
while ($row = mysql_fetch_assoc($result)) {
  $id = $row['id'];
  echo '<input type="hidden" name="id[]" value="'.$id.'"><br><input type="submit" value="VOTE FOR '.$id.'">';
}
echo '<br></html>';}

Будет опубликован массив значений, который вы можете получить как $_POST['id'][0], $_POST['id'][1] и т. Д.

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