Δημιουργία quiz σε PHP & Mysql με τυχαίες ερωτήσεις

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Άβαταρ μέλους
elavd
Δημοσιεύσεις: 323
Εγγραφή: 16 Σεπ 2004 00:04
Τοποθεσία: Ιωάννινα

Δημιουργία quiz σε PHP & Mysql με τυχαίες ερωτήσεις

Δημοσίευση από elavd » 11 Φεβ 2005 22:33

Cha0s έγραψε:...ο Tanaka ανέφερε αυτό
http://phpsurveyor.sourceforge.net/
Δυστυχώς δεν είναι ακριβώς σαν αυτό που ψάχνω. Αυτό είναι survey ενώ εγώ ψάχνω για τεστ (με σωστές απαντήσεις κλπ). Σε ένα survey δεν υπάρχουν σωστές και λάθος απαντήσεις. Είναι ένα γκάλοπ απόψεων...

Άβαταρ μέλους
elavd
Δημοσιεύσεις: 323
Εγγραφή: 16 Σεπ 2004 00:04
Τοποθεσία: Ιωάννινα

Δημιουργία quiz σε PHP & Mysql με τυχαίες ερωτήσεις

Δημοσίευση από elavd » 21 Μαρ 2005 20:15

ThyClub έγραψε: Αυτό μπορείς να το κάνεις με sessions. ΠΧ

Σε κάθε απάντηση εσύ θα αποθηκεύεις στο session του χρήστη τις απαντήσεις του και στο τέλος θα συγκρίνεις με ενα array που θα περιέχει τις σωστές κάτι σαν:

Κώδικας: Επιλογή όλων

if($SESSION[0]==$answers[0]){
 $results[0]="Correct";
}
Αυτό θα το κάνεις για κάθε ερώτηση. Έτσι στο τέλος θα μπορείς να δίνεις στο χρήστη τα αποτελέσματα.
Παιδιά θα ήθελα λίγη βοήθεια στα sessions...
Φαντάζομαι ότι στην αρχή κάθε σελίδας php θα πρέπει να κάνω

Κώδικας: Επιλογή όλων

session_start() 
σωστά?
Δεν έχω όμως καταλάβει ακριβώς πως λειτουργούν τα sessions. :oops: Έστω ότι κάποιος δίνει μια απάντηση και εγώ την έχω σε μια μεταβλητή $answer. Πώς αυτή την απάντηση θα την αποθηκεύσω στο Session Array του συγκεκριμένου χρήστη, ώστε στο τέλος να κάνω αυτή τη σύγκριση που γράφει ο ThyClub?
Πρέπει μήπως, εκτός από session_start να κάνω και κάτι άλλο στην αρχή κάθε σελίδας (πχ να ορίσω εγώ αυτό το array)??
Αν βαριέστε να μου εξηγήσετε και έχετε και κάποιο βοηθητικό link, είναι επίσης ευπρόσδεκτο! :D
Εικόνα

Άβαταρ μέλους
elavd
Δημοσιεύσεις: 323
Εγγραφή: 16 Σεπ 2004 00:04
Τοποθεσία: Ιωάννινα

Δημιουργία quiz σε PHP & Mysql με τυχαίες ερωτήσεις

Δημοσίευση από elavd » 21 Μαρ 2005 21:29

Και κάτι άλλο...Όπως είπα στην αρχή, θέλω να επιλέγω από ένα σύνολο πχ 100 ερωτήσεων, τις 10 από αυτές τυχαία.
Άρα θα πρέπει να επιλέγω 1 τυχαία μία γραμμή από τη MySQL. Σκέφτηκα η τυχαία επιλογή να γίνεται γράφοντας

Κώδικας: Επιλογή όλων

$select_question = rand() % 10;
.
Ας πούμε ότι την πρώτη φορά τυχαίνει ο αριθμός 17. Πώς θα εξασφαλίσω ότι δεν θα ξανατύχει αυτός ο αριθμός;
Εικόνα

Άβαταρ μέλους
Cha0s
SysAdmin
Δημοσιεύσεις: 10242
Εγγραφή: 28 Ιούλ 2001 03:00

Δημιουργία quiz σε PHP & Mysql με τυχαίες ερωτήσεις

Δημοσίευση από Cha0s » 21 Μαρ 2005 21:33

