[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Кусок кода, став функцией, ссорится с базой
LAzart
Пишу первую программу, типа тестирования. Из БД будут вынуты 5 вопросов,
и по очереди предъявлены тестируемому с формой для выбора номера правильного ответа RANmbr. При совпадении его с вынутым из той же строки Бд и переданным в виде скрытого поля правильным ответом оценка (тоже должна передаваться по задумке скрытым полем формы) растет на единицу, иначе - остается прежней. Потом собирался сделать 5кратный цикл (как когда-то на Паскале), для чего делаю функцию voo($i,$QNmr,$oc) c аргументами №вопроса в тесте $i, № его в базе $QNmr и оценка $oc (число правильных ответов).
В таком виде код выводит почти то, что надо (скриншот)user posted image,
НО! Когда убираю заремаривание в стр 35 и 60, чтобы тот же кусок сработал в виде функции - браузер после вывода выбранных номеров ругается -

"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE QNmr=' at line 1" - :o

Чем ЭТО лечить? :(
<html>
<head>
<title>
l2r2</title><meta http-equiv=Content-Type content="text/html; charset=UTF-8">
</head>
<body>
<?php

// определяем начальные данные
$db_host = 'localhost';
$db_name = 'dop';
$db_username = 'ded';
$db_password = '13';
$db_table_to_show = 'lab2';

// соединяемся с сервером базы данных
$connect_to_db = mysql_connect($db_host, $db_username, $db_password)
or die("Could not connect: " . mysql_error());

// подключаемся к базе данных
mysql_select_db($db_name, $connect_to_db)
or die("Could not select DB: " . mysql_error());
//Кириллица
mysql_query("SET CHARACTER SET utf8");
mysql_query("set names utf8");

$v1=0;
$v2=0;
$v3=0;
$v4=0;
$v5=0;

for ($i=1; $i<9; $i++) {$ar[]=$i;}
shuffle($ar);
for ($j=1; $j<6; $j++) {$v[$j]=$ar[$j];echo $ar[$j]."<br>" ;
echo "v".$j."=".$v[$j]."<br>" ;}
//function voo($i,$QNmr,$oc) {
// выбираем Txt,RANmbr#$v[$j]1 из таблицы "lab2", пока $i фиксировано, потом будет 5 циклов, когда заработает функция voo (Вопрос/ответ-проверка/оценка)

$i=1;
$qr_result = mysql_query("select Txt from . $db_table_to_show WHERE QNmr=$v[$i]")
or die(mysql_error());
echo '<br>' , 'OC='.$oc;
// выводим на страницу Txt вопроса ,

$data = mysql_fetch_array($qr_result);
echo $data['Txt'] ; "<br>" ;

//то же с правильным ответом (пока, для себя) RANmbr
$qr_result = mysql_query("select RANmbr from . $db_table_to_show WHERE QNmr=$v[$i]") or die(mysql_error());
$data = mysql_fetch_array($qr_result);
$RANmbr=$data['RANmbr'] ; echo 'RA='.$data['RANmbr'] ;
// Тут все (пока) выводится на экран (чтобы держать руку на пульсе, ибо что-то тоже не очень клеится), но потом все эти 'echo' кроме тех, что в строках 58 и 59, будут выброшены
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
static $oc=0;
echo '<br>' , 'an='.$_POST['an'];echo '<br>' ;
echo 'OC='.$oc , '<br>' ;
echo 'RA='.$RANmbr, '<br>' ;
echo '<br>' , 'OC='.$oc ;
if ($_POST['an']=$_POST['RANmbr'])
{ $oc=oc+1; echo " Pravilno! Ocenka UZHE $oc";}
else {echo "Neverno, ocenka vse escho '$oc' ";}}
//return $oc;} voo(1,2,3);
// закрываем соединение с сервером базы данных

mysql_close($connect_to_db);
?>
<p>
Vyberi N otveta:
<form method="post" action="<?=$_SERVER['PHP_SELF']?>">
<input
type="radio" name="an" value="1" /> 1
<input type="radio" name="an" value="2" /> 2
<input type="radio" name="an" value="3" /> 3
<input type="radio" name="an" value="4" /> 4
<input type="radio" name="an" value="5" /> 5
<input name="RANmbr" type="hidden" value='$RANmbr'>
<input
name="oc" type="hidden" value="$oc">
</p>

<input
type="submit" value="Otvetit'" />

</form>


</body>
</html>
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.