Classifica

ciao,
da quello che ho capito tu vuoi passare dalla
pagina php.php alla pagina classifica.php
il valore del risultato (numero)
allora la pagina php.php


PHP:
<?php
if(!isset($_SESSION)){$session_start();} 
$risposta_corretta_domanda1=3; 

$frase1=isset($_POST['R1'])?$_POST['R1']:""; 
$risultato = "";      // variabile del risultato 

if($frase1 == $risposta_corretta_domanda1) {  
$risultato++;  
echo "<b>Risposta alla domanda 1</b> IL mio nome è:<b><u><i><font color= green>ESATTA!</font></b></u></i><br><br>";  
} else { 
if ($frase1 == "") echo "<b>Domanda 1</b> Il mio nome è: <b><u><i>NON HAI RISPOSTO</b></u></i><br><br>"; 
else echo "<b>Risposta alla domanda 1</b> Il mio nome è: <b><u><i><font color= red>ERRATA!</font></b></u></i> <br>RIPROVA</font><br><br>"; 
}  
//valorizzi la sessione
//se vuoi passare solo il valore numerico
$_SESSION['risultato']=$risultato;
$tot = ($risultato == 1) ? "$risultato punto" : "$risultato punti";
//se invece vuoi passare tutta la frase la sessione va valorizzata qui
$_SESSION['risultato']=$tot;
//una delle due devi togierla o cambiare il nome della 2° sessione
//esempio $_SESSION['frase']=$tot;
echo "Hai totalizzato $tot";   
?>
a questo punto hai valorizzato le sessioni, ora nella pagina classifica.php devi leggerle
PHP:
<?php
if(!isset($_SESSION)){$session_start();} 

$risultato_da_php=$_SESSION['risultato']; 
//se usi una sola sessione nella pagina php.php
//se ne usi due puoi prelevarle entrambe esempio
//$risultato_da_php=$_SESSION['risultato']; 
//$frase_da_php=$_SESSION['frase']; 
// a questo punto utilizzi le variabili dove vuoi
//anche se non capisco a che ti servano
//in quanto il risultato lo prendi da database (tot ?)
$query=mysql_query("SELECT cognome_utente, nome_utente FROM utenti ORDER BY tot"); 
$utenti=mysql_num_rows($query); 
echo "<table>";   
//non devi usare l'array globale $_post  
while($utenti=mysql_fetch_array($query)){     
$cognome_utente=$utenti['cognome_utente'];   
$nome_utente=$utenti['nome_utente'];   
$tot=$utenti['tot']; 
$tot = ($risultato == 1) ? "$risultato punto" : "$risultato punti"; 
echo "<tr> 
    <td>$cognome_utente</td>  
    <td>$nome_utente</td>  
     <td>Hai totalizzato $tot</td> 
    </tr>";   
} //fine del while  
echo "</table><br><br>";    
?>

p.s.
leggi anche i commenti negli script
 
Grazie Borgo!

Però la pagina classifica.php mi dà questo errore
Fatal error: Call to undefined function: () in C:\

Sarebbe questa riga......

if(!isset($_SESSION)){$session_start();}

Grazie!
 
ciao
scsa errore di copia/incolla

if(!isset($_SESSION)){session_start ();}

togli $


p.s.
simo fortunati che a quest'ora i bambini sono a sQuola, altrimenti prendevamo parole....
 
:) Figurati Borgo, anzi grazie per l'aiuto, ho cambiato ma non mi mette il risultato nella pagina classifica.php

Ti posto gli scritp

Pagina php.php
PHP:
<?php

require('config.php');

if(!isset($_SESSION['login']))
{
header('Location: index.php');
exit;
}
    $default = mysql_fetch_array(mysql_query("SELECT cognome_utente, nome_utente FROM utenti WHERE id = '{$_SESSION['login']}' LIMIT 1"));
?>

<?php

$db_host = '';
$db_utente = 'fabrizio';
$db_password = '';
$db_nomedb = '';

$dbh=mysql_connect ($db_host, $db_utente, $db_password) or die ('Errore nella stringa di connessione al database: '.mysql_error());
mysql_select_db($db_nomedb);
?>

<?php
if(!isset($_SESSION)){session_start();}  

$risposta_corretta_domanda1=3;
$risposta_corretta_domanda2=1;
$risposta_corretta_domanda3=4;
$risposta_corretta_domanda4=1;

