Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Форматированный вывод текта из БД, на конкретном примере 
:(
    Опции темы
koshey
Дата 11.1.2007, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 11.1.2007

Репутация: нет
Всего: -3



Помогите! Мучаюсь уже четвертый день. Имеется запись в БД, которая выглядит вот так:

Укажите правильный вариант ответа. @$test = 1 является переменной только типа BOOLEAN. @Значения переменных $res1=False и $res2=FALSE абсолютно разные @$result='privet' является ошибкой #Укажите неверный вариант ответа. @Имея код echo \"Hi\".'russia' получим ошибку. @$num=3.49 является переменной типа Integer.@$null='' - ошибка. #Выберите верное продолжение кода. @вв @вв @вв

И надо это вывести в виде теста (3 блока radio button по три штуки каждый). Имя блоков должно быть 1, 2 и 3 соответственно, что у меня и получилось сделать с помощью цикла. Но вот со значением проблема. Парюсь сильно, не знаю куда вложить дополнительный цикл, который каждой Radio приписывает значение в каждом блоке. То есть Submit должен прислать что-то вроде этого:

$1=3;
$2=3;
$3=2;

Помогите мне пожалуйста. Наверняка это действительно просто. teacher[2] и есть представленный выше текст

Код

echo "<form name='checker' method='post' action='checker.php'>
<center><b>".$teacher[1]."</b></center><br>";
$we=1;
$wr=1;
$teacher[2] = strtok($teacher[2],"#");
$teacher[2]=str_replace("@","<br><input type='radio' name='".$we."' value='".$wr."'>","$teacher[2]");
echo "&nbsp&nbsp&nbsp ".$we.". ".$teacher[2]."<br><br>";

while ($teacher[2])
{
$teacher[2] = strtok("#");
$we=$we+1;
if ($we<=3){
$wr=$wr+1;
$teacher[2]=str_replace("@","<br><input type='radio' name='".$we."' value='".$wr."'>","$teacher[2]");
echo "&nbsp&nbsp&nbsp ".$we.". ".$teacher[2];
if ($we!==3){
echo "<br><br>";
}
}
}
echo "<br><br> 
<input type='hidden' name='id' value='".$_GET['view']."'>
<input type='hidden' name='test' value= 1>
<center><input class='button' type='submit' value='Проверить'></center>
</form><br>";


Как это визуально выглядит можно увидеть здесь. Имя _default_ пароль 1234

Это сообщение отредактировал(а) koshey - 11.1.2007, 11:18
PM MAIL   Вверх
Mal Hack
Дата 11.1.2007, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Опиши нормально задачу. Ничего не понятно.

Цитата(koshey @  11.1.2007,  11:15 Найти цитируемый пост)
Укажите правильный вариант ответа. @$test = 1 является переменной только типа BOOLEAN. @Значения переменных $res1=False и $res2=FALSE абсолютно разные @$result='privet' является ошибкой #Укажите неверный вариант ответа. @Имея код echo \"Hi\".'russia' получим ошибку. @$num=3.49 является переменной типа Integer.@$null='' - ошибка. #Выберите верное продолжение кода. @вв @вв @вв

А ты проверь
PM ICQ   Вверх
koshey
Дата 11.1.2007, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 11.1.2007

Репутация: нет
Всего: -3



Объясняю. Программа представляет собой тест, в котором 3 вопроса по 3 вар-та ответов. Этот тест генерируется посредством взятия из БД значения

 Укажите правильный вариант ответа. @$test = 1 является переменной только типа BOOLEAN. @Значения переменных $res1=False и $res2=FALSE абсолютно разные @$result='privet' является ошибкой #Укажите неверный вариант ответа. @Имея код echo \"Hi\".'russia' получим ошибку. @$num=3.49 является переменной типа Integer.@$null='' - ошибка. #Выберите верное продолжение кода. @вв @вв @вв

У меня получилось сделать так, чтоб радио-баттоны верно группировались (т. е. в первом вопросе имена всех трех радио - 1, во втором - 2, в 3-м - 3), однако у меня не получается сделать так, чтобы в каждом вопросе value каждой радио были 1, 2, 3 соответственно. Вот схема:

Что имеем?
вопрос 1
радио name=1 value=1
радио name=1 value=1
радио name=1 value=1

вопрос 2
радио name=2 value=2
радио name=2 value=2
радио name=2 value=2

вопрос 3
радио name=3 value=3
радио name=3 value=3
радио name=3 value=3


Что надо?
вопрос 1
радио name=1 value=1
радио name=1 value=2
радио name=1 value=3

вопрос 2
радио name=2 value=1
радио name=2 value=2
радио name=2 value=3

вопрос 3
радио name=3 value=1
радио name=3 value=2
радио name=3 value=3
PM MAIL   Вверх
Mal Hack
Дата 11.1.2007, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



В каком виде хранится:

Цитата(koshey @  11.1.2007,  13:04 Найти цитируемый пост)
 Укажите правильный вариант ответа. @$test = 1 является переменной только типа BOOLEAN. @Значения переменных $res1=False и $res2=FALSE абсолютно разные @$result='privet' является ошибкой #Укажите неверный вариант ответа. @Имея код echo \"Hi\".'russia' получим ошибку. @$num=3.49 является переменной типа Integer.@$null='' - ошибка. #Выберите верное продолжение кода. @вв @вв @вв

Тот код, который ты привел не рабочий в принципе.
PM ICQ   Вверх
koshey
Дата 11.1.2007, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 11.1.2007

Репутация: нет
Всего: -3



Код

echo "<form name='checker' method='post' action='checker.php'>
<center><b>".$teacher[1]."</b></center><br>";
$we=1;
$wr=1;
$teacher[2] = strtok($teacher[2],"#");
$teacher[2]=str_replace("@","<br><input type='radio' name='".$we."' value='".$wr."'>","$teacher[2]");
echo "&nbsp&nbsp&nbsp ".$we.". ".$teacher[2]."<br><br>";

while ($teacher[2])
{
$teacher[2] = strtok("#");
$we=$we+1;
if ($we<=3){
$wr=$wr+1;
$teacher[2]=str_replace("@","<br><input type='radio' name='".$we."' value='".$wr."'>","$teacher[2]");
echo "&nbsp&nbsp&nbsp ".$we.". ".$teacher[2];
if ($we!==3){
echo "<br><br>";
}
}
}
echo "<br><br> 
<input type='hidden' name='id' value='".$_GET['view']."'>
<input type='hidden' name='test' value= 1>
<center><input class='button' type='submit' value='Проверить'></center>
</form><br>";


Вот код
PM MAIL   Вверх
Mal Hack
Дата 11.1.2007, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



koshey
Цитата(Mal Hack @  11.1.2007,  13:08 Найти цитируемый пост)
В каком виде хранится:

Ответь на вопрос...
PM ICQ   Вверх
koshey
Дата 11.1.2007, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 11.1.2007

Репутация: нет
Всего: -3



В таком и хранится. Прям сущ-ет ячейка в таблице БД.
PM MAIL   Вверх
Mal Hack
Дата 11.1.2007, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Код

<?php

$str = <<<EOF
Укажите правильный вариант ответа. @\$test = 1 является переменной только типа BOOLEAN. @Значения переменных \$res1=False и \$res2=FALSE абсолютно разные @\$result='privet' является ошибкой #Укажите неверный вариант ответа. @Имея код echo "Hi".'russia' получим ошибку. @\$num=3.49 является переменной типа Integer.@\$null='' - ошибка. #Выберите верное продолжение кода. @вв @вв @вв
EOF;

$ar= explode( "#" , $str );

for($i = 0;$i<count($ar);$i++)
{
    $ar2 = explode( "@" , $ar[$i] );
    
    print $ar2[0]. "<br/>\n";
    
    for($j=1;$j<count($ar2);$j++)
    {
        print "<br><input type='radio' name='" . ($i+1) . "' value='" . $j . "'>" . $ar2[$j]."\n";
    }      
    
    print "<br/><br/>\n";
    
}

?>

Вывод:
Код

Укажите правильный вариант ответа. <br/>
<br><input type='radio' name='1' value='1'>$test = 1 является переменной только типа BOOLEAN. 
<br><input type='radio' name='1' value='2'>Значения переменных $res1=False и $res2=FALSE абсолютно разные 
<br><input type='radio' name='1' value='3'>$result='privet' является ошибкой 
<br/><br/>
Укажите неверный вариант ответа. <br/>
<br><input type='radio' name='2' value='1'>Имея код echo "Hi".'russia' получим ошибку. 
<br><input type='radio' name='2' value='2'>$num=3.49 является переменной типа Integer.
<br><input type='radio' name='2' value='3'>$null='' - ошибка. 
<br/><br/>
Выберите верное продолжение кода. <br/>
<br><input type='radio' name='3' value='1'>вв 
<br><input type='radio' name='3' value='2'>вв 
<br><input type='radio' name='3' value='3'>вв
<br/><br/>

PM ICQ   Вверх
GZep
Дата 11.1.2007, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


участник Винграда
***


Профиль
Группа: Завсегдатай
Сообщений: 1528
Регистрация: 7.7.2006
Где: Москва

Репутация: 8
Всего: 32



Привет! smile 
  • $wr=$wr+1; - не думал, что так еще кто-то пишет... Пиши просто $wr++;.
  • Сколько раз говорил, что надо писать <br/> вместо <br>.
  • >","$teacher[2]"); - это что такое? Надо >", $teacher[2]);.
  • ".$we.". ".$teacher[2] - опять "кракозябра"... Почему просто не написать вместо этого: ".$we.$teacher[2]?...
  • Почитай хоть какие-нибудь стандарты написания кода, например, из PEAR. Вот они... У тебя ни одна рекомендация не учитывается!
Сделал код более читабельным, а кое-где корректным:
Код

<form name="checker" method="post" action="checker.php">
<center><b><?=$teacher[1]?></b></center><br/>
<?php
$we = 1;
$wr = 1;
$teacher[2] = strtok($teacher[2],"#");
$teacher[2] = str_replace("@","<br/>\n<input type = \"radio\" name = \"".$we."\" value=\"".$wr."\"/>", $teacher[2]);
echo "&nbsp&nbsp&nbsp ".$we.". ".$teacher[2]."<br/><br/>";
while ($teacher[2]) {
    $teacher[2] = strtok("#");
    $we++;
    if ($we <= 3) {
        $wr++;
        $teacher[2] = str_replace("@","<br/>\n<input type=\"radio\" name=\"".$we."\" value=\"".$wr."\">", $teacher[2]);
        echo "&nbsp&nbsp&nbsp ".$we.". ".$teacher[2];
        if ($we !== 3)
            echo "<br/>\n<br/>\n";
    }
}
?>
<br>
<br>
<input type='hidden' name='id' value='<?=$_GET['view']?>'>
<input type='hidden' name='test' value="1">
<center>
<input class='button' type='submit' value='Проверить'/>
</center>
</form>

Я не понял, как у тебя работает цикл... Для того, чтобы он не работал "вечно" надо либо break; ставить, либо $teacher[2]=false делать...

Это сообщение отредактировал(а) GZep - 11.1.2007, 15:27


--------------------
user posted imageuser posted image
PM MAIL WWW ICQ Skype GTalk   Вверх
koshey
Дата 11.1.2007, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 11.1.2007

Репутация: нет
Всего: -3



Спаибо огромное!Все работает идеально!!! Всем спасибо. Через месяца два от имени miklash90 обоих одарю репой!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0893 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.