- Home
- Categorie
- Coding e Sistemistica
- PHP
- Scrive due volte lo stesso utente
-
Scrive due volte lo stesso utente
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.
posto il file....
<?php
include("config.inc.php");Aquisisce i dati dal file config.inc '$db_host, $db_user, $db_password'
$varNome="Brambilla";
#$varNome=$_POST["nome"];
$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();}
echo("query effettuata corretamente");
$strSQL="INSERT INTO interrogazioni(id_alunno,voto,descrizione)
VALUES('$id_ricavato','$varVoto','$varDescrizione')";
$risultato=mysql_query($strSQL);
?>
grazie e ciao a tutti
-
risolto, grazie comunque.