xalia Δημοσ. 5 Νοεμβρίου 2007 Δημοσ. 5 Νοεμβρίου 2007 έχω σαλέψει!!! σε μία 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 και μετά θα με γυρίσει πάλι στο πρώτο!!
alex2005 Δημοσ. 5 Νοεμβρίου 2007 Δημοσ. 5 Νοεμβρίου 2007 Η απορία είναι γιατί γίνεται και ξαναγυρνάει στο πρώτο? Μήπως επειδή όταν ξαναεκτελεστεί η σελίδα αυτή θα κάνει: $_SESSION[q]=1;//Δεύτερη γραμμή του κώδικά σου. Οπότε η συνθήκη $_SESSION[q]==1 ικανοποιείται. Υποθέτω ότι η ερώτηση σου δεν υπονοεί κάπου ότι συνεχίζει αυτή η ιστορία με τις if($_SESSION[q]==3,4,5,6) κτλ.
xalia Δημοσ. 5 Νοεμβρίου 2007 Μέλος Δημοσ. 5 Νοεμβρίου 2007 κάθε session είναι σε ξεχωριστό block, δεν έχω if($_SESSION[q]==3,4,5,6) αλλά έχω if($_SESSION[q]==3); ... και μετά if($_SESSION[q]==4); όχι μόνο γυρνάει ξανά στο πρώτο αλλά πέφτω και σε endless loop! μήπως να το αλλάξω απο sessions? να παίξω με κάτι άλλο?
alex2005 Δημοσ. 5 Νοεμβρίου 2007 Δημοσ. 5 Νοεμβρίου 2007 Καλά όταν είπα if($_SESSION[q]==3,4,5,6) εννοούσα αυτό που είπες....τέλος πάντων. Δεν ποστάρεις όλο τον κώδικα?Γιατί δεν έχεις καθόλου loop και δεν είναι φυσιολογικό να πέφτει σε endless loop.Οπότε μάλλον κάτι άλλο παίζει με τον κώδικα που δεν φαίνεται από αυτά που έστειλες.Το μόνο που μπορώ να υποθέσω είναι πως κάτι στο δεύτερο block των if στέλνει τον κώδικα από την αρχή....οπότε και μπαίνει στην πρώτη if αλλά και δεν σταματάει ποτε!
xalia Δημοσ. 5 Νοεμβρίου 2007 Μέλος Δημοσ. 5 Νοεμβρίου 2007 > <? 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; } } */ ?> με απλά λόγια θέλω να βγαίνει μία ερώτηση τη φορά
alex2005 Δημοσ. 5 Νοεμβρίου 2007 Δημοσ. 5 Νοεμβρίου 2007 Στην γραμμή 113 κάνεις session_destroy(). Γιατί?
xalia Δημοσ. 5 Νοεμβρίου 2007 Μέλος Δημοσ. 5 Νοεμβρίου 2007 ήταν στις δοκιμές μήπως και δουλέψει σωστά...
alex2005 Δημοσ. 6 Νοεμβρίου 2007 Δημοσ. 6 Νοεμβρίου 2007 Λοιπόν..κατ'αρχήν κάνε αυτό που είπε ο Dikemou. Μετά ο ολοκληρωμένος κώδικας που έστειλες είναι λίγο διαφορετικός από τον αρχικό και αναρωτιέμαι αν έχεις υλοποιήσει αυτό που σκεφτόσουν. Να σου πω πως κατά την άποψή μου άδικα ταλαιπωρείσαι με τα session καθώς θα μπορούσες να έχεις το κάθε ερώτημα σε διαφορετική php σελίδα και όταν καταχωρείται να γίνεται redirect στην επόμενη. Αλλά εφόσον αποφάσισες να το κάνεις έτσι να σου πω πως είναι λίγο λάθος η προσέγγισή σου.Κάνεις $_SESSION[question]=2; με το που εμφανίζεις την πρώτη ερώτηση ( ή τουλάχιστον αυτό είπες στο αρχικό σου ποστ γιατί στον κώδικα που έστειλες κάνεις κάτι άλλο που δεν καταλαβαίνω).Τέλος πάντων...σκέψου πως ο χρήστης για τον Α ή Β λόγο κάνει refresh την σελίδα.Τότε ως δια μαγείας θα πηδήξει την πρώτη ερώτηση. Για να σου πω ακριβώς τι θέλω να πω....όπως βλέπω το handle της φόρμας κάνει η fquiz.php.Μέσα σε αυτήν θα πρέπει να κάνεις $_SESSION[question]=2; εφόσον ο χρήστης δηλαδή έχει πατήσει το κουμπί. Πως θα πρότεινα να το κάνεις αυτό: Αφού κάνεις ότι κάνεις στην fquiz.php κάνε $_SESSION[question]++; Έτσι θα προβάλει η php σου σελίδα την επόμενη ερώτηση.
xalia Δημοσ. 6 Νοεμβρίου 2007 Μέλος Δημοσ. 6 Νοεμβρίου 2007 alex έχεις δίκιο σε αυτό που λες και μένα η πρώτη μου σκέψη αυτή ηταν, αλλά να σου πω και τι με απασχολεί. Το fastquiz θα έχει μόνος 10 ερωτήσεις , άρα okay να πάει η κάθε μία σε δικιά της σελίδα. Θα είναι πιο βολικό και πιο εύκολο. Με full quiz όμως θα έχει 50! Δε θα επικρατήσει ένας πανικός με 50 σελίδες? Υπάρχει κάποια καλύτερη τακτική που μου διαφεύγει ?
alex2005 Δημοσ. 6 Νοεμβρίου 2007 Δημοσ. 6 Νοεμβρίου 2007 Κοίταξε γούστα είναι αυτά. Εγώ για παράδειγμα θα προτιμούσα 50 σελίδες παρά 50 if σε μία σελίδα.
xalia Δημοσ. 7 Νοεμβρίου 2007 Μέλος Δημοσ. 7 Νοεμβρίου 2007 το έκανα τελικά με μία μία σελίδα και όλα okay! με κούρασαν λίγο τα session array αλλά όλα καλά!!!! χίλια ευχαριστώ!!!
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.