Ένας μπακαλίστικος τρόπος που μου έρχεται τώρα στα γρήγορα είναι να βάζεις τον κάθε αριθμό που σου επιστρέφει σε ενα πίνακα και μετά στον επόμενο που θα σου επιστρέψει να ελέγχεις αν σου έχει ξαναέρθει ελέγχοντας αν υπάρχει μέσα στο array.

Αν ναι τότε του ξαναλές να ξαναφέρει νέο αριθμό κ.ο.κ.

Μπακαλίστικο όμως...

Άβαταρ μέλους
elavd
Δημοσιεύσεις: 323
Εγγραφή: 16 Σεπ 2004 00:04
Τοποθεσία: Ιωάννινα

Δημιουργία quiz σε PHP & Mysql με τυχαίες ερωτήσεις

Δημοσίευση από elavd » 21 Μαρ 2005 21:42

Το σκέφτηκα κι εγώ αυτό αλλά φαντάζομαι ότι θα υπάρχει και κάποιος άλλος τρόπος...
Αν όχι, θα καταλήξω σε αυτή τη μέθοδο!
Εικόνα

Άβαταρ μέλους
cordis
Administrator, [F|H]ounder, [C|S]EO
Δημοσιεύσεις: 27626
Εγγραφή: 09 Οκτ 1999 03:00
Τοποθεσία: Greece
Επικοινωνία:

Δημιουργία quiz σε PHP & Mysql με τυχαίες ερωτήσεις

Δημοσίευση από cordis » 23 Μαρ 2005 01:16

επέλεξε μία από την 1η δεκάδα, μια από την δεύτερη, κ.ο.κ.
Δεν απαντάω σε προσωπικά μηνύματα με ερωτήσεις που καλύπτονται από τις ενότητες του forum. Για ο,τι άλλο είμαι εδώ για εσάς.
- follow me @twitter

Άβαταρ μέλους
elavd
Δημοσιεύσεις: 323
Εγγραφή: 16 Σεπ 2004 00:04
Τοποθεσία: Ιωάννινα

Δημιουργία quiz σε PHP & Mysql με τυχαίες ερωτήσεις

Δημοσίευση από elavd » 23 Μαρ 2005 09:38

Για όποιον ενδιαφέρεται, κάνω post μια function που βρήκα στο internet και κάνει ακριβώς αυτό που θέλω:

Κώδικας: Επιλογή όλων

function unique_rand($num, $min, $max)
{
if&#40;$num > $max || &#40;$max - $min&#41; < $num || $min >= $max&#41;
die&#40;'<b>Error&#58;</b> stop being stupid.'&#41;;

$temp = mt_rand&#40;$min, $max&#41;;
$digits = array&#40;&#41;;

for&#40;$i=0; $i<$num; $i++&#41;
&#123;
if&#40;!in_array&#40;$temp, $digits&#41;&#41;
$digits&#91;&#93; = $temp;
else
&#123;
$temp = mt_rand&#40;$min, $max&#41;;
--$i;
&#125;
&#125;
return $digits;
&#125;
$result = unique_rand&#40;10, 1 , 100&#41;;

echo "<pre>";
print_r &#40;$result&#41;;
echo "</pre>";
Στο συγκεκριμένο παράδειγμα, με την εντολή

Κώδικας: Επιλογή όλων

$result = unique_rand&#40;10, 1 , 100&#41;;
επιλέγω να μου δημιουργήσει 10 τυχαίους και μοναδικούς αριθμούς από το 1 έως το 100.
Οι 3 τελευταίες γραμμές εννοείται ότι μπορούν να παραλειφθούν, μιας και βολεύουν πιο πολύ στο debugging του κώδικα ;)
Εικόνα

Άβαταρ μέλους
elavd
Δημοσιεύσεις: 323
Εγγραφή: 16 Σεπ 2004 00:04
Τοποθεσία: Ιωάννινα

Δημιουργία quiz σε PHP & Mysql με τυχαίες ερωτήσεις

Δημοσίευση από elavd » 23 Μαρ 2005 14:38

Παιδιά please βοήθεια... Έχω κολλήσει!
Έχω φτιάξει (με τη γεννήτρια τυχαίων αριθμών που προανέφερα) 10 αριθμούς οι οποίοι αντιστοιχούν σε IDs των ερωτήσεων στη MySQL.
Δηλαδή αν μου βγάλει πχ το 23, θα πρέπει να ψάξω στη MySQL κάπως έτσι:

Κώδικας: Επιλογή όλων

