• User

    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();}

    #else

    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


  • User

    risolto, grazie comunque.