$frase1=isset($_POST['R1'])?$_POST['R1']:"";
$frase2=isset($_POST['R2'])?$_POST['R2']:"";
$frase3=isset($_POST['R3'])?$_POST['R3']:""; 
$frase4=isset($_POST['R4'])?$_POST['R4']:""; 
$punteggio = "";      // variabile del risultato

if($frase1 == $risposta_corretta_domanda1) { 
$punteggio++; 
echo "<b>Risposta alla domanda 1</b>: <b><u><i><font color= green>ESATTA!</font></b></u></i><br><br>"; 
} else {
if ($frase1 == "") echo "<b>Domanda 1</b>: <b><u><i>NON HAI RISPOSTO</b></u></i><br><br>";
else echo "<b>Risposta alla domanda 1</b>: <b><u><i><font color= red>ERRATA!</font></b><br><b>RIPROVA</font><br><br>";
} 

 
if($frase2 == $risposta_corretta_domanda2) { 
$punteggio++; 
echo "<b>Risposta alla domanda 2</b>: <b><u><i><font color= green>ESATTA!</font></b></u></i><br><br>";
} else {
if ($frase2 == "") echo "<b>Domanda 2</b>: <b><u><i>NON HAI RISPOSTO</b></u></i><br><br>";
else echo "<b>Risposta alla domanda 2</b>: <b><u><i><font color= red>ERRATA!</font></b><br><font color= red>RIPROVA</font><br><br>";
} 
 
if($frase3 == $risposta_corretta_domanda3) { 
$punteggio++; 
echo "<b>Risposta alla domanda 3</b>: <b><u><i><font color= green>ESATTA!</font></b></u></i><br><br>";
} else {
if ($frase3 == "") echo "<b>Domanda 3</b>: <b><u><i>NON HAI RISPOSTO</b></u></i><br><br>";
else echo "<b>Risposta alla domanda 3</b>: <b><u><i><font color= red>ERRATA!</font color= red>RIPROVA</font><br><br>";
} 

if($frase4 == $risposta_corretta_domanda4) { 
$punteggio++; 
echo "<b>Risposta alla domanda 4</b>: <b><u><i><font color= green>ESATTA!</font></b></u></i><br><br>";
} else {
if ($frase4 == "") echo "<b>Domanda 4</b>: <b><u><i>NON HAI RISPOSTO</b></u></i><br><br>";
else echo "<b>Risposta alla domanda 4</b>: <b><u><i><font color= red>ERRATA!</font><font color= red>RIPROVA</font>";
} 
 
$tot = ($punteggio == 1) ? "$punteggio punto" : "$punteggio punti";
$_SESSION['punteggio']=$tot; 
echo "Hai totalizzato $tot";  
?>

Al posto di risultato ho preferito mettere punteggio aggiornando ovviamente anche il database.

Pagina classifica.php

PHP:
<?php

require('config.php');

if(!isset($_SESSION['login']))
{
header('Location: index.php');
exit;
}
    $default = mysql_fetch_array(mysql_query("SELECT cognome_utente, nome_utente FROM utenti WHERE id = '{$_SESSION['login']}' LIMIT 1"));
?>

<?php 

$db_host = '';
$db_utente = '';
$db_password = '';
$db_nomedb = '';

$dbh=mysql_connect ($db_host, $db_utente, $db_password) or die ('Errore nella stringa di connessione al database: '.mysql_error());
mysql_select_db($db_nomedb);
?>

<?php
if(!isset($_SESSION)){session_start ();}
$punteggio_da_php=$_SESSION['punteggio'];   

$query=mysql_query("SELECT cognome_utente, nome_utente FROM utenti ORDER BY tot");

$utenti=mysql_num_rows($query);

echo "<table>";  
//non devi usare l'array globale $_post 
while($utenti=mysql_fetch_array($query)){  

  
$cognome_utente=$utenti['cognome_utente'];  
$nome_utente=$utenti['nome_utente'];  
$tot=$utenti['tot'];
$tot = ($punteggio == 1) ? "$punteggio punto" : "$punteggio punti";


echo "<tr> 
    
    <td>$cognome_utente</td> 
    <td>$nome_utente</td> 
     <td>Hai totalizzato $tot</td>
    
    </tr>";  
} //fine del while 
echo "</table><br><br>";   
?>

Grazie per la pazienza Borgo!!!
 
ciao,
guarda che session start deve essere messa prima di tutto cioè


