короче разбирайся сам... тут не скорая помощь человеку, который хочет чтото сделять не разбираясь самому, а только требует, чтобы его работу сделал ктото другой. Совесть надо иметь господин лентяй. ps:http://php.ru/forum/viewtopic.php?t=14763
круто! а причем тут совесть и пр. ну не шарю я в пхп, а сделать ужно, протыкался весь день с кодом, ничего так и не заработало как мне нужно, вот и прошу народ помочь, даже если и не бусплатно кто то скажет, без вопросов! а такие как вы сударь вечно портят тему своими заумными фразами и пр. выражениями! я не могу сейчас взять и выучить весь пхп и понять как он работает, мне нужно решение вопроса, и я об этом просто прошу, а не требую как вы упомянули!!! и если за работу нужно заплатить, то пожалуйста, было бы предложено, договориться всегда можно!!! так что не портите тему, плиз. несомненно, есть вещи в которых и вы не разбираетесь абсолютно, но это не запрещает вам нормально попросить объяснить вам или сделать скрипт для ваш и по вашей просьбе, а?!
посчитай сколько ты раз спроси чтото типа "черкните мне полный скрипт" и сколько раз тебе ответили чтото типа "вот чувак, НА... это именно то, что ты хотел, копируй в файл и все пашет, держи" - и подумай, если нет ответа, а ты все спрашиваешь, то не "портишь" ли ее ты... Покупать скрипт я тебя не заставляю. Если ты хочешь купить - на форуме есть для этого разделhttp://php.ru/forum/viewforum.php?f=4. Готовые решения можно найти в другом разделе http://php.ru/forum/viewforum.php?f=27, а в этом редко бывают так скажем "полнофункциональные подсказки"
Мне понравился вопрос, и я написал полный скрипт: quests.ini (можно писать практически неограниченное количество вопросов и вариантов ответа на них) Код (Text): ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Это файл конфигурации ; Используется файлом questionnaire.php ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Перечень вопросов; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Номер вопроса [1] quest_n=1 ; Вопрос content=Что такое PHP ; Варианты ответов re1=Скриптовый язык программирования re2=Компилируемый язык программирования re3=Язык разметки гипертекста re4=Моторная лодка re5=Метод силовой тренировки ; Значение v1=11 v2=12 v3=13 v4=14 v5=15 ;; Правильное значение valtrue=11 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; [2] quest_n=2 content=Что такое константа re1=Функция re2=Идентификатор простого значения re3=Тип переменной re4=Область видимости re5=Метод силовой тренировки v1=21 v2=22 v3=23 v4=24 v5=25 ;; Правильное значение valtrue=22 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; [3] quest_n=3 content=Что такое 3 re1=3 re2=4 re3=5 re4=6 re5=7 v1=31 v2=32 v3=33 v4=34 v5=35 ;; Правильное значение valtrue=31
questionnaire.php PHP: <?php session_start(); // кличество задаваемых вопросов $quest_set = 2; // страница куда перенаправить в случае правильных ответов $file_true = 'true.php'; // страница куда перенаправить в случае неправильных ответов $file_false = 'false.php'; $ini_file = 'quests.ini'; // заголовок HTML - страницы $header = <<< EOF <html> <head> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <title>Анкета</title> <style> ... </style> </head> <body> EOF; // если сессия только стартует if (!isset($_SESSION['quest_ini_arr'])) { // считываем файл с вопросами/ответами $ini_file_arr = parse_ini_file($ini_file, true); // извлекаем заданное число случайный ключей массива $ini_file_key = array_rand($ini_file_arr, $quest_set); // записываем в сессию правильные ответы foreach ($ini_file_key as $k=>$v) { $_SESSION['valtrue'][$v] = $ini_file_arr[$v]['valtrue']; } // перемешиваем массив для надежности shuffle($ini_file_key); // составляем новый массив вопросов/ответов for ($ik = 0; $ik < sizeof($ini_file_key); $ik++) { $new_ini_arr[$ik + 1] = $ini_file_arr[$ini_file_key[$ik]]; } // сериализируем новый массив вопросов/ответов, чтобы сохранить в сессию $_SESSION['quest_ini_arr'] = serialize($new_ini_arr); // инициализируем счетчик сессии $_SESSION['count'] = 1; } // "защита от накрутки" если юзер нажимает кнопку - "обновить" if (isset($_POST['hide'])) { if ($_SESSION['count'] - 1 == $_POST['hide']) { header("Location: {$_SERVER['SCRIPT_NAME']}"); exit; } // сохраняем результат ответа в сессию $_SESSION['answer'][$_SESSION['quest_n']] = $_POST['quest_' . $_SESSION['quest_n']]; // увеличиваем счетчик заданных вопросов $_SESSION['count']++; } // преобразуем массив вопросов/ответов в "нормальный вид" $quests_arr = unserialize($_SESSION['quest_ini_arr']); // если еще не все вопросы задали if ($_SESSION['count'] <= sizeof($quests_arr)) { echo '<form method="post"><br />' . "\n" . $quests_arr[$_SESSION['count']]['content'] . ' <select name="quest_' . $quests_arr[$_SESSION['count']]['quest_n'] . '"> ' . "\n"; // в цикле выводим все значения и варианты ответа for ($iq = 1; $iq <= (sizeof($quests_arr[$_SESSION['count']]) - 2) / 2; $iq++) { echo '<option value="' . $quests_arr[$_SESSION['count']]['v' . $iq] . '">' . $quests_arr[$_SESSION['count']]['re' . $iq] . '</option>' . "\n"; } echo '</select> <br /> <input type="hidden" name="hide" value="' . $_SESSION['count'] . '"> <input type="submit" value="Submit"> </form>'; // номер вопроса в ini файле $_SESSION['quest_n'] = $quests_arr[$_SESSION['count']]['quest_n']; } else { // проверяем результаты теста foreach ($_SESSION['answer'] as $ka=>$va) { if ($va != $_SESSION['valtrue'][$ka]) { // ответ неверный - редиректим на "левую" страницу header("Location: $file_false?" . SID); exit; } } // редиректим на страницу после правильных ответов header("Location: $file_true?" . SID); exit; } ?> </body> </html>
Ну вот а то Мама да Мама помните этот мультик только ответ я сделал так otvet1 = .............. otvet2 = ............. otvet4+ = ............ otvet5 = ................ И редактировать можна и не надо дополнительного кода так как для проверки используется всего лишь присутсвие символа "+"!!! Конфигурационный файл ini вдвое уменьшился бы.
Вообщем вот что я натестил: совстав моего файла questionnaire.php: PHP: <? session_start(); // кличество задаваемых вопросов $quest_set = 2; // страница куда перенаправить в случае правильных ответов $file_true = 'true.php'; // страница куда перенаправить в случае неправильных ответов $file_false = 'false.php'; $ini_file = 'quests.ini'; // заголовок HTML - страницы $header = <<< EOF <html> <head> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <title>Анкета</title> <style> ... </style> </head> <body> EOF; // если сессия только стартует if (!isset($_SESSION['quest_ini_arr'])) { // считываем файл с вопросами/ответами $ini_file_arr = parse_ini_file($ini_file, true); // извлекаем заданное число случайный ключей массива $ini_file_key = array_rand($ini_file_arr, $quest_set); // записываем в сессию правильные ответы foreach ($ini_file_key as $k=>$v) { $_SESSION['valtrue'][$v] = $ini_file_arr[$v]['valtrue']; } // перемешиваем массив для надежности shuffle($ini_file_key); // составляем новый массив вопросов/ответов for ($ik = 0; $ik < sizeof($ini_file_key); $ik++) { $new_ini_arr[$ik + 1] = $ini_file_arr[$ini_file_key[$ik]]; } // сериализируем новый массив вопросов/ответов, чтобы сохранить в сессию $_SESSION['quest_ini_arr'] = serialize($new_ini_arr); // инициализируем счетчик сессии $_SESSION['count'] = 1; } // "защита от накрутки" если юзер нажимает кнопку - "обновить" if (isset($_POST['hide'])) { if ($_SESSION['count'] - 1 == $_POST['hide']) { header("Location: {$_SERVER['SCRIPT_NAME']}"); exit; } // сохраняем результат ответа в сессию $_SESSION['answer'][$_SESSION['quest_n']] = $_POST['quest_' . $_SESSION['quest_n']]; // увеличиваем счетчик заданных вопросов $_SESSION['count']++; } // преобразуем массив вопросов/ответов в "нормальный вид" $quests_arr = unserialize($_SESSION['quest_ini_arr']); // если еще не все вопросы задали if ($_SESSION['count'] <= sizeof($quests_arr)) { echo '<form method="post"><br />' . "\n" . $quests_arr[$_SESSION['count']]['content'] . ' <select name="quest_' . $quests_arr[$_SESSION['count']]['quest_n'] . '"> ' . "\n"; // в цикле выводим все значения и варианты ответа for ($iq = 1; $iq <= (sizeof($quests_arr[$_SESSION['count']]) - 2) / 2; $iq++) { echo '<option value="' . $quests_arr[$_SESSION['count']]['v' . $iq] . '">' . $quests_arr[$_SESSION['count']]['re' . $iq] . '</option>' . "\n"; } echo '</select> <br /> <input type="hidden" name="hide" value="' . $_SESSION['count'] . '"> <input type="submit" value="Submit"> </form>'; // номер вопроса в ini файле $_SESSION['quest_n'] = $quests_arr[$_SESSION['count']]['quest_n']; } else { // проверяем результаты теста foreach ($_SESSION['answer'] as $ka=>$va) { if ($va != $_SESSION['valtrue'][$ka]) { // ответ неверный - редиректим на "левую" страницу header("Location: $file_false?" . SID); exit; } } // редиректим на страницу после правильных ответов header("Location: $file_true?" . SID); exit; } ?> </body> </html> состав моего файла quests.ini: Код (Text): ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Это файл конфигурации ; Используется файлом questionnaire.php ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Перечень вопросов; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Номер вопроса [1] quest_n=1 ; Вопрос content=Что такое PHP ; Варианты ответов re1=Скриптовый язык программирования re2=Компилируемый язык программирования re3=Язык разметки гипертекста re4=Моторная лодка re5=Метод силовой тренировки ; Значение v1=11 v2=12 v3=13 v4=14 v5=15 ;; Правильное значение valtrue=11 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; [2] quest_n=2 content=Что такое константа re1=Функция re2=Идентификатор простого значения re3=Тип переменной re4=Область видимости re5=Метод силовой тренировки v1=21 v2=22 v3=23 v4=24 v5=25 ;; Правильное значение valtrue=22 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; [3] quest_n=3 content=Что такое 3 re1=3 re2=4 re3=5 re4=6 re5=7 v1=31 v2=32 v3=33 v4=34 v5=35 ;; Правильное значение valtrue=31 вот что он мне пишет: Warning: Invalid argument supplied for foreach() in W:\home\localhost\www\questionnaire.php on line 94 Warning: Cannot modify header information - headers already sent by (output started at W:\home\localhost\www\questionnaire.php:94) in W:\home\localhost\www\questionnaire.php on line 102 почему так? и что нужно сделать? вроде все пробелы как раньше были такие проблемы, убрал, проверил все вроде ок, все точки и скобки наместе... подскажите куда ткнуться? СПС!
А вопще замарачиваешься такой хней...изредка меня даже удивляет существование людей не знающих что существует замечательные дяди из Гугля, которые давно ответили на все вопросы)) http://wmasn.com/scripts/php/272download_script15.html - и крути его как хочешь, дарю)