#php #mysql #html
#php #mysql #HTML
Вопрос:
Я пытаюсь создать небольшой опрос, который заполняет варианты выбора для выпадающего меню из списка имен из базы данных. Опрос выполняет это должным образом. Я хочу отправить предложение, которое пользователь отправляет с этим именем, в базу данных предложений. Текст цитаты, который они вводят в поле, поступает правильно, однако имя, выбранное из меню, не передается. Вместо этого я получаю пустое поле имени.
Я понимаю, что часть моего кода вырвана из контекста, но имя — это единственное, что не передается должным образом.
При отправке формы я включаю php-файл, который отправляет эти данные в базу данных:
<form action="<?php $name = $_POST['name']; include "formsubmit.php";?>" method="post">
<label> <br />What did they say?: <br />
<textarea name="quotetext" rows="10" cols="26"></textarea></label>
<input type="submit" value="Submit!" />
</form>
Переменная $name берется из этого (которая заполняет мое выпадающее меню):
echo "<select name='name'>";
while ($temp = mysql_fetch_assoc($query)) {
echo "<option>".htmlspecialchars($temp['name'])."</option>";
}
echo "</select>";
И вот мой formsubmit.php:
<?php:
mysql_select_db('quotes');
if (isset($_POST['quotetext'])) {
$quotetext = $_POST['quotetext'];
$ident = 'yankees';
$sql = "INSERT INTO quote SET
quotetext='$quotetext',
nametext='$name',
ident='$ident',
quotedate=CURDATE()";
header("Location: quotes.php");
if (@mysql_query($sql)) {
} else {
echo '<p> Error adding quote: ' .
mysql_error() . '</p>';
}
}
?>
Комментарии:
1. к чему преобразуется действие формы при рендеринге HTML-кода?
2. что вы включаете в действие тега формы?
3. @G molvi: Я включаю свой formsubmit.php который я хочу выполнить при отправке формы. Кажется, это происходит правильно, за исключением того, что name вообще не передается.
4. смотрите код ниже, и вы не получали значение name из массива $ _POST. проверьте ниже мой ответ.
5. вам действительно не обязательно включать весь php-файл в тег form action, если вы хотите оставаться на этой странице после отправки страницы, тогда включите php-код в начало того же файла и оставьте действие = »
Ответ №1:
Ваши действия с формой выглядят странно, но, несмотря на это, я думаю, что проблема, с которой вы столкнулись, связана с тем, что вы не устанавливаете $ name = $ _POST[‘name’], как вы делаете с $ quotetext = $ _POST [‘quotetext’]. Сделайте это перед инструкцией sql, и все должно быть готово.
редактировать чтобы попытаться помочь вам в дальнейшем, я укажу, какой должна быть общая структура вашего кода, и вам следует настроить ее в соответствии с вашим реальным кодом (что бы вы ни упустили, например, установив $query для ваших параметров name):
файл 1:
<form action="formsubmit.php" method="post">
<label> <br />What did they say?: <br />
<textarea name="quotetext" rows="10" cols="26"></textarea></label>
<select name='name'>
<?php
while ($temp = mysql_fetch_assoc($query)) {
echo "<option>".htmlspecialchars($temp['name'])."</option>";
}
?>
</select>
<input type="submit" value="Submit!" />
</form>
formsubmit.php:
<?php
mysql_select_db('quotes');
if (isset($_POST['quotetext'])) {
$quotetext = $_POST['quotetext'];
$name = $_POST['name'];
$ident = 'yankees';
$sql = "INSERT INTO quote SET
quotetext='$quotetext',
nametext='$name',
ident='$ident',
quotedate=CURDATE()";
if (@mysql_query($sql)) {
header("Location: quotes.php");
} else {
echo '<p> Error adding quote: ' .
mysql_error() . '</p>';
}
}
?>
Комментарии:
1. ваша форма action = «» должна быть установлена в файл, в который она будет отправляться, в данном случае это должно быть form action =»formsubmit.php «. Переместите $name = $_POST[‘name’] в строку ниже, где вы устанавливаете $quotetext и тестируете.
2. Я думаю, что эта проблема сводится к отсутствию правильной структуры кода для отправки формы на страницу php. Посмотрите мои правки, надеюсь, они помогут прояснить, что вы должны здесь делать. Проблема с именем ЗАКЛЮЧАЕТСЯ в том, что оно не задается в вашем formsubmit.php , таким образом, тот факт, что предыдущее исправление не сработало, говорит о том, что ваша структура кода немного не в порядке.
Ответ №2:
echo "<select name='name'>";
while ($temp = mysql_fetch_assoc($query)) {
$nyme = htmlspecialchars($temp['name']);
echo "<option value='$nyme'>$nyme</option>";
}
echo "</select>";-
Таким образом, вы получите значение имени в массиве $_POST
и вам также нужно получить это значение из массива $ _POST, вам также нужно изменить код, добавив следующую строку, чтобы получить имя в вашем скрипте.
$name = $_POST['name'];
вам нужно изменить тег действия формы
<form action='formsubmit.php' .....>
и в этом файле после успешной вставки вы можете перенаправить пользователя на whereever.php.
итак, было забавно объяснять вам каждую вещь понемногу, измените это сейчас и в вашем коде.
if (@mysql_query($sql)) {
header("Location: quotes.php");
} else {
echo '<p> Error adding quote: ' .
mysql_error() . '</p>';
}
Комментарии:
1. я исправил код, попробуйте сейчас. и что вы включаете в тег действия формы?
2. @G molvi: Что такое «nyme»? Кроме того, я попробовал это … По-прежнему ничего.
3. @G molvi: Хорошо, итак, я попробовал следующее. Теперь мое действие: <form action =»formsubmit.php «метод=»post»> и в верхней части formsubmit.php У меня есть: $name = $ _POST[‘name’]; Но теперь в мою базу данных абсолютно ничего не поступает.
4. это потому, что вы перенаправляете пользователя на страницу перед выполнением инструкции sql. я обновил код .. попробуйте сейчас
5. @G molvi хороший улов в заголовке перед mysql_query, даже не заметил этого