Προς το περιεχόμενο

και τα sessions τρελάθηκαν!


xalia

Προτεινόμενες αναρτήσεις

Δημοσ.

έχω σαλέψει!!!

 

σε μία php θέλω να δείχνω σταδιακά κομμάτια απο τη βάση και να παίρνω feedback με μία form

 

για να καταλάβετε

 

<?

session start()

$_SESSION[q]=1;

 

if ($_SESSION[q]==1])

{

do that....if(!isset) gia na parw apo th forma

....kapou edw einai kai h form

$_SESSION[q]=2;

 

}

 

if($_SESSION[q]==2)

{

do that....if(!isset) gia na parw apo th forma

....kapou edw einai kai h forma

$_SESSION[q]=3;

 

}

?>

 

θα μου δείξει κανονικά το πρώτο θα κάνω submit, μετά το δέυτερο θα κάνω submit και μετά θα με γυρίσει πάλι στο πρώτο!!

Δημοσ.

Η απορία είναι γιατί γίνεται και ξαναγυρνάει στο πρώτο?

Μήπως επειδή όταν ξαναεκτελεστεί η σελίδα αυτή θα κάνει:

 

$_SESSION[q]=1;//Δεύτερη γραμμή του κώδικά σου.

 

Οπότε η συνθήκη $_SESSION[q]==1 ικανοποιείται.

 

Υποθέτω ότι η ερώτηση σου δεν υπονοεί κάπου ότι συνεχίζει αυτή η ιστορία με τις if($_SESSION[q]==3,4,5,6) κτλ.

Δημοσ.

κάθε session είναι σε ξεχωριστό block, δεν έχω

if($_SESSION[q]==3,4,5,6)

 

αλλά έχω

 

if($_SESSION[q]==3);

...

 

και μετά

if($_SESSION[q]==4);

 

όχι μόνο γυρνάει ξανά στο πρώτο αλλά πέφτω και σε endless loop!

μήπως να το αλλάξω απο sessions? να παίξω με κάτι άλλο?

Δημοσ.

Καλά όταν είπα if($_SESSION[q]==3,4,5,6) εννοούσα αυτό που είπες....τέλος πάντων.

Δεν ποστάρεις όλο τον κώδικα?Γιατί δεν έχεις καθόλου loop και δεν είναι φυσιολογικό να πέφτει σε endless loop.Οπότε μάλλον κάτι άλλο παίζει με τον κώδικα που δεν φαίνεται από αυτά που έστειλες.Το μόνο που μπορώ να υποθέσω είναι πως κάτι στο δεύτερο block των if στέλνει τον κώδικα από την αρχή....οπότε και μπαίνει στην πρώτη if αλλά και δεν σταματάει ποτε!

Δημοσ.

>
<?
session_start();

include("con.php");
?>
<h1>fast quiz</h1>

<?
$_SESSION[question]=1;
//echo "$_SESSION[question]";
//++$_SESSION[question];
//echo "$_SESSION[question]";

 $qid[i]; // the array that question id will be stored
 $i=0; // the i counter
 
$query = 'SELECT * FROM questions WHERE difficulty = "easy" ORDER BY RAND() LIMIT 5';
$result = mysql_query ($query , $db);
while ($row = mysql_fetch_array($result))
{
 $q_id[$i] = $row["q_id"];
 $question[$i] = $row["question"]; 
 $answer1[$i] = $row["answer1"];
 $answer2[$i] = $row["answer2"];
 $answer3[$i] = $row["answer3"];
 $answer4[$i] = $row["answer4"];
 $correct[$i] = $row["correct"];
 $difficulty[$i] = $row["difficulty"];
 $score[$i] = $row["score"];
 $c_id[$i] = $row["c_id"];
 $photo[$i] = $row["photo"];
 $i++;
}
echo "$i";
print_r ($q_id);

//echo "$qid[i]";

