За последние 24 часа нас посетили 52836 программистов и 1768 роботов. Сейчас ищут 959 программистов ...

Как сохранить значения радиокнопки при постраничном выводе?

Тема в разделе "PHP и базы данных", создана пользователем SiUna, 6 апр 2012.

  1. SiUna

    SiUna Активный пользователь

    С нами с:
    1 апр 2012
    Сообщения:
    41
    Симпатии:
    0
    Здравствуйте. Такой вопрос, как сделать чтобы выбранные пользователем радиокнопки сохранялись?
    Код (Text):
    1.  
    2. echo "<form name='form' method='get'>";
    3. for ($i=1; $i<$n+1; $i++)
    4.          {
    5.            $sql_data = mysql_fetch_array($row1);
    6.            $ch1 = array($choice,$i);
    7.            $ch = implode($ch1);
    8.     //       echo $ch;
    9.            print "Вопрос № ".$record.": </b>";
    10.            echo $sql_data['question']."<br />";
    11.            echo "<input name='".$ch."' type='radio' value='".$sql_data['r_answer']."'>";
    12.            print "1) ".$sql_data['r_answer']."<br />";
    13.            echo "<input name='".$ch."' type='radio' value='".$sql_data['w_answer1']."'>";
    14.            print "2) ".$sql_data['w_answer1']."<br />";
    15.            echo "<input name='".$ch."' type='radio' value='".$sql_data['w_answer2']."'>";
    16.            print "3) ".$sql_data['w_answer2']."<br />";
    17.            echo "<input name='".$ch."' type='radio' value='".$sql_data['w_answer3']."'>";
    18.            print "4) ".$sql_data['w_answer3']."<br />";
    19.            echo "<input name='".$ch."' type='radio' value='".$sql_data['w_answer4']."'>";
    20.            print "5) ".$sql_data['w_answer4']."<br /><br />";
    21.            $record=$record+1;
    22.       /*   echo "<input type='submit' value='Далее' name='ok'></br>";*/
    23.          }
    24.  echo '</form>';
    25. // если страница не первая, выводим ссылку "Назад"
    26. echo "<table align='center'><tr><td>";
    27. if ($page > 0) {
    28. $p = $page-1;
    29. echo "<a href=test.php?page=$p><-Назад</a></td>";
    30. }
    31. $page++; // увеличиваем страницу
    32. // выводим ссылку на следующие пять записей (на след. страницу),
    33. // если она есть, то есть число записей, которые нужно вывести, и
    34. // смещение не превышают общего числа записей
    35. if ($records+$N < $rec) {
    36.  echo "<td><a href=test.php?page=$page>Далее-></a></td></tr>";
    37. }
    38. echo "</table>";
    Часть кода где радиокнопки. У меня постраничный вывод, ходя по страницам формы обнуляются, а как сохранить и показывать выбранные пользователем радиокнопки?
     
  2. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Re: Как сохранить значения радиокнопки при постраничном выво

    А радиокнопок много?
    Может сессии?
     
  3. SiUna

    SiUna Активный пользователь

    С нами с:
    1 апр 2012
    Сообщения:
    41
    Симпатии:
    0
    Re: Как сохранить значения радиокнопки при постраничном выво

    Радиокнопок всегда 4-5 штук на каждый вопрос, а вопросов в базе будет столько сколько преподаватель сделает. Это тест для студентов. Весь комплекс делаю на Joomla. Никогда не сталкивалась с сессиями, попробую поискать.
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    только с помощью javascript. например так:
    Код (PHP):
    1. <?php
    2.  
    3. $myradio = isset($_GET['myradio']) ? $_GET['myradio'] : 'A';
    4. $p = isset($_GET['p']) ? $_GET['p'] : '1';
    5. $self_url = $_SERVER['PHP_SELF'];
    6.  
    7. ?>
    8. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    9. <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-en" xml:lang="en-en">
    10. <head>
    11. <title>Radio button trick</title>
    12. <script type="text/javascript">
    13. function go(page)
    14. {
    15.     form = document.getElementById('myform');
    16.     form['p'].value = page;
    17.     form.submit();
    18.     return false;
    19. }
    20. </script>
    21. </head>
    22. <body>
    23. <form id="myform" action="<?php echo $self_url ?>" method="get">
    24.     <input type="hidden" name="p" value="<?php echo $self_url ?>" />
    25.     <p>
    26.         <label><input type="radio" name="myradio" value="A" <?php if ($myradio == 'A') echo ' checked="checked"' ?>/>Option A</label><br />
    27.         <label><input type="radio" name="myradio" value="B" <?php if ($myradio == 'B') echo ' checked="checked"' ?>/>Option B</label><br />
    28.         <label><input type="radio" name="myradio" value="C" <?php if ($myradio == 'C') echo ' checked="checked"' ?>/>Option C</label><br />
    29.     </p>
    30.     <p>This is page #<?php echo $p ?></p>
    31.     <p>Pages: 
    32. <?php
    33.  
    34. for ($i = 1; $i <= 10; ++$i) {
    35.     if ($i == $p)
    36.         echo "\t\t<strong>{$i}</strong> ";
    37.     else
    38.         echo "\t\t<a href=\"#\" onclick=\"return go({$i})\">{$i}</a> ";
    39. }
    40.  
    41. ?>
    42. </p>
    43. </form>
    44. </body>
    45. </html>
    при клике на ссылку нужный номер страницы записывается в hidden поле формы, затем происходит отсылка формы.

    еще можно, наверное, вместо ссылок разместить кнопки формы, замаскировать их под ссылки с помощью CSS, тогда можно обойтись без js
     
  5. SiUna

    SiUna Активный пользователь

    С нами с:
    1 апр 2012
    Сообщения:
    41
    Симпатии:
    0
    Re: Как сохранить значения радиокнопки при постраничном выво

    Это все хорошо, но тут одни радиокнопки на все страницы, а у меня на каждой странице свой набор радиокнопок. Я попробую спасибо большое)

    А с сессиями не выйдет скорее всего, joomla не позволяет мне передавать что-либо через url.
     
  6. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Re: Как сохранить значения радиокнопки при постраничном выво

    По моему ты что-то путаешь :)
    Причем тут сессии и передавать что-либо через url.

    Посмотри здесь php.net/manual/ru/features.sessions.php

    В джумле для сессий есть класс по моему так JFactory::getSession()
     
  7. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    чуть измененный вариант c javascript: форма посылается методом POST, а номер страницы задается в её action.
    добавил кнопку Submit. нельзя же посылать данные только переходами по страницам ))) должен быть и нормальный способ
    Код (PHP):
    1. <?php
    2.  
    3. $myradio = isset($_POST['myradio']) ? $_POST['myradio'] : 'A';
    4. $p = isset($_GET['p']) ? $_GET['p'] : '1';
    5. $self_url = $_SERVER['PHP_SELF'];
    6.  
    7. ?>
    8. <!DOCTYPE html>
    9. <html>
    10. <head>
    11. <title>Radio button trick</title>
    12. <script type="text/javascript">
    13. function go(ev)
    14. {
    15.     var ref = ev.href
    16.     var pageNum = ref.substring(ref.indexOf('?p=') + 3)
    17.     var form = document.getElementById('myform')
    18.     form.action = '<?php echo $self_url ?>?p=' + pageNum
    19.     form.submit()
    20.     return false
    21. }
    22. </script>
    23. </head>
    24. <body>
    25. <h2>This is page #<?php echo $p ?></h2>
    26. <form id="myform" action="<?php echo $self_url ?>?p=<?php echo $p ?>" method="post">
    27. <fieldset>
    28.     <p>
    29.         <label><input type="radio" name="myradio" value="A" <?php if ($myradio == 'A') echo ' checked="checked"' ?>/>Option A</label><br />
    30.         <label><input type="radio" name="myradio" value="B" <?php if ($myradio == 'B') echo ' checked="checked"' ?>/>Option B</label><br />
    31.         <label><input type="radio" name="myradio" value="C" <?php if ($myradio == 'C') echo ' checked="checked"' ?>/>Option C</label><br />
    32.     </p>
    33.     <p><input type="submit" value="Submit" />
    34. </fieldset>
    35.     <p>Pages: 
    36. <?php
    37.  
    38. for ($i = 1; $i <= 10; ++$i) {
    39.     if ($i == $p)
    40.         echo "\t\t<strong>{$i}</strong>\n";
    41.     else
    42.         echo "\t\t<a href=\"{$self_url}?p={$i}\" onclick=\"return go(this)\">{$i}</a>\n";
    43. }
    44.  
    45. ?>
    46.     </p>
    47. </form>
    48. </body>
    49. </html>
    Добавлено спустя 1 минуту 29 секунд:
    Re: Как сохранить значения радиокнопки при постраничном выводе?
    да уж попробуй. я за тебя курсовую не решаю, просто подсказываю метод. а дальше сама
     
  8. SiUna

    SiUna Активный пользователь

    С нами с:
    1 апр 2012
    Сообщения:
    41
    Симпатии:
    0
    Re: Как сохранить значения радиокнопки при постраничном выво

    "session.use_cookies - если равно 1, то PHP передает идентификатор в cookies, если 0 - то нет.
    session.use_trans_sid если равно 1, то PHP передает его, добавляя к URL и формам, если 0 - то нет.

    Если включена только вторая, то cookies не выставляется. А происходит то, ради чего, в основном, собственно, и стоит использовать встроенный механизм сессий. После того, как скрипт выполняет свою работу, и страница полностью сформирована, PHP просматривает ее всю и дописывает к каждой ссылке и к каждой форме передачу идентификатора сессии. " (c) php.su

    Вот отсюда взяла. Поскольку неизвестно включены ли будут cookies там где будут работать над тестом, пойдет второй метод, но он через url передает. А в Joomla через url отказывается что-либо передавать, выводя просто на главную. Поэтому я там методом post пользуюсь)
     
  9. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Re: Как сохранить значения радиокнопки при постраничном выво

    Очень хорошо что ты можешь пользоваться гуглом, я рад этому!

    Но у большинства людей, как мне кажется, cookies будет включены, многие даже не знают о cookies.
    Можно поставить проверку включены cookies или нет.

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

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    Re: Как сохранить значения радиокнопки при постраничном выво

    вот тебе пример опросника. в read_quiz формируется случайный текст вопросов и ответов. можешь заменить на осмысленный
    http://zalil.ru/33032104

    [​IMG]

    [​IMG]

    джумла не нужна
     
  11. SiUna

    SiUna Активный пользователь

    С нами с:
    1 апр 2012
    Сообщения:
    41
    Симпатии:
    0
    Re: Как сохранить значения радиокнопки при постраничном выво

    Спасибо большое! Буду разбираться в коде. Замечательный код, а главное кажется просто.

    Просто этот тест будет в книге, которую нам надо сделать, а мы её делаем в Joomla как сайт)
     
  12. Alex_PS

    Alex_PS Активный пользователь

    С нами с:
    2 ноя 2012
    Сообщения:
    1
    Симпатии:
    0
    Re: Как сохранить значения радиокнопки при постраничном выво

    Ребят, я новичок - программирую меньше месяца и тоже столкнулся с этой проблемой. Писал на денвере, интернет на тот момент не работал и пришлось кумекать с книжками, написал свой велосипед=) Благо браузер смотрит параметр радио кнопки по последней, может кто и применит, проверил на кроссбраузерность данную штуку, всё ок))

    Код (Text):
    1. <form method="get">
    2. <input id="search1" name="search" value="<?php echo $_GET['search'];?>" placeholder="Что ищем?" maxlength="100" spellcheck="false" autocomplete="off"/>
    3. <input id="search2" type="submit" value="искать"/>
    4. <?php $check="checked=\"checked\"";?>
    5. <input type="radio" <?php if($_GET['button']==all) {echo $check;} else{echo $check;}?> name="button" value="all"/>По всем
    6. <input type="radio" <?php if($_GET['button']==noreg) {echo $check;}else{};?> name="button" value="noreg"/>Без регистрации
    7. </form>
     
  13. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    Re: Как сохранить значения радиокнопки при постраничном выво

    Alex_PS, кажется ты не понял о чем тема.