Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Занесение данных в массив
 
 автор: *m*   (08.06.2009 в 17:55)   письмо автору
 
 

Всем привет)

Есть опросник в нем 5 вопросов, в каждом вопросе 2-3 варианта ответа.
Нужно чтобы ответы пользователя сохранялись и выводились, вконце, перед результатом.

например: вы ответили на первый вопрос (1 вариант)
второй вопрос (3 вариант)
третий вопрос (2 вариант)
и т.д. ..


Делаю так:

<?
/*данные передаются постом через форму*/
// идет форма в форме кажому варианту ответа соответствует число 1, 2 и 3

/*Проверка в обработчике есть*/
if(isset($_POST['vopros1'])){$vopros1 = ($_POST['vopros1']);}
// и т.п.

/*Собсна проверяем переменную и присваеваем ей значание*/
switch ($vopros1)
{
 case 
"$vopros1 == 1":
$vopros1 "Вариант 1"
 break;
 
 case 
"$vopros1 == 2":
$vopros1 "Вариант 2"
 break;
 
 case 
"$vopros1 == 3":
$vopros1 "Вариант 3";
 break;
}

/*Вывожу результат*/
echo '$vopros1';
?>


Вместо вариантов выводиться название переменной:

$vopros1


Что не правильно, и как сделать?
тему не так назвал, сори)

  Ответить  
 
 автор: sim5   (08.06.2009 в 18:13)   письмо автору
 
   для: *m*   (08.06.2009 в 17:55)
 

>Что не правильно, и как сделать?

Не расставлять ненужных кавычек:
<?
$vopros1 
=  2;

switch (
$vopros1) { 
 case 
1$vopros1 "Вариант 1";  
 break; 
 case 
2$vopros1 "Вариант 2";  
 break; 
 case 
3$vopros1 "Вариант 3"


/*Вывожу результат*/ 
echo $vopros1;

  Ответить  
 
 автор: Trianon   (08.06.2009 в 18:18)   письмо автору
 
   для: sim5   (08.06.2009 в 18:13)
 

>>Что не правильно, и как сделать?
>Не расставлять ненужных кавычек:
и лишних выражений
<?
$vopros1 
=  2;

switch (
$vopros1) { 
 case 
1$vopros1 "Вариант 1";  
 break; 
 case 
2$vopros1 "Вариант 2";  
 break; 
 case 
3$vopros1 "Вариант 3"


/*Вывожу результат*/ 
echo $vopros1;

  Ответить  
 
 автор: sim5   (08.06.2009 в 18:21)   письмо автору
 
   для: Trianon   (08.06.2009 в 18:18)
 

Все, укол мимо - я имею привычку (иногда ;-)) проверять потом то, что написал, так как с русским проблемы имеются :) Заметил, что лишнее оставил, убрал :) Но все все равно, признателен ;-)

  Ответить  
 
 автор: nikita2206   (08.06.2009 в 18:19)   письмо автору
 
   для: sim5   (08.06.2009 в 18:13)
 

неожидал от вас)
так правильно:
<? 
$vopros1 
=  2

switch (
$vopros1) {  
 case 
1$vopros1 "Вариант 1";   
 break;  
 case 
2$vopros1 "Вариант 2";   
 break;  
 case 
3$vopros1 "Вариант 3";  
}  

/*Вывожу результат*/  
echo $vopros1;


а проще и вовсе так сделать:
<? 
$vopros1 
=  2
$vopros1 'Вариант '.$vopros1;
/*Вывожу результат*/  
echo $vopros1;

  Ответить  
 
 автор: sim5   (08.06.2009 в 18:24)   письмо автору
 
   для: nikita2206   (08.06.2009 в 18:19)
 

Экономично конечно, но я не о красивости, а об ошибке, а вы уж можете предлагать все, что угодно. Время есть, пожалуйста.

  Ответить  
 
 автор: *m*   (08.06.2009 в 18:29)   письмо автору
 
   для: sim5   (08.06.2009 в 18:13)
 

спасибо исправил, но не работет, никакой результат не возвращается, ничего не выводиться.

  Ответить  
 
 автор: sim5   (08.06.2009 в 18:47)   письмо автору
 
   для: *m*   (08.06.2009 в 18:29)
 

Ну это вы не правы. Либо у вас передается не то, чего вы проверяете, либо....

  Ответить  
 
 автор: *m*   (08.06.2009 в 19:20)   письмо автору
 
   для: sim5   (08.06.2009 в 18:47)
 

все перепроверил, собственно в форме 3 значения переменной vopros1 - 1, 2 и 3 ошибки быть не может в форме никакой..

переменная vopros1, точно существует, посколько конструкция if else идет:

<?
/*Если существует массив пост и в нем переменная $vopros1 то задаем второй вопрос*/