/*for ($i=0; $i<6; $i++)
{
echo "<br>";
echo "$q_id[$i]";
echo "<br>";
echo "$question[$i]";
echo "$correct[$i]";
}
*/
$answer = $_POST['answer'];
if ($_SESSION[question]==1)
{
$i=1;
if (!isset($_POST['answer']))
{
echo "$photo[$i]";
echo	'<h1> please answer </h1>';
echo	'<form method ="post" action ="fquiz.php">';
echo	'<table border="1">';
echo	'<tr>';
echo	'<td>';
echo  "$question[$i]";	
echo	'</td>';
echo	'</tr>';
echo	'<tr>';
echo	'<td>';
$cimage=$photo[$i];
   echo '<img src="uploads/';
   echo "$cimage";
   echo '">';
echo	'</td>';
echo	'</tr>';
echo	'<tr>';
echo	'<td>';
echo	"$answer1[$i]";
echo	'</td>';

   echo '<td> <input type="radio" checked="checked" name="answer" value="';
   echo "$answer1[$i]";
   echo '"></td></tr>'; 

//echo	'</tr>';
echo	'<tr>';
echo	'<td>';
echo	"$answer2[$i]";
echo	'</td>';
   echo '<td> <input type="radio" checked="checked" name="answer" value="';
   echo "$answer2[$i]";
   echo '"></td></tr>'; 

//echo	'</tr>';
echo	'<tr>';
echo	'<td>';
echo	"$answer3[$i]";

   echo '<td> <input type="radio" checked="checked" name="answer" value="';
   echo "$answer3[$i]";
   echo '"></td></tr>'; 
//echo	'</td>';
echo	'</tr>';
echo	'<td colspan="2" align="center">';
echo	'<input type="submit" value="answerA">';
}
else
{
if ($correct[$i] == $answer)
{
//$_SESSION[question]=2;
echo "correct!";
}
else
{
echo "wrong!";
}
session_destroy();
$_SESSION[question]=2;
}
}

$ans2 = $_POST['ans2'];
if ($_SESSION[question]==2)
{
$i=2;
if (!isset($_POST['ans2']))
{
echo "$photo[$i]";
echo	'<h1> please answer </h1>';
echo	'<form method ="post" action ="fquiz.php">';
echo	'<table border="1">';
echo	'<tr>';
echo	'<td>';
echo  "$question[$i]";	
echo	'</td>';
echo	'</tr>';
echo	'<tr>';
echo	'<td>';
$cimage=$photo[$i];
   echo '<img src="uploads/';
   echo "$cimage";
   echo '">';
echo	'</td>';
echo	'</tr>';
echo	'<tr>';
echo	'<td>';
echo	"$answer1[$i]";
echo	'</td>';

   echo '<td> <input type="radio" checked="checked" name="ans2" value="';
   echo "$answer1[$i]";
   echo '"></td></tr>'; 

//echo	'</tr>';
echo	'<tr>';
echo	'<td>';
echo	"$answer2[$i]";
echo	'</td>';
   echo '<td> <input type="radio" checked="checked" name="ans2" value="';
   echo "$answer2[$i]";
   echo '"></td></tr>'; 

//echo	'</tr>';
echo	'<tr>';
echo	'<td>';
echo	"$answer3[$i]";

   echo '<td> <input type="radio" checked="checked" name="ans2" value="';
   echo "$answer3[$i]";
   echo '"></td></tr>'; 
//echo	'</td>';
echo	'</tr>';
echo	'<td colspan="2" align="center">';
echo	'<input type="submit" value="answerB">';
}
else
{
if ($correct[$i] == $ans2)
{
//$_SESSION[question]=2;
echo "correct!";
}
else
{
echo "wrong!";
}
$_SESSION[question]=3;
}
}
/*
$ans3 = $_POST['ans3'];
if ($_SESSION[question]==3)
{
$i=3;
if (!isset($_POST['ans3']))
{
echo "$photo[$i]";
echo	'<h1> please answer </h1>';
echo	'<form method ="post" action ="fquiz.php">';
echo	'<table border="1">';
echo	'<tr>';
echo	'<td>';
echo  "$question[$i]";	
echo	'</td>';
echo	'</tr>';
echo	'<tr>';
echo	'<td>';
$cimage=$photo[$i];
   echo '<img src="uploads/';
   echo "$cimage";
   echo '">';
echo	'</td>';
echo	'</tr>';
echo	'<tr>';
echo	'<td>';
echo	"$answer1[$i]";
echo	'</td>';

   echo '<td> <input type="radio" checked="checked" name="ans3" value="';
   echo "$answer1[$i]";
   echo '"></td></tr>'; 

//echo	'</tr>';
echo	'<tr>';
echo	'<td>';
echo	"$answer2[$i]";
echo	'</td>';
   echo '<td> <input type="radio" checked="checked" name="ans3" value="';
   echo "$answer2[$i]";
   echo '"></td></tr>'; 

//echo	'</tr>';
echo	'<tr>';
echo	'<td>';
echo	"$answer3[$i]";

   echo '<td> <input type="radio" checked="checked" name="ans3" value="';
   echo "$answer3[$i]";
   echo '"></td></tr>'; 
//echo	'</td>';
echo	'</tr>';
echo	'<td colspan="2" align="center">';
echo	'<input type="submit" value="answerC">';
}
else
{
if ($correct[$i] == $ans3)
{
//$_SESSION[question]=2;
echo "correct!";
}
else
{
echo "wrong!";
}
$_SESSION[question]=100;
}
}
*/
?>

 

με απλά λόγια θέλω να βγαίνει μία ερώτηση τη φορά

Δημοσ.

Λοιπόν..κατ'αρχήν κάνε αυτό που είπε ο Dikemou.

 

Μετά ο ολοκληρωμένος κώδικας που έστειλες είναι λίγο διαφορετικός από τον αρχικό και αναρωτιέμαι αν έχεις υλοποιήσει αυτό που σκεφτόσουν.

 

Να σου πω πως κατά την άποψή μου άδικα ταλαιπωρείσαι με τα session καθώς θα μπορούσες να έχεις το κάθε ερώτημα σε διαφορετική php σελίδα και όταν καταχωρείται να γίνεται redirect στην επόμενη.

 

Αλλά εφόσον αποφάσισες να το κάνεις έτσι να σου πω πως είναι λίγο λάθος η προσέγγισή σου.Κάνεις $_SESSION[question]=2; με το που εμφανίζεις την πρώτη ερώτηση ( ή τουλάχιστον αυτό είπες στο αρχικό σου ποστ γιατί στον κώδικα που έστειλες κάνεις κάτι άλλο που δεν καταλαβαίνω).Τέλος πάντων...σκέψου πως ο χρήστης για τον Α ή Β λόγο κάνει refresh την σελίδα.Τότε ως δια μαγείας θα πηδήξει την πρώτη ερώτηση.

 

Για να σου πω ακριβώς τι θέλω να πω....όπως βλέπω το handle της φόρμας κάνει η fquiz.php.Μέσα σε αυτήν θα πρέπει να κάνεις $_SESSION[question]=2; εφόσον ο χρήστης δηλαδή έχει πατήσει το κουμπί.

 

Πως θα πρότεινα να το κάνεις αυτό:

 

Αφού κάνεις ότι κάνεις στην fquiz.php κάνε

 

$_SESSION[question]++;

 

Έτσι θα προβάλει η php σου σελίδα την επόμενη ερώτηση.

Δημοσ.

alex έχεις δίκιο σε αυτό που λες και μένα η πρώτη μου σκέψη αυτή ηταν, αλλά να σου πω και τι με απασχολεί. Το fastquiz θα έχει μόνος 10 ερωτήσεις , άρα okay να πάει η κάθε μία σε δικιά της σελίδα. Θα είναι πιο βολικό και πιο εύκολο. Με full quiz όμως θα έχει 50! Δε θα επικρατήσει ένας πανικός με 50 σελίδες? Υπάρχει κάποια καλύτερη τακτική που μου διαφεύγει ?

Δημοσ.

το έκανα τελικά με μία μία σελίδα και όλα okay!

 

με κούρασαν λίγο τα session array αλλά όλα καλά!!!!

 

χίλια ευχαριστώ!!!

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...