SELECT question FROM quiz1 where q_id='23'
Τους 10 τυχαίους αριθμούς που προέκυψαν τους αποθηκεύω σε ένα πίνακα $random_questions και τον πίνακα αυτόν τον "περνάω" και στα Sessions ώς εξής:

Κώδικας: Επιλογή όλων

$_SESSION&#91;'questions'&#93; = $random_questions;
Επίσης έχω φτιάξει ένα array στο SESSION για να αποθηκεύω τις 10 απαντήσεις που θα μου δίνει ο χρήστης.

Κώδικας: Επιλογή όλων

$_SESSION&#91;'answers&#93; = $answers;
Αυτό που δεν έχω καταλάβει είναι: πώς θα εμφανίζω μία μία τις ερωτήσεις από τη MySQL?
Φαντάζομαι αρχικά θα πρέπει να διαβάσω τον πρώτο αριθμό που δημιουργήθηκε τυχαία, να "τσιμπήσω" την αντίστοιχη ερώτηση από τη βάση, να τη δείξω δυναμικά στο χρήστη και την απάντησή του να την αποθηκεύσω στον πίνακα $answers.
Μετά όμως πώς θα επιλέξω το 2ο τυχαίο νούμερο από τον πίνακα $random_questions; Πού θα ξέρω δηλαδή που είναι ο pointer του συγκεκριμένου πίνακα, εφόσον, μόλις μου δώσει την 1η απάντηση ο χρήστης, θα πρέπει να πάρω από τη βάση την επόμενη ερώτηση?

Μήπως πρέπει τις ερωτήσεις να τις "τσιμπήσω" όλες μαζί από τη βάση και να τις περάσω και αυτές στο SESSIOn?

Ελπίζω να μη ρωτάω ΒΛΑΚΕΙΕΣ και κάποιος να βγάλει νόημα από τα παραπάνω ασυνάρτητα που γράφω... :oops:
Εικόνα

Άβαταρ μέλους
softius
Script Master
Δημοσιεύσεις: 241
Εγγραφή: 11 Ιαν 2004 19:07
Επικοινωνία:

Δημιουργία quiz σε PHP & Mysql με τυχαίες ερωτήσεις

Δημοσίευση από softius » 23 Μαρ 2005 16:59

elavd έγραψε:Πού θα ξέρω δηλαδή που είναι ο pointer του συγκεκριμένου πίνακα, εφόσον, μόλις μου δώσει την 1η απάντηση ο χρήστης, θα πρέπει να πάρω από τη βάση την επόμενη ερώτηση?

Μήπως πρέπει τις ερωτήσεις να τις "τσιμπήσω" όλες μαζί από τη βάση και να τις περάσω και αυτές στο SESSIOn?
Γιατί δεν βάζεις τον pointer στο session? ;)

Άβαταρ μέλους
elavd
Δημοσιεύσεις: 323
Εγγραφή: 16 Σεπ 2004 00:04
Τοποθεσία: Ιωάννινα

Δημιουργία quiz σε PHP & Mysql με τυχαίες ερωτήσεις

Δημοσίευση από elavd » 24 Μαρ 2005 09:23

Υπάρχει τρόπος να γίνεται αυτόματα αυτό, ή θα χρειαστεί να οριστεί από μένα μια νέα μεταβλητή?
Εικόνα

Άβαταρ μέλους
softius
Script Master
Δημοσιεύσεις: 241
Εγγραφή: 11 Ιαν 2004 19:07
Επικοινωνία:

Δημιουργία quiz σε PHP & Mysql με τυχαίες ερωτήσεις

Δημοσίευση από softius » 24 Μαρ 2005 09:37

Όχι δεν γίνεται αυτόματα. Μάλλον θα πρέπει να ορίσεις μία νέα μεταβλητή.

Βέβαια δεν ξέρω κατά πόσο μπορείς να χρησιμοποιήσεις την εντολή next και current, για το array που θα αποθηκεύεις στα sessions έτσι ώστε να γίνεται αυτόματα αυτό που επιθυμείς... Οι ειδήμονες των sessions ας μας δώσουν τα φώτα τους παρακαλώ :)

Άβαταρ μέλους
elavd
Δημοσιεύσεις: 323
Εγγραφή: 16 Σεπ 2004 00:04
Τοποθεσία: Ιωάννινα

Δημιουργία quiz σε PHP & Mysql με τυχαίες ερωτήσεις

Δημοσίευση από elavd » 24 Μαρ 2005 18:56

Παιδιά βοηθήστε λιγάκι please....:(
Εικόνα

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες