Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Программирование на PHP

  Все выпуски  

RFpro.ru: Программирование на PHP


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

vladisslav
Статус: 6-й класс
Рейтинг: 1227
∙ повысить рейтинг »
amnick
Статус: Профессионал
Рейтинг: 1147
∙ повысить рейтинг »
Палян Александр Михайлович
Статус: 6-й класс
Рейтинг: 309
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Программирование / PHP

Номер выпуска:1212
Дата выхода:30.07.2010, 16:30
Администратор рассылки:Устинов С.Е., Профессионал
Подписчиков / экспертов:334 / 148
Вопросов / ответов:1 / 1
IRC-канал по теме:#php

Вопрос № 179588: Добрый день ув. эксперты. Есть страница простого анкетирования, она состоит из таблиц: 1 - вариантов вопросов - anketa_voprosi 2 - вариантов ответов с привязкой по полю vopros_id к базе возможных вопросов - anketa_otveti 3 - ответов...



Вопрос № 179588:

Добрый день ув. эксперты.

Есть страница простого анкетирования, она состоит из таблиц:
1 - вариантов вопросов - anketa_voprosi
2 - вариантов ответов с привязкой по полю vopros_id к базе возможных вопросов - anketa_otveti
3 - ответов пользователей где указаны соотв. кто когда какой ответ выбрал - anketa_logs

Варианты ответов на вопросы выходят динамически в виде чекбоксов + в конце к каждому вопросу добавляется поле текстареа для того чтоб юзер мог ввести произвольный ответ.
id ответов которые выбрал юзер с привязкой к id вопроса записать в базу логов получается, но вот никак не могу записать значение поля текстареа с привязкой к id вопроса (в базу записывает нуль вместо id вопроса).

У меня есть 2 мысли - 1ое это присвоить к каждому текстареа id равный id вопроса - тут все все получается (проверяю плагином к ФайрФоксу), но как передать обработчику формы все значения (я делаю это через ф-ю foreach ) и соотвествующий этому значению id всех з аполненных текстареа-полей? - через javascript?
Либо 2ая мысль - это "пока есть заполненный текстареа создавать переменную и присваивать ей этот самый id" и потом его записывать в базу.
- но пока не могу додуматься как это все сделать:(

Тоесть еще и проверять надо - есть ли какие либо символы в текстареа(с этим я еще не разбирался но если есть решение то - буду благодарен).

Вот код вывода анкеты:
$query_voprosi=mysql_query("SELECT * FROM anketa_voprosi WHERE `actual`=1"); //выбираем все с базы наименований вопросов
while ($query_voprosi_arr=mysql_fetch_array($query_voprosi)){ //пока есть вопросы - выводим их
print '<b><font color=blue>'.$query_voprosi_arr[vopros].'</font></b>';
print '<br>';
$query_otveti=mysql_query("SELECT * FROM anketa_otveti WHERE anketa_otveti.vopros_id=$query_voprosi_arr[id] AND `actual`=1"); //пока есть вопросы ищем на них варианты ответов
while ($query_otveti_arr=mysql_fetch_array($query_otveti)){ //пока есть варианты ответов на вопросы - выводим их
print '<input type="checkbox" name="vibor[]" id="'.$query_otveti_arr[id].'" value="'.$query_otveti_arr[id].'">';
print '<font color=#000033>'.$query_otveti_arr[otvet].'</font>';;
print '<br>';
}
// + выводим к каждому воросу дополнительный текстареа
print '<font color="#008080">Дополнительно</font>:<br>';
print '<textarea id="'.$query_voprosi_arr[id].'" name="txtarea[]" cols=50 rows=3></textarea>'; // пока есть вопросы - выводим доп. поле текстареа для доп.ответа
$vopros_id = $query_voprosi_arr[id];


Это код обработчика: (част ь кода пропущена)
if(isset($_POST['vibor']))
{
foreach($_POST['vibor'] as $vibor)
{

include "config.php";
mysql_query("INSERT INTO anketa_logs (`time`, `user_id`, `otvet_id`, `hr_pass`, `random`, `txtarea`, `active`) VALUES ('$time', '$user_id_arr[id]', '$vibor', '$_SESSION[random_code]', '$random', '0', '1')", $db_goodbye) or die ("Ошибка anketa_logs: " . mysql_error());

}
}

if(isset($_POST['txtarea']))
{
foreach($_POST['txtarea'] as $txtarea)
{

mysql_query("INSERT INTO anketa_logs (`time`, `user_id`, `vopros_id`, `hr_pass`, `random`, `txtarea`, `active`) VALUES ('$time', '$user_id_arr[id]', 'что здесь указать???, '$_SESSION[random_code]', '$random', '$txtarea', '1')", $db_goodbye) or die ("Ошибочка: &qu ot; . mysql_error());


Надеюсь не запутал Вас :)
PS: и если есть какието замечания по самому коду - напишите пжл может как то можно оптимизировать.
Заранее Благодарен Вам!

Отправлен: 25.07.2010, 16:17
Вопрос задал: skatet, Посетитель
Всего ответов: 1
Страница вопроса »


Отвечает Саня Лазарев, 1-й класс :
Здравствуйте, skatet.

Вот моё решение. Я его не проверял но я надеюсь ход мыслей понятен! Просто обзываем textarea+id. А потом проверяем существует ли такая переменная, если да то записываем!

Приложение:
\'; // пока есть вопросы - выводим доп. поле текстареа для доп.ответа Изменения кода обработчика: $query_voprosi=mysql_query("SELECT * FROM anketa_voprosi WHERE `actual`=1"); //выбираем все с базы наименований вопросов while ($query_voprosi_arr=mysql_fetch_array($query_voprosi)){ //пока есть вопросы $name ="txtarea".$query_voprosi_arr[id]; if (isset($_POST[$name])) mysql_query("INSERT INTO anketa_logs (`time`, `user_id`, `vopros_id`, `hr_pass`, `random`, `txtarea`, `active`) VALUES (\'$time\', \'$user_id_arr[id]\', \'".$query_voprosi_arr[id]."\', \'$_SESSION[random_code]\', \'$random\', \'".$_POST[$name]."\', \'1\')", $db_goodbye) or die ("Ошибочка: " . mysql_error()); }

Ответ отправил: Саня Лазарев, 1-й класс
Ответ отправлен: 26.07.2010, 18:04
Номер ответа: 262663

Оценка ответа: 5

Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 262663 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:

  • Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2010, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2010.6.16 от 26.05.2010

    В избранное