Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Запись в БД по циклу.

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Нужно записать в БД много строк разного содержания.
Kosteg
Отправлено: 13 Мая, 2008 - 13:48:06
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Март 2008  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2.  $i=1;
  3.         while ($i<=$kol):
  4.         echo "$i: "."<input type=text size=100 name=Q$i>".
  5.         "<p>".
  6.         "Ответ: $i.1 <input type=text size=10 name=O$i"."1".">
  7.         Ответ: $i.2 <input type=text size=10 name=O$i"."2".">
  8.         Ответ: $i.3 <input type=text size=10 name=O$i"."3".">
  9.         Ответ: $i.4 <input type=text size=10 name=O$i"."4".">"
  10.          ."</p>
  11.         Правильный ответ:
  12.         $i.1 <input type=radio name=tru$i"."1"." value=1>
  13.         $i.2 <input type=radio name=tru$i"."2"." value=2>
  14.         $i.3 <input type=radio name=tru$i"."3"." value=3>
  15.         $i.4 <input type=radio name=tru$i"."4"." value=4>
  16.         <hr width=80%>";
  17.                 $i++;
  18.                 endwhile;
  19.  

Этот скрипт генерирует $kol число форм, на которых: поле ввода вопроса, 4 поля для ответов, а также 4 радио буттон.
Результат такой:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. <form method="post" action="vopr_add.php">
  3.         1: <input type=text size=100 name=Q1><p>
  4.          Ответ: 1.1 <input type=text size=10 name=O11>
  5.          Ответ: 1.2 <input type=text size=10 name=O12>
  6.          Ответ: 1.3 <input type=text size=10 name=O13>
  7.          Ответ: 1.4 <input type=text size=10 name=O14></p>
  8.          Правильный ответ:
  9.          1.1 <input type=radio name=tru11 value=1>
  10.          1.2 <input type=radio name=tru12 value=2>
  11.          1.3 <input type=radio name=tru13 value=3>
  12.          1.4 <input type=radio name=tru14 value=4>
  13.          <hr width=80%>
  14.          2: <input type=text size=100 name=Q2><p>Ответ:
  15.          2.1 <input type=text size=10 name=O21>
  16.          Ответ: 2.2 <input type=text size=10 name=O22>
  17.          Ответ: 2.3 <input type=text size=10 name=O23>
  18.          Ответ: 2.4 <input type=text size=10 name=O24></p>
  19. З.Ы. Продолжение в следующем посте, т.к. урезали из-за длины =)
  20. [i](Добавление)[/i]
  21. Правильный ответ:
  22.          2.1 <input type=radio name=tru21 value=1>
  23.          2.2 <input type=radio name=tru22 value=2>
  24.          2.3 <input type=radio name=tru23 value=3>
  25.          2.4 <input type=radio name=tru24 value=4>
  26.          <hr width=80%>
  27.          3: <input type=text size=100 name=Q3><p>
  28.          Ответ: 3.1 <input type=text size=10 name=O31>
  29.          Ответ: 3.2 <input type=text size=10 name=O32>
  30.          Ответ: 3.3 <input type=text size=10 name=O33>
  31.          Ответ: 3.4 <input type=text size=10 name=O34></p>
  32.          Правильный ответ:
  33.          3.1 <input type=radio name=tru31 value=1>
  34.          3.2 <input type=radio name=tru32 value=2>
  35.          3.3 <input type=radio name=tru33 value=3>
  36.          3.4 <input type=radio name=tru34 value=4>
  37.          <hr width=80%>
  38.  

Дальше по нажатию на кнопку, данные из полей передаются на следующую страницу, где скрипт должен записывать их в БД.
Вот собственно и проблема - как сделать цикл запросов, что бы он правильно записывал результаты в базу. А то когда в VALUE указываешь ($Q), то ругается на неизвестную переменную. Пробовал писать ('"$Q"."$kol"'). Таже история. Он походу видит $Q, а такого значения после выполнения скрипта уже нет - в форме появились новые имена: Q1,Q2,Q3; O11,O12,O13,O14...O34; tru11, tru12...tru34.
Пришлось реализовать другой скрипт - добавление по 1му вопросу, но это утомляет - заполнать, и постоянно щелкать на кнопки.
И еще один вопрос. Как завязать переменные O11...O14 со значениями радиобуттона tru11...tru14. То есть, O11...O14 это варианты ответа, они заполняются; потом пользователю нужно выбрать один из 4х радиобуттонов - тем самым он отмечает номер правильного ответа. После выполнения скрипта, в базу должны заноситься варианты ответа и напротив правильного должна стоять "1", а у других "0". Что то типа:

id_otv|otvet|result|vopros
------------------------------
1 |Отв1| 0 | Вопр1
2 |Отв2| 0 | Вопр1
3 |Отв3| 1 | Вопр1
4 |Отв3| 0 | Вопр1
 
 Top
RomAndry Администратор
Отправлено: 14 Мая, 2008 - 11:17:06
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 913
Дата рег-ции: Янв. 2008  


Помог: 6 раз(а)




1. Старайтесь заключать атрибуты в кавычки
<input type='text' name='name' id='id'>
2. В Вашем случае лучше использовать массив
. "<input type='text' size='10' name='O[" . $i . "]'>" .
и потом спокойно обрабатывать его в цикле
 
My status
 Top
Kosteg
Отправлено: 15 Мая, 2008 - 00:35:08
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Март 2008  


Помог: 0 раз(а)




А как передать эти данные в запрос? Я пытаюсь сделать вот так:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?...
  3. $query="INSERT INTO vopros" . "(vopros, name_test) VALUES ('$Q[" . $i . "]','$test_name')";
  4. ...?>
  5.  

Выдает ошибку.

Если я просто пытаюсь вывести эти переменные с помощью цикла:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. while ($i<=$kolvo) :
  4.           echo $Q[$i];
  5.           $i++;
  6.           endwhile;
  7. ?>

то он выводит их нормально. А вот как в сам запрос вписать?
Я походу не так понял? Объясните пожалуста.

(Отредактировано автором: 15 Мая, 2008 - 00:54:33)

 
 Top
RomAndry Администратор
Отправлено: 15 Мая, 2008 - 08:30:08
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 913
Дата рег-ции: Янв. 2008  


Помог: 6 раз(а)




что бы один раз понять, достаточно сделать print_r($_POST) и посмотреть что приходит в массиве (ключ-значение)
 
My status
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB