Creare un quiz con php

  • Creatore Discussione Creatore Discussione Newbi
  • Data di inizio Data di inizio

Newbi

Nuovo Utente
27 Mag 2014
8
0
0
Ciao a tutti! ^^

Volevo creare un quiz tipo il gioco di reazione a catena 'quando dove come perchè'

Ho creato un file HTML:
<html>
<head>
<center>
</head>
<body style="background-color: WHITESMOKE;">
<table style="text-align: left; width: 573px; height: 1000px;"
bgcolor="LIGHTCYAN" border="1" cellpadding="10" cellspacing="10">
<tbody>
<tr>
<td style="vertical-align: top;">
<form action="quiz1.php" method="post" name="Iscrizione Oline">
<center><strong><span style="font-size: x-large;">COME, QUANDO, DOVE, PERCHE </span></strong></center>
<center></center><hr>
<br>
<center><b>Indizio 1: Quando </b><br><br>

QUANDO L'INSEGNANTE HA FATTO LA SUA LEZIONE
<br><br>Prima risposta: <input name="risposta1" required="" type="text">
<br><br>
<input type="submit" value="Conferma"></center></form>
</td></center>
</tr>
</tbody>
</table>
</body>
</html>

e un file PHP
<html>
<head>
<center>
</head>
<body style="background-color: WHITESMOKE;">
<table style="text-align: left; width: 573px; height: 1000px;"
bgcolor="LIGHTCYAN" border="1" cellpadding="10" cellspacing="10">
<tbody>
<tr>
<td style="vertical-align: top;">
<form action="quiz1.php" method="post" name="Iscrizione Oline">
<center><strong><span style="font-size: x-large;">COME, QUANDO, DOVE, PERCHE </span></strong></center>
<center></center><hr>
<br>
<center><b>Indizio 1: Quando </b><br><br>

QUANDO L'INSEGNANTE HA FATTO LA SUA LEZIONE <br><br>

<?php

if ($_POST['risposta1'] == "gruppi")
{
print 'Risposta Esatta. Hai guadagnato 5 punti!';
}
else
{
print 'Risposta Sbagliata. Ritenta!';
}
?>

</center>
</td>
</tr>
</tbody>
</table>
</body>
</html>

Se inserisco la parola corretta 'gruppi' mi dà 'risposta esatta' in caso contrario 'sbagliata' e questo è molto elementare XD

Non riesco a fare le seguenti cose ed in giro non sono riuscito a trovare nulla o non sono riuscito ad applicarla:
-volevo dare un'altra possibilità di risposta al giocatore e quindi, se la risposta è sbagliata, vorrei creare un nuovo spazio 'seconda possibilità'
- Se anche la seconda possibilità fosse sbagliata vorrei mettere il secondo indizio 'quando' con la solita struttura di sopra (uno spazio dove l'utente può scrivere una parola)

Mi potete per piacere dire quale funzione usare e se possibile farmi un esempio?

Scusate, ma sto iniziando ora ad avvicinarmi a questi linguaggi :/
 
Sotto l'if di controllo nella parte else inserisci un altro form in cui controlli la risposta

Inviato con Tapatalk Free da Android
 
Sotto l'if di controllo nella parte else inserisci un altro form in cui controlli la risposta

Inviato con Tapatalk Free da Android

Ora l'ho messo a punto per bene, però non riesco a far due cose:
- la risposta nel database è segnata come 'MAGIA' se inserisco 'Magia' non la da corretta. Come faccio a farla validare?
- prende una random dal database, ma quando clicco su avanti per andare al passaggio successivo mi passa al secondo indizio di un altra riga! Come faccio a lasciare sempre gli indizi della parola iniziale?

<?php
$username="";
$password="";
$database="";

mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die("Impossibile selezionare il database");
$query="SELECT * FROM quiz ORDER BY RAND() LIMIT 1";
$risultati=mysql_query($query);

$num=mysql_numrows($risultati);

mysql_close();




$i=0;
while ($i < $num) {
$esatta=mysql_result($risultati,$i,"esatta");
$indizio1=mysql_result($risultati,$i,"indizio1");
$indizio2=mysql_result($risultati,$i,"indizio2");
$indizio3=mysql_result($risultati,$i,"indizio3");
$indizio4=mysql_result($risultati,$i,"indizio4");


...
 
per la soluzione basta che trasformi in maiuscolo la risposta data dall'utente prima di fare il controllo. (esiste una funzione php)

è il secondo quesito o memorizzi qualcosa nelle sessioni oppure inserisci un campo hidden


Inviato con Tapatalk Free da Android
 
Grazie!

Provvedo a cerca la funzione ^^

Per la seconda cosa dovrei memorizzare di preciso? O cosa dovrei fare con hidden?
 
O crei una sessione in cui memorizzi l'id dell'indovinello a cui l'utente sta rispondendo. Il metodo hidden é meno sicuro e più complicato

Inviato con Tapatalk Free da Android
 
O crei una sessione in cui memorizzi l'id dell'indovinello a cui l'utente sta rispondendo. Il metodo hidden é meno sicuro e più complicato

Inviato con Tapatalk Free da Android

Mi potresti dire da dove partire per creare la sessione? <

Scusa ma su questo argomento non so molto .-.
 
L'array php $_SESSION può contenere dei dati che inserisci tu e vengono memorizzati nel pc (cookie). Unica condizione é che in ogni pagina in cui usi le sessioni devi scrivere all'inizio session_start();
Ad esempio scrivi $_SESSION[id_quiz]=$id_estratto_a_caso;
Così ogni volta selezioni il quiz in base all'id memorizzato nella variabile $_SESSION[id_quiz] disponibile in tutte le pagine del tuo sito.

Inviato con Tapatalk Free da Android
 
L'array php $_SESSION può contenere dei dati che inserisci tu e vengono memorizzati nel pc (cookie). Unica condizione é che in ogni pagina in cui usi le sessioni devi scrivere all'inizio session_start();
Ad esempio scrivi $_SESSION[id_quiz]=$id_estratto_a_caso;
Così ogni volta selezioni il quiz in base all'id memorizzato nella variabile $_SESSION[id_quiz] disponibile in tutte le pagine del tuo sito.

Inviato con Tapatalk Free da Android

Io avrei scritto questo, non so se può andare bene...

<?php

session_start();

$username="XXX";
$password="XXX";
$database="XXX";

mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die("Impossibile selezionare il database");
$query="SELECT * FROM quiz ORDER BY RAND() LIMIT 1";
$risultati=mysql_query($query);
$num=mysql_numrows($risultati);

mysql_close();


$i=0;
while ($i < $num) {
$id=mysql_result($risultati,$i,"id");
$esatta=mysql_result($risultati,$i,"esatta");
$indizio1=mysql_result($risultati,$i,"indizio1");
$indizio2=mysql_result($risultati,$i,"indizio2");
$indizio3=mysql_result($risultati,$i,"indizio3");
$indizio4=mysql_result($risultati,$i,"indizio4");

$_SESSION['id']=$id;
$_SESSION['esatta']=$esatta;
$_SESSION['indizio1']=$indizio1;
$_SESSION['indizio2']=$indizio2;
$_SESSION['indizio3']=$indizio3;
$_SESSION['indizio4']=$indizio4;


if (isset($_POST[passaggi]))
{

if ($_POST[passaggi]=='zero')
session_start();
{
print '<center>Ecco il primo indizio (quando) e le tre possibilit&agrave;! Se indovinerai giadagnerai 5 galeoni!<br><br><hr><br><i> 1 Indizio: Quando</i><br><br><b>';
print $indizio1=$_SESSION["indizio1"];
print ' </b><br><br><hr><br> Risposta 1 <input type="text" name="risposta1" value="" /><br><br>
Risposta 2 <input type="text" name="risposta2" value="" /><br><br>
Risposta 3 <input type="text" name="risposta3" value="" /><br><br>

<input type="hidden" name="passaggi" value="primo"><br/>
<input type="submit" name="Submit" value="Invia" /><br><br><br>';

}


if ($_POST[passaggi]=='primo')
session_start();
{

if ($returnValue = strtoupper($_POST['risposta1']) == $esatta || $returnValue = strtoupper($_POST['risposta2']) == $esatta || $returnValue = strtoupper($_POST['risposta3']) == $esatta)
{
print '<br><br><center><font color="green">Risposta Esatta. Hai guadagnato 5 punti!</font></center> ' ;
break;
}
if ($returnValue = strtoupper($_POST['risposta1']) != $esatta || $returnValue = strtoupper($_POST['risposta2']) != $esatta || $returnValue = strtoupper($_POST['risposta3']) != $esatta)

{
print ' <center> <b><font color="red">Risposta Sbagliata. Ritenta con un nuovo indizio!</font>
</b><br><br>Ecco il secondo indizio (dove) e le due possibilit&agrave;! Se indovinerai giadagnerai 3 galeoni!<br><br><hr>
<br><i> 1 Indizio: Quando</i><br><br><b>';
print $indizio1=$_SESSION["indizio1"];
print '</b><br><br> <hr><br><i> 2 Indizio: Dove</i><br><br><b>';
print $indizio2=$_SESSION["indizio2"];
print '$</b><br><br><hr><br><br>
Risposta 4: <input name="risposta4" required="" type="text"><br><br>
Risposta 5: <input name="risposta5" required="" type="text"><br><br>
<input type="hidden" name="passaggi" value="secondo"><br/>
<input type="submit" name="Submit" value="Invia" /><br><br><br> ';
}
}

[...]

Ho un problema, praticamente quando vado sulla pagina mi dà tutti gli indizi invece io vorrei che ne desse uno per volta se la risposta è sbagliata. Da cosa potrebbe essere dovuto?
 
In una pagina HTML ho scritto le regole del gioco e inserito un pulsante
Codice:
<center><input type="hidden" name="passaggi" value="zero"><br/>
    <input type="submit" name="Submit" value="INIZIA A GIOCARE!" /></center>

che rimanda alla pagina con tutto il codice sopra
Codice:
if (isset($_POST[passaggi]))
{

if ($_POST[passaggi]=='zero')
session_start();
{
print '<center>Ecco il primo indizio (quando) e le tre possibilit&agrave;! Se indovinerai giadagnerai 5 galeoni!<br><br><hr><br><i> 1 Indizio: Quando</i><br><br><b>'; 

[...]
 

Discussioni simili