Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Передача набора данных с помощью формы в MySQL

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Создание веб-сайтов
Предыдущая тема :: Следующая тема  
Автор Сообщение
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);




Ну если нехочется возиться , то можно просто в лоб Smile)
Для трёх полей например, для 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, а значит, может получиться что угодно...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Создание веб-сайтов Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...