PHP:
<?php //riga 1
if(!isset($_SESSION)){session_start ();} //riga 2 o anche sulla stesa riga 1

require('config.php'); 
//eccetera...................

eliminandola dove l'hai messa tu

cuomunque dopo che hai corretto prova e, se non funzia ancora, scrivi un bel var_dump

PHP:
//ecc.....
var_dump($_SESSION['punteggio']);//poi da togliere

$punteggio_da_php=$_SESSION['punteggio'];
//ecc.......

e dimmi cosa risulta
 
PHP:
<?php
if(!isset($_SESSION)){session_start ();}

require('config.php');

if(!isset($_SESSION['login']))
{
header('Location: index.php');
exit;
}
    $default = mysql_fetch_array(mysql_query("SELECT cognome_utente, nome_utente FROM utenti WHERE id = '{$_SESSION['login']}' LIMIT 1"));


?>

<?php 

$db_host = '';
$db_utente = '';
$db_password = '';
$db_nomedb = '';

$dbh=mysql_connect ($db_host, $db_utente, $db_password) or die ('Errore nella stringa di connessione al database: '.mysql_error());
mysql_select_db($db_nomedb);
?>

<?php 

$query=mysql_query("SELECT cognome_utente, nome_utente FROM utenti ORDER BY tot");

$utenti=mysql_num_rows($query);

echo "<table>";  
//non devi usare l'array globale $_post 
while($utenti=mysql_fetch_array($query)){  

  
$cognome_utente=$utenti['cognome_utente'];  
$nome_utente=$utenti['nome_utente'];  
$tot=$utenti['tot'];
$tot = ($punteggio == 1) ? "$punteggio punto" : "$punteggio punti";
var_dump($_SESSION['punteggio']);//da togliere
$punteggio_da_php=$_SESSION['punteggio'];  

echo "<tr> 
    
    <td>$cognome_utente</td> 
    <td>$nome_utente</td> 
     <td>Hai totalizzato $tot</td>
    
    </tr>";  
} //fine del while 
echo "</table><br><br>";   
?>

Mi dà questo Borgo:

string(1) "1" Pinco Pallo Hai totalizzato punti
string(1) "1" Palla Cesare Hai totalizzato punti
string(1) "1" Cagnone Fabio Hai totalizzato punti
 
ciao
verifica una cosa:
nella pagina php.php hai valorizzato la sessione chiamata risultato

$_SESSION['risultato']=$risultato;

mentre nella pagina classifica.php usi una sessione chiamata punteggio

$punteggio_da_php=$_SESSION['punteggio'];

verifica che i nomi della sessione di cui vuoi trasmettere/leggere il valore abbiano lo stesso nome
 
Sì hanno tutti lo stesso valore

Pagina php.php
PHP:
<?php
if(!isset($_SESSION)){session_start();}  

require('config.php');

if(!isset($_SESSION['login']))
{
header('Location: index.php');
exit;
}
    $default = mysql_fetch_array(mysql_query("SELECT cognome_utente, nome_utente FROM utenti WHERE id = '{$_SESSION['login']}' LIMIT 1"));

?>

<?php

$db_host = '';
$db_utente = '';
$db_password = '';
$db_nomedb = '';

$dbh=mysql_connect ($db_host, $db_utente, $db_password) or die ('Errore nella stringa di connessione al database: '.mysql_error());
mysql_select_db($db_nomedb);
?>

<?php
$risposta_corretta_domanda1=3;
$risposta_corretta_domanda2=1;
$risposta_corretta_domanda3=4;
$risposta_corretta_domanda4=1;

$frase1=isset($_POST['R1'])?$_POST['R1']:"";
$frase2=isset($_POST['R2'])?$_POST['R2']:"";
$frase3=isset($_POST['R3'])?$_POST['R3']:""; 
$frase4=isset($_POST['R4'])?$_POST['R4']:""; 
$punteggio = "";      // variabile del risultato

