Есть задача - блокировка возвращения на предидущую стр выполняемая Location.Replace и есть на форме страницы скрытые поля и радиокнопки.
Суть трабла: при переходе не через Submit, а напрямую через JS (т.е. через Location.Replace) "теряются" данные с полей и Value радиокнопок. с полями проблему решил выведя данные $_SESSION, а вот как быть с данными с Value радиокнопок?
Код |
<?php include "dbsettings.inc"; include "protect.inc"; if(isset($_GET["err"])) { if($_GET["err"]==1) {print "Вы не имеете прав для просмотра этой таблицы!";} }
$quer1="SELECT *FROM voprosotvet WHERE id=$massiv[$i]"; $resul1=mysql_query($quer1) or die("Err:quer1"); ?> <script LANGUAGE="JavaScript"> function exit() {
window.setTimeout("window.open('logout.php')",0) window.setTimeout("window.close()",0) } function main() {
window.setTimeout("window.open('main.php')",0) window.setTimeout("window.close()",0) } function V5() { location.replace("vopros_check.php"); //Location.Replace заставляет браузер "забыть" предидущую стр. Т.е. не дает вернуться к предидущему вопросу } </script> <style type="text/css"> BODY { background-color: dff4fa; /* Цвет фона веб-страницы */ } </style> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <title>Тестирование</title> <link href="style.css" rel="stylesheet" type="text/css"> </head> <body> <table width="690" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" class="main_border">
<!--Подключаем шапку сайта--> <? include("header.php"); ?> <tr> <td><table width="690" border="0" cellspacing="0" cellpadding="0"> <tr> <?php
?>
<?
if ($max==$i) { //вывод результатов display_result($T_vop,$F_vop,$massiv,$max,$i,$sUname,$vop_num); } if ($max>$i) { //вывод самого теста display_test($T_vop,$F_vop,$massiv,$max,$i,$sUname,$vop_num); }
function display_result($T_vop,$F_vop,$massiv,$max,$i,$sUname,$vop_num) { //вывод результатов echo "<form action=main.php method=POST> <td><table width=800 border=0 cellspacing=0 cellpadding=0>
<td><div id=coolmenu> <a href=javascript:main()> Выход в главное меню</a> </div></td> <td><div id=coolmenu> <a href=javascript:exit()> Выход</a> </div></td> </table></td> <table align=center width=800 border=0 cellspacing=0 cellpadding=0> <p align=center><strong>Результаты тестирования:</strong></p> <p align=center><strong>В ходе проверочного тестирования Вы совершили ошибок:</strong>$F_vop;</p> </table> </form>"; }
?> <?php //вывод теста function display_test($T_vop,$F_vop,$massiv,$max,$i,$sUname,$vop_num) { $quer1="SELECT *FROM voprosotvet WHERE id=$massiv[$i]"; $resul1=mysql_query($quer1) or die("Err:quer1");
while($row=mysql_fetch_array($resul1)) { echo "<form method=post name=formname1 action=vopros_check.php>
<table align=center width=800 border=0 cellspacing=0 cellpadding=0> <p><strong>ID:</strong> $massiv[$i] <strong>Попыток:</strong> $F_vop <strong>Вопросов отвечено правильно:</strong> $T_vop; <strong>Вопросов отвечено не правильно:</strong> $F_vop; <strong>Имя тестируемого:</strong> $sUname;</p>
<p align=center><strong>вопрос №: $vop_num </strong> <br> <label name=vopros rows=5 cols=70>$row[vopros]</p> <p align=center><strong>Выберете правильный ответ:</strong> <p align=center ><img border=1 src=Admin/DATA/images/$row[image_media_file]></p>
<table align=center width=780 border=0 cellspacing=6 cellpadding=0> <tr> <td width=370> <label name=otvet1 rows=2 cols=60>$row[otvet1]</td><td width=10><input type='radio' name='votvet' value=1 onClick=sm.disabled=false;> </td> <td width=370> <label name=otvet2 rows=2 cols=60>$row[otvet2]</td><td width=10><input type='radio' name='votvet' value=2 onClick=sm.disabled=false;> </td> </tr><tr> <td> <label name=otvet3 rows=2 cols=60>$row[otvet3]</td><td><input type='radio' name='votvet' value=3 onClick=sm.disabled=false;> </td> <td> <label name=otvet4 rows=2 cols=60>$row[otvet4]</td><td><input type='radio' name='votvet' value=4 onClick=sm.disabled=false;> </td> </tr><tr> <td> <label name=otvet5 rows=2 cols=60>$row[otvet5]</td><td><input type='radio' name='votvet' value=5 onClick=sm.disabled=false;> </td> <td> <label name=otvet6 rows=2 cols=60>$row[otvet6]</td><td><input type='radio' name='votvet' value=6 onClick=sm.disabled=false;> </td> </tr> </table> <br> <INPUT type=hidden value=$row[id] name=id> <INPUT type=text value=$row[true_otvet] name=true_otvet> <p align=center ><input type=button onclick=V5() value=NEXT id=sm disabled></p>
</form>"; //скрытое поле true_otvet - даннные из БД какой из ответов верный(номер) //ID - ID вопроса в БД //votvet - радиобаттноы. Value - номер у каждого свой. при проверке сверяется, =ли номер выбранного радиобаттона правильному ответу //file_help_name-название файла помощи к данному вопросу. При необходимости к нему идет обращение
$_SESSION['file_help_name'] = $row['file_help_name']; //вынос в сессию данных поля $_SESSION['true_otvet'] = $row['true_otvet']; //вынос в сессию данных поля
//по идее должнобыть чтото аналогичное $_SESSION для выноса в сессию данных Value радиобаттнонов. //Оно и нужно... Но я не знаю как... } }
?>
<!--Подключаем нижний графический элемент--> <? include ("footer.php"); ?> </table> </table> </body>
</html> |
Спустя 1 час, 30 минут, 44 секунды (15.05.2009 - 16:37) glock18 написал(а):
Если нужны данные из формы, это делается очень просто:
1. Форме выставляешь новый action (если надо). Что-то в этом духе:
Код |
document.forms.myform.action = newAction;
|
2. Сабмитишь форму (данные будут отправлены по этому адресу):
Код |
document.forms.myform.submit();
|
Надеюсь, поможет.