2016-08-19 2 views
-1

Im пытается запустить файл PHP, но его дает пустые переменные, это викторины сайт, в котором пользователь ответ я не имею в Тринг для сравнения ответа пользователя со значением базы данных, но дает никаких результатовлучший способ вывода

здесь является answer.php, который вызывает функцию:

<?php 
require("functions.php"); 

$ss=answer($_POST); 

?> 

здесь function.php файл

<?php 
include('dbConnect.php'); 
?> 

<?php 

function answer($data){ 

    // creating query to get category id 
    $sql="select * from category"; 
    $result=mysql_query($sql); 
    while($row=mysql_fetch_array($result)){ 
     $cat=$row['cat_id']; 
    } 

    // another query to select table and compare values 
    $response="select q_id, ans from questions where cat_id='$cat'" ; 
    $right_answer=0; 
    $wrong_answer=0; 
    $unanswered=0; 
    $result = mysql_query($response); 

    while($qust=mysql_fetch_array($result)){ 

     if($qust['ans']==$_POST[$row['q_id']]){ 
      $right_answer++; 
     } else if($_POST[$row['q_id']]=="no_attempt"){ 
      $unanswered++; 
     } else { 
      $wrong_answer++; 
     } 
    } 
} 
echo "right_answer : ". $right_answer."<br>"; 
echo "wrong_answer : ". $wrong_answer."<br>"; 
echo "unanswered : ". $unanswered."<br>"; 
?> 
+0

'в то время как ($ строка = mysql_fetch_array ($ результат)) {$ кошка = $ строки [ 'cat_id'];}' даст вам значение LAST в наборе записей – RamRaider

+0

Вы переносите миграцию из MySQL Extension в PDO – Oncodeeater

+0

Код, который использует '$ cat', должен находиться внутри первого цикла while. Но было бы лучше присоединиться к запросам вместо выполнения вложенных циклов. – Barmar

ответ

1

если вы отступ кода здравы, это поможет читаемости, но что более важно, debuggab ility.

С помощью отступов вы можете быстро увидеть, что последние 3 строки вашей функции answer находятся за пределами области действия и внутри глобальной области. При вызове

require 'function.php` 

поэтому запускает эти последние 3 строки сразу,

echo "right_answer : ". $right_answer."<br>"; 
echo "wrong_answer : ". $wrong_answer."<br>"; 
echo "unanswered : ". $unanswered."<br>"; 

перед запуском

$ss=answer($_POST); 

и поэтому, прежде чем вы на самом деле создать 3 переменные и присвоены их значение.

Изменить код, как это и он не будет делать, что

<?php 
include('dbConnect.php'); 

function answer($data){ 

    // creating query to get category id 
    $sql="select * from category"; 
    $result=mysql_query($sql); 
    while($row=mysql_fetch_array($result)){ 
     $cat=$row['cat_id']; 
    } 

    // another query to select table and compare values 
    $response="select q_id, ans from questions where cat_id='$cat'" ; 
    $right_answer=0; 
    $wrong_answer=0; 
    $unanswered=0; 
    $result = mysql_query($response); 

    while($qust=mysql_fetch_array($result)){ 

     if($qust['ans']==$_POST[$row['q_id']]){ 
      $right_answer++; 
     } else if($_POST[$row['q_id']]=="no_attempt"){ 
      $unanswered++; 
     } else { 
      $wrong_answer++; 
     } 
    } 
    echo "right_answer : " . $right_answer."<br>"; 
    echo "wrong_answer : " . $wrong_answer."<br>"; 
    echo "unanswered : " . $unanswered."<br>"; 
} 
?> 
Смежные вопросы