Ciao a tutti, sono arrivato alla frutta, non riesco ad uscire da questo problema, aiutatemi vi prego:
ho un file php che deve aggiungere uno studente nel db, se non è presente, mentre, se è gia presente deve inserire il voto relativo alla sua interrogazione.
Il problema è che, se lo studente non è presente lo inserisce due volte, mentre, se è già presente inserisce due volte il voto relativo alla sua interrogazione.
il codice relativo al salvataggio....
<?php
include("config.inc.php");
#
# Aquisisce i dati dal file config.inc '$db_host, $db_user,
#
$db_password'
$varNome="Brambilla";
#
# stringa di prova da eliminare quando il nome proviene dal form
#
#$varNome=$_POST["nome"];
#
# stringa da inserire quando il nome proviene dal form
#
$varVoto=$_POST["voto"];
$varDescrizione=$_POST["descrizione"];
#
# acquisisce i dati dal form html e li inserisce nelle
# variabili $varNome, £varVoto e $varDescrizione
#
$conn=mysql_connect("$db_host", "$db_user", "$db_password");
#
# Collegamento al server mySQL che ritorna true o false nella
# variabile $conn se c'è stato il collegamento oppure no.
#
if(!$conn){
echo("errore durante la connessione a mysql");
exit();}
else{
echo("connessione avvenuta correttamente
");
}
#
mysql_select_db($db_name, $conn) OR die ("Errore nella selezione del db: "
. mysql_error());
#
# Seleziona la connessione e il database sul quale si deve lavorare e
# riporta l'eventuale errore del db
#
$strSQL="SELECT id_alunno FROM alunni WHERE nome='$varNome'";
#
# Costruzione della query da passare al db tramite la variabile $strSQL
#
$risultato=mysql_query($strSQL, $conn)or die("Errore nella query: "
. mysql_error());
#
# Restituisce un identificativo del risultato (cioè un'altra variabile di tipo
# resource), che servirà successivamente, se la query è andata a buon fine;
# se invece MySql ha rilevato degli errori, la funzione restituisce FALSE;
#
$riga=mysql_fetch_array($risultato);
#
# Legge le righe dal database restituendo l'id alunno
#
$varInsVoto=0;
if($riga==false and $varInsVoto==0){
$verifica="riga = false
";
echo $verifica;
echo "VarInsVoto: ".$varInsVoto."
";
echo "Risultato: " .mysql_num_rows($risultato). "
";
$strSQL="INSERT INTO alunni (nome)VALUES('$varNome')";
$varInsVoto=1;
$risultato=mysql_query($strSQL,$conn);
if(! mysql_query($strSQL)){
echo("Errore nel comando INSERT");
exit();}
else{
echo("Studente $varNome aggiunto corretamente
");
}
}
#
# se l'alunno è presente nel database
#
else{
$verifica="if riga = true
";
echo $verifica;
$strSQL="SELECT id_alunno FROM alunni WHERE nome='$varNome'";
$risultato=mysql_query($strSQL);
$riga=mysql_fetch_array($risultato);}
#
# Legge le righe dal db restituendo l'id_alunno relativo al nome immesso
#
while($riga){
echo("id alunno: ".$riga["id_alunno"]."
");
$id_ricavato=$riga["id_alunno"];
$riga=mysql_fetch_array($risultato);}
#
# ed inserisce l'interrogazione
#
$strSQL="INSERT INTO interrogazioni(id_alunno, voto, descrizione)
VALUES('$id_ricavato','$varVoto','$varDescrizione' )";
$risultato=mysql_query($strSQL);
if(! mysql_query($strSQL)){
echo("Errore nel comando INSERT");
exit();}
else{
echo "VarInsVoto: ".$varInsVoto."
";
echo("Studente $varNome già presente, aggiunto voto e descrizione
");
$strSQL="SELECT id_alunno FROM alunni WHERE nome='$varNome'";
$risultato=mysql_query($strSQL);
$riga=mysql_fetch_array($risultato);
$id_ricavato=$riga["id_alunno"];
}
#if(! mysql_query($strSQL)){
# echo("Errore nel comando SELECT");
# exit();}
#else
# echo("query effettuata corretamente");
# $strSQL="INSERT INTO interrogazioni(id_alunno,voto,descrizione)
# VALUES('$id_ricavato','$varVoto','$varDescrizione' )";
# $risultato=mysql_query($strSQL);
?>
grazie.