if(isset($_POST['vopros1'])){
 
/*Сюда я вставил конструкцию  switch case c вашими поправками*/
$vopros1 =  2

switch (
$vopros1) {  
 case 
1$vopros1 "Вариант 1";   
 break;  
 case 
2$vopros1 "Вариант 2";   
 break;  
 case 
3$vopros1 "Вариант 3";  

?>
// Далее идет форма со вторым вопросом
<?}

// и так далее 5 вопросов

//в конце вывожу переменные:

echo $vopros1;
echo 
$vopros2;
echo 
$vopros3;
echo 
$vopros4;
echo 
$vopros5;
?>

выводиться пустота..

  Ответить  
 
 автор: sim5   (08.06.2009 в 19:24)   письмо автору
 
   для: *m*   (08.06.2009 в 19:20)
 

Ну вы уберите $vopros1 = 2, это ведь для примера, а реально ей нужно присваивать значения из формы.

PS. Кстати, если ваш switch только ради того, чтобы вывести какой выбран вариант, но он таки совсем не нужен тогда.

  Ответить  
 
 автор: *m*   (08.06.2009 в 19:33)   письмо автору
 
   для: sim5   (08.06.2009 в 19:24)
 

$vopros1 = $vopros1 то есть так должно получиться?

что то я совсем запутался..

>PS. Кстати, если ваш switch только ради того, чтобы вывести какой выбран вариант, но он таки совсем не нужен тогда.

- почему?

ну я просто решил попробовть эту конструкцию, она вроде как поудобнее для выбора из нескольких вариантов..

  Ответить  
 
 автор: sim5   (08.06.2009 в 19:40)   письмо автору
 
   для: *m*   (08.06.2009 в 19:33)
 

Да ничем это не удобнее, и вот почему. Ваши вопросы, надо полагать, будут хранится в базе, а если и не в базе, то выгоднее держать их в массиве, а получить нужный элемент массива (при соответствующей структуре элементов формы) можно без всякого switch. Ну а, если вам он нужен, то ваши переменные можно так опрделять:
<?
$vopros1 
= isset($_POST['vopros1']) ? intval($_POST['vopros1']) : 0;
$vopros2 = isset($_POST['vopros2']) ? intval($_POST['vopros2']) : 0;
//и т.д..

  Ответить  
 
 автор: *m*   (08.06.2009 в 19:46)   письмо автору
 
   для: sim5   (08.06.2009 в 19:40)
 

насчет массивов вы опять таки правы, я об этом изначально и думал, заметили как называется тема)), потом вдруг решил попробовать эту конструкцию.

а если не сложно можете написать как бы вы сделали, с помощью массивов?
спасибо.

  Ответить  
 
 автор: sim5   (08.06.2009 в 19:52)   письмо автору
 
   для: *m*   (08.06.2009 в 19:46)
 

Я бы вообще никак не делал, так как крайне равнодушно отношусь к различным опросам, голосованиям, тестам и прочей лабуде. )
Коли у вас есть мануал, и ваши вопросы, варианты ответов и прочее, это действительно будут массивы, а не таблица базы данных, то внимательно посмотрите на функции работы с массивами. Я уверен, если вы ясно представляете всю иерархию своих вопросов, а так же то, как будете проверять ответы, плюс информацию для вывода результатов - вы без труда найдете среди этих функций вам нужное.
Попробуйте сперва сами решить эту задачу, так будет полезнее в первую очередь для вас.

  Ответить  
 
 автор: *m*   (08.06.2009 в 22:11)   письмо автору
 
   для: sim5   (08.06.2009 в 19:52)
 

если я правильно понимаю, то это должно выглядеть так:

получаем данные из формы, значение переменной заносим в массив.

$vopros1[ ] = "$vopros1";

но как быть с тем что значения переменной числовые, а нужно чтобы выводилась информация соответствующая числовым значениям?

  Ответить  
 
 автор: Trianon   (08.06.2009 в 22:18)   письмо автору
 
   для: *m*   (08.06.2009 в 22:11)
 

$list = array("alpha", "bravo", "charlie");
$num = 1;
echo $list[$num];

  Ответить  
 
 автор: *m*   (08.06.2009 в 22:38)   письмо автору
 
   для: Trianon   (08.06.2009 в 22:18)
 

так просто)))
перед тем как задать вопрос читал книгу php 5 на примерах.. просто не сообразил)

всем спасибо за помощь, удач)

  Ответить  
 
 автор: Trianon   (08.06.2009 в 22:42)   письмо автору
 
   для: *m*   (08.06.2009 в 22:38)
 

не с той книги начали.
Лучше бы читали Самоучитель

  Ответить  
 
 автор: *m*   (09.06.2009 в 12:02)   письмо автору
 
   для: Trianon   (08.06.2009 в 22:42)
 

ну для вас то вопрос может и пустяковый, а для тех кто только недавно начал изучение, может вызвать затруднение и банальная вещь.

  Ответить  
 
 автор: Trianon   (09.06.2009 в 12:10)   письмо автору
 
   для: *m*   (09.06.2009 в 12:02)
 

Так я поэтому и написал.
Книга "Самучитель PHP5" тех же авторов Вам будет на данном этапе куда полезнее.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования