Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    84

    modifiche tabelle databse da form in php

    Salve a tutti.
    Sto creando un sito per la mia scuola e in pratica ho creato un form che prende su i dati di ogni alunno e poi li deve salvare su un database che ho creato.
    Il mio problema sta nel non salvare dati doppi.
    Praticamente se per sbaglio l'utente dovesse inserire stesso nome, cognome, classe, ecc...il programma non deve inserire questi dati ma inviare un msg del tipo: "Alunno già presente nel database!"

    Ho provato facendo una query al databse ma è come se non lo leggesse mai. Cioè se tipo faccio:

    $query="SELECT * FROM studenti WHERE nome=$nome, cognome=$cognome,classe=$classe";
    mysql_query($query,$conn) or die ("selezione fallita");

    il risultato è in qualsiasi caso "selezione fallita".

    mentre quando faccio:

    $query="INSERT INTO studenti (nome, cognome, classe) VALUES('$nome','$cognome','$classe')";
    mysql_query($query,$conn) or die ("selezione fallita");

    il risultato è un inserimento nel database.
    Quindi perchè con l'insert me lo fa mentre col select no?

    Grazie in anticipo per le risposte!

  2. #2
    Ciao sandalf.

    Fai attenzione che nella select
    [list=1][*] hai omesso gli apici ' attorno ai valori.[*] non hai costruito una where condiction concatenando espressioni con operatori booleani (AND, OR) ma con la ,[/list=1]

    Prova questo codice

    Codice PHP:
    $query="SELECT * FROM studenti WHERE nome='$nome' AND cognome='$cognome' AND classe='$classe'"
    Cmq fai attenzione perchè per come hai progettato rischi di perdere i casi di omonimia!
    A Napoli 2 Gennaro Esposito nella stessa classe potrebbero pure capitare!

    Ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    36
    Tenendo in santa considerazione la risposta e le precisazioni di EUMENE ti consiglio di aggiungere nel form la data di nascita e se non ti pare troppo il codice fiscale (è uguale alle impronte digitali) così i casi omonimia dovrebbero rasentare lo zero.........
    Ti posto il codice seguente l'ho buttato giù in fretta, non testato, guarda se ti va bene.....

    $query=("SELECT * FROM studenti WHERE studenti.nome='$nome' AND studenti.cognome='$cognome' AND studenti.classe='$classe' LIMIT 1 ");

    $result = mysql_query ($query)
    or die (mysql_error()) ;

    if (mysql_num_rows($result) > 0) {
    $stringa="studente già registrato !";
    echo "<script language=\"JavaScript\">\n";
    echo "alert(\"$stringa\");\n";
    echo "</script>";
    } else {
    $query=("INSERT INTO studenti (nome, cognome, classe) VALUES('$nome','$cognome','$classe'))";

    $result = mysql_query ($query)
    or die (mysql_error()) ;

    if (mysql_affected_rows($result) > 0) {
    $stringa="effettuata la registrazione del nuovo studente !";
    echo "<script language=\"JavaScript\">\n";
    echo "alert(\"$stringa\");\n";
    echo "</script>";
    }
    .................................................. ...............

  4. #4
    Aggiungo che poi, una volta individuato il parametro che evita i doppioni nel DB, ma permette l'omonimia tra due persone, sarebbe consigliabile definire la colonna del DB che lo contiene come UNIQUE.

    Fai riferimento al manuale ufficiale di MySQL (o del Db che usi nel tuo progetto) per la giusta sintassi e per catchare gli eventuali messaggi di errore dovuti a doppioni.

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    84
    Fai attenzione che nella select

    1. hai omesso gli apici ' attorno ai valori.
    2. non hai costruito una where condiction concatenando espressioni con operatori booleani (AND, OR) ma con la ,
    Risposte:
    1)scusa ma nella scritura mi ero dimenticato degli apici. Comunque nel codice gli ho messi
    2)proverò così. Non sapevo che si dovevano mettere AND/OR.

    Grazie per la risposta

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    84
    Bn ho provato!
    Funziona!!!!!

    Grazie a tutti!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.