Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Dinis
Зарегистрирован: 30.07.2005 Сообщения: 2
|
Добавлено: Сб Июл 30 2005 22:24 Заголовок сообщения: Передача набора данных с помощью формы в MySQL |
|
|
пытаюсь отправить с помощью формы результаты опроса (анкета) в базу данных MySQL. В форме - 50 элементов. Соответственно в базе данных - 50 полей. Называются одинаково.
В доступных мне книгах и примерах по PHP разбирается вариант с одним полем. Он у меня получается: в таблицу с одним полем вставляю данные из формы с одним элементом без проблем.
<form action=handler.php method=post>
<textarea name="q1" cols="60" wrap="PHYSICAL" id="textarea"></textarea>
<input type="submit" name="ok">
</form>
затем обработчик:
$query = "INSERT INTO anketa VALUES ('".$_POST['q1']."')";
Данные одного поля вставляются.
Но мне надо сразу 50!
Пытался сделать по-разному. Например:
$query = "INSERT INTO anketa VALUES ('".$_POST['q1'] ['q2'] ['q3']['q4']..."')";
То SQL кричит об ошибке, то ошибка php.
Читаю литературу, но где-то чего-то не понимаю. А осоветоваться не с кем. Подскажите: чем можно делу помочь. |
|
Вернуться к началу |
|
|
Anvano
Зарегистрирован: 24.03.2005 Сообщения: 58
|
Добавлено: Вс Июл 31 2005 14:23 Заголовок сообщения: |
|
|
Обработчик:
Код: |
$fields_count =50; // Количество полей в форме
// Получаем значания полй формы и формируем запрос
$query = "INSERT INTO anketa VALUES(";
for ( $i=1; $i<=$fields_count; $i++)
{
$query = $query."'".mysql_escape_string($_REQUEST["q$i"])."'";
}
$query = $query.")";
mysql_db_query($db_name, $query);
|
Ну если нехочется возиться , то можно просто в лоб )
Для трёх полей например, для 50 аналогично
Код: |
$q1 = mysql_escape_string($_REQUEST['q1']);
$q2 = mysql_escape_string($_REQUEST['q2']);
$q3 = mysql_escape_string($_REQUEST['q3']);
$query = "INSERT INTO anketa VALUES('$q1','$q2','$q3')"; // Продолжить до нужного количества полей
mysql_db_query($db_name, $query);
|
|
|
Вернуться к началу |
|
|
Dinis
Зарегистрирован: 30.07.2005 Сообщения: 2
|
Добавлено: Пн Авг 01 2005 00:43 Заголовок сообщения: |
|
|
Огромное спасибо.
Сделал вот так:
$query = "INSERT INTO anketa VALUES ('$_POST[q1]','$_POST[q2]','$_POST[q3]','$_POST[q4]','$_POST[q5]',...,'$_POST[q50]')";
Заработало! |
|
Вернуться к началу |
|
|
Anvano
Зарегистрирован: 24.03.2005 Сообщения: 58
|
Добавлено: Пн Авг 01 2005 09:29 Заголовок сообщения: |
|
|
Dinis писал(а): | Огромное спасибо.
Сделал вот так:
$query = "INSERT INTO anketa VALUES ('$_POST[q1]','$_POST[q2]','$_POST[q3]','$_POST[q4]','$_POST[q5]',...,'$_POST[q50]')";
Заработало! |
Ну перед передачей в базу надо всё таки
mysql_escape_string делать, хотя бы простенький способ обезопаситься от SQL иньекции ... |
|
Вернуться к началу |
|
|
dipsy
Зарегистрирован: 26.01.2005 Сообщения: 424 Откуда: Н. Новгород
|
Добавлено: Чт Июл 06 2006 12:23 Заголовок сообщения: |
|
|
Anvano писал(а): | Код: |
$q1 = mysql_escape_string($_REQUEST['q1']);
|
|
A как работает $_REQUEST ?
пишут, что $_REQUEST получает значение переменных $_POST, $_GET, $_COOKIE, только все сразу.
Вопрос, - что будет, если названия совпадут?
$_POST["q1"] и $_GET["q1"] будут иметь различные значения
что будет содержаться в массиве $_REQUEST ? |
|
Вернуться к началу |
|
|
dipsy
Зарегистрирован: 26.01.2005 Сообщения: 424 Откуда: Н. Новгород
|
Добавлено: Пт Июл 07 2006 00:11 Заголовок сообщения: |
|
|
Slivlen писал(а): | Опытным путем установлено, что $_REQUEST будет иметь значение, которое передано через post. |
Надесь, это вы не ради меня экспериментировали... а-то совесть мучать будет. типа сам поленился... а другого заставил.
Slivlen писал(а): | А вообще ИМХО на это не стоит полагаться, т.к. это поведение вполне может меняться от версии к версии. |
вот-вот... мне тоже показалось странным, т.к. это жёстко не описано на php.net, а значит, может получиться что угодно... |
|
Вернуться к началу |
|
|
|