if($frase1 == $risposta_corretta_domanda1) { 
$punteggio++; 
echo "<b>Risposta alla domanda 1</b>: <b><u><i><font color= green>ESATTA!</font></b></u></i><br><br>"; 
} else {
if ($frase1 == "") echo "<b>Domanda 1</b>: <b><u><i>NON HAI RISPOSTO</b></u></i><br><br>";
else echo "<b>Risposta alla domanda 1</b>: <b><u><i><font color= red>ERRATA!</font></b>RIPROVA</font><br><br>";
} 

 
if($frase2 == $risposta_corretta_domanda2) { 
$punteggio++; 
echo "<b>Risposta alla domanda 2</b>: <b><u><i><font color= green>ESATTA!</font></b></u></i><br><br>";
} else {
if ($frase2 == "") echo "<b>Domanda 2</b>: <b><u><i>NON HAI RISPOSTO</b></u></i><br><br>";
else echo "<b>Risposta alla domanda 2</b>: <b><u><i><font color= red>ERRATA!</font></b></u></i> <br><br><font color= red>RIPROVA</font><br><br>";
} 
 
if($frase3 == $risposta_corretta_domanda3) { 
$punteggio++; 
echo "<b>Risposta alla domanda 3</b>: <b><u><i><font color= green>ESATTA!</font></b></u></i><br><br>";
} else {
if ($frase3 == "") echo "<b>Domanda 3</b>: <b><u><i>NON HAI RISPOSTO</b></u></i><br><br>";
else echo "<b>Risposta alla domanda 3</b>: <b><u><i><font color= red>ERRATA!</font></b></u></i> <br><b><font color= red>RIPROVA</font><br><br>";
} 

if($frase4 == $risposta_corretta_domanda4) { 
$punteggio++; 
echo "<b>Risposta alla domanda 4</b>: <b><u><i><font color= green>ESATTA!</font></b></u></i><br><br>";
} else {
if ($frase4 == "") echo "<b>Domanda 4</b>: <b><u><i>NON HAI RISPOSTO</b></u></i><br><br>";
else echo "<b>Risposta alla domanda 4</b>: <b><u><i><font color= red>ERRATA!</font></b></u></i> <br><br><font color= red>RIPROVA</font><br><br>";
} 
 
$tot = ($punteggio == 1) ? "$punteggio punto" : "$punteggio punti";
$_SESSION['punteggio']=$punteggio; 
echo "Hai totalizzato $tot";  
?>

Pagina classifica.php
PHP:
<?php
if(!isset($_SESSION)){session_start ();}

require('config.php');

if(!isset($_SESSION['login']))
{
header('Location: index.php');
exit;
}
    $default = mysql_fetch_array(mysql_query("SELECT cognome_utente, nome_utente FROM utenti WHERE id = '{$_SESSION['login']}' LIMIT 1"));


?>

<?php 

$db_host = '';
$db_utente = '';
$db_password = '';
$db_nomedb = '';

$dbh=mysql_connect ($db_host, $db_utente, $db_password) or die ('Errore nella stringa di connessione al database: '.mysql_error());
mysql_select_db($db_nomedb);
?>

<?php 

$query=mysql_query("SELECT cognome_utente, nome_utente FROM utenti ORDER BY tot");

$utenti=mysql_num_rows($query);

echo "<table>";  
//non devi usare l'array globale $_post 
while($utenti=mysql_fetch_array($query)){  

  
$cognome_utente=$utenti['cognome_utente'];  
$nome_utente=$utenti['nome_utente'];  
$tot=$utenti['tot'];
$tot = ($punteggio == 1) ? "$punteggio punto" : "$punteggio punti";

$punteggio_da_php=$_SESSION['punteggio'];  

echo "<tr> 
    
    <td>$cognome_utente</td> 
    <td>$nome_utente</td> 
     <td>Hai totalizzato $tot</td>
    
    </tr>";  
} //fine del while 
echo "</table><br><br>";   
?>

Grazie!
 
Borgo ora facendolo mi dà:

int(3) Pinco Pallo Hai totalizzato punti
int(3) altro nome Hai totalizzato punti
int(3) altro nome Hai totalizzato punti

Io facendo il quiz ho totalizzato 3 punti...non sò se significhi 3 punti (int3)

Realizzo un punto e mi dà

string(1) "1" Pinco Pallo Hai totalizzato punti
string(1) "1" altro nome Hai totalizzato punti
string(1) "1" altro nome Hai totalizzato punti
 
ciao, se non ho capito male deve apparirti qui

<td>$cognome_utente</td>
<td>$nome_utente</td>
<td>Hai totalizzato $tot</td>

se è così inverti e rinomina

PHP:
//..............
$tot = ($punteggio == 1) ? "$punteggio punto" : "$punteggio punti"; 
$punteggio_da_php=$_SESSION['punteggio'];
//...............

in modo da stampare dove indicato in rosso (sopra)

PHP:
//...........
$punteggio=$_SESSION['punteggio'];
$tot = ($punteggio == 1) ? "$punteggio punto" : "$punteggio punti";
//..........
 
Esattamente Borgo vorrei vedere cognome, nome e totale punti ma non mi vengono fuori i punti totalizzati...

PHP:
<?php
if(!isset($_SESSION)){session_start();}  

require('config.php');

if(!isset($_SESSION['login']))
{
header('Location: index.php');
exit;
}
    $default = mysql_fetch_array(mysql_query("SELECT cognome_utente, nome_utente FROM utenti WHERE id = '{$_SESSION['login']}' LIMIT 1"));



 red>RIPROVA</font><br><br>";
} 

$tot = ($punteggio == 1) ? "$punteggio punto" : "$punteggio punti";  
$punteggio=$_SESSION['punteggio'];
echo "Hai totalizzato $tot";  
?>

Ho tagliato il codice tanto l'ho già postato...non mi viene sigh!!!
 
ciao

}

$tot = ($punteggio == 1) ? "$punteggio punto" : "$punteggio punti";
$punteggio=$_SESSION['punteggio'];
echo "Hai totalizzato $tot";
?>:gun:


hai cambiato il nome MA non hai invertito le righe

$punteggio=$_SESSION['punteggio'];
$tot = ($punteggio == 1) ? "$punteggio punto" : "$punteggio punti";
echo "Hai totalizzato $tot";
 
Prima ho anche provato ad invertirle ma mi dava ESATTA (esempio) senza dirmi il risultato alla fine...quello da trasmettere alla classifica.php
 
ciao
se al posto del punteggio ti da ESATTA, vuol dire che nel foglio php.php gli attribuisci il valore ESATTA e non il punteggio.
verifica che valore gli attribuisci
 
ciao (forse), mi sono accorto dove si annida l'errore

nella pagina php.php fai

PHP:
$risultato = "";      // variabile del risultato

poi dentro gli if per la verifica delle frasi

$risultato++;

d'accordo che php è molto lasco nella conversione dei tipi di variabile, ma prova a mettere

PHP:
$risultato = 0;      // variabile del risultato
 
No, accanto alle domande mi dice ESATTA o ERRATA poi alla fine delle quattro domande mi dà il punteggio tramite la variabile $tot e funziona perfettamente.

Perchè non lo dà anche su classifica.php? eppure le sessioni le abbiamo fatte no?
 
Non è che l'errore stà nel db?

Ho una tabella "utenti" con i campi id primary autoincrement; cognome_utente; nome_utente; tot; punteggio.
 
ciao,
proviamo a ricapitolare
1. nella pagina php.php

//............
$tot = ($risultato == 1) ? "$risultato punto" : "$risultato punti";
echo "Hai totalizzato $tot";
//.............

ti risulta a monitor (es)

Hai totalizzato 4 punti

oppure

Hai totalizzato 1 punto

se si, allora prima valorizziamo la sessione con il solo valore numerico,
visto che la frase hai totalizzato puoi scriverla dopo

PHP:
//...............
$_SESSION['punteggio']=$risultato;
$tot = ($risultato == 1) ? "$risultato punto" : "$risultato punti"; 
echo "Hai totalizzato $tot";    
//.............

a questo punto nella sessione hai il valore numerico del risultato
(comunque metti all'inizio $risultato=0; e non =""; altrimenti la sessione puo rimanere "")

2. andiamo alla pagina classifica.php e leggiamo la sessione nel punto in cui serve

PHP:
//.................
$tot=$utenti['tot']; 
$punteggio=$_SESSION['punteggio'];
//var_dump($_SESSION['punteggio'];
$tot = ($punteggio == 1) ? "$punteggio punto" : "$punteggio punti"; 
echo "<tr>  
    <td>$cognome_utente</td>  
    <td>$nome_utente</td>  
     <td>Hai totalizzato $tot</td> 
    </tr>";   
} //fine del while  
echo "</table><br><br>";    
//.....................

a questo punto non c'è ragione che non ti stampi la tabella (es)

Pinco Pallo Hai totalizzato 4 punti
 
Non è che l'errore stà nel db?
non vedo cosa c'entri il db, stai passando il valore in sessione, a meno che nel labirinto del tuo script in qualche punto non estrai il valore del campo tot o punteggio e lo metta in qualche variabile che ha lo stesso nome di quello che riempi col valore della sessione
 

Discussioni simili