View Full Version : [PHP] Controllo vincolo UNIQUE
phantom85
23-08-2008, 15:39
Ciao a tutti,
nel sito web che sto realizzando ho un form di registrazione. Tra i vari campi c'è quello login che corrisponde ad un attributo di una tabella del database. Questo attributo in postgresql è stato realizzando con il vincolo UNIQUE in modo che non ci siano login uguali come succede per tutti i siti.
Ora se dalla pagina web vado a registrare un nuovo utente ed inserisco una login già presente nel database, questo utente non viene creato ed è quello che voglio. Solo che non so come mettere il controllo nella pagina web in php.
Ovvero vorrei mettere un messaggio che, se si viola il vincolo UNIQUE, dica "login già presente o qualcosa del genere". Come posso fare??:help:
avastreg
24-08-2008, 01:10
Ciao a tutti,
nel sito web che sto realizzando ho un form di registrazione. Tra i vari campi c'è quello login che corrisponde ad un attributo di una tabella del database. Questo attributo in postgresql è stato realizzando con il vincolo UNIQUE in modo che non ci siano login uguali come succede per tutti i siti.
Ora se dalla pagina web vado a registrare un nuovo utente ed inserisco una login già presente nel database, questo utente non viene creato ed è quello che voglio. Solo che non so come mettere il controllo nella pagina web in php.
Ovvero vorrei mettere un messaggio che, se si viola il vincolo UNIQUE, dica "login già presente o qualcosa del genere". Come posso fare??:help:
a parte il vincolo UNIQUE del database (che è utile a mantenerti l'integrità della tabella) basta semplicemente che lato php fai una select sul dato di login (username?) e vedi cosa ti restituisce: se c'e' una riga vuol dire che il login c'e' già. Altrimenti gestisci la risposta che ti da postgres nell'inserimento (dato che un inserimento non corretto viola il vincolo UNIQUE, la query non andrà a buon fine).
phantom85
24-08-2008, 08:53
Alla fine ho fatto questo e pare funzioni!
$sql_nick_check = pg_query("SELECT login FROM utente WHERE login='$nick'");
$nick_check = pg_num_rows($sql_nick_check);
if($nick_check > 0){
echo "Il nickname che hai scelto risulta gia' registrato. Inserisci un diverso nickname!<br />";
unset($nick);
exit();
}
$nick è la variabile che memorizza la login che inserisce l'utente...
avastreg
24-08-2008, 11:31
Alla fine ho fatto questo e pare funzioni!
$sql_nick_check = pg_query("SELECT login FROM utente WHERE login='$nick'");
$nick_check = pg_num_rows($sql_nick_check);
if($nick_check > 0){
echo "Il nickname che hai scelto risulta gia' registrato. Inserisci un diverso nickname!<br />";
unset($nick);
exit();
}
$nick è la variabile che memorizza la login che inserisce l'utente...
benissimo, è anche la strada da seguire, vincolo UNIQUE o meno nel database :)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.