|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Aug 2002
Città: Svizzera
Messaggi: 2715
|
[PHP] Miglioramento script
Ciao ragazzi, ho scritto questo script che inserisce dei dati trasmetti tramite form in un database mysql.
Mi chiedevo, come posso aggiungere un controllo se i dati inseriti sono già esistenti all'interno del database? ps: ho aggiunto un controllo sul nome incluso dentro una funzione e richiamato per valutarne il risultato, true o false, ho fatto male? vedo che lo script funziona. <html> <head> <body> come vi sembra? <? require 'connect.php'; require 'config.php'; function controllodati() { if ( empty($_POST['nome']) ) die ('Il campo nome è obbligatorio'); } $query= "insert into glossario (nome, descrizione) values ('{$_POST['nome']}', '{$_POST['descrizione']}')"; $result= mysql_query($query); if(controllodati()==true) { die ('impossibile continuare'); } else { if(!$result) { die ('Inserimento non riuscito'.mysql_error()); } } mysql_close(); echo 'Inserimento avvenuto con successo'; ?> <br> <a href="form.html"> Torna al form di inserimento </a> <br> <a href="leggi.php"> Visualizza tutti i valori esistenti nel database </a> </head> </body> </html>
__________________
Amico Fido l’app che protegge il tuo cane, sempre. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Feb 2010
Messaggi: 466
|
non ha senso fare il controllo dei dati DOPO aver gia eseguito la query sul database
e poi la tua funzione di controllo non ritorna un valore TRUE/FALSE
__________________
I robot hanno scintillanti fondoschiena metallici che non dovrebbero essere baciati. |
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Aug 2002
Città: Svizzera
Messaggi: 2715
|
Quote:
Mi spiegheresti come modificare la funzione? scusa ma sono alle prima armi. grazie
__________________
Amico Fido l’app che protegge il tuo cane, sempre. |
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Aug 2002
Città: Svizzera
Messaggi: 2715
|
così?
<html> <head> <body> <? require 'connect.php'; require 'config.php'; function controllodati() { if ( empty($_POST['nome']) ) { die ('impossibile'); ; } } controllodati(); $query= "insert into glossario (nome, descrizione) values ('{$_POST['nome']}', '{$_POST['descrizione']}')"; $result= mysql_query($query); if(!$result) { die ('Inserimento non riuscito'.mysql_error()); } mysql_close(); echo 'Inserimento avvenuto con successo'; ?> <br> <a href="form.html"> Torna al form di inserimento </a> <br> <a href="leggi.php"> Visualizza tutti i valori esistenti nel database </a> </head> </body> </html>
__________________
Amico Fido l’app che protegge il tuo cane, sempre. Ultima modifica di dbp86 : 17-02-2011 alle 14:08. |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Feb 2010
Messaggi: 466
|
prova con qualcosa del genere ...
Codice PHP:
__________________
I robot hanno scintillanti fondoschiena metallici che non dovrebbero essere baciati. |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Aug 2002
Città: Svizzera
Messaggi: 2715
|
grazie infinite adesso studierò il tuo metodo però prima vorrei chiederti una cosa ( devo capire bene i miei errori ) approfittando della tua gentilezza.
perchè così mi ritorna sempre la scritta impossibile??? il simbolo || non significa or? <? require 'connect.php'; require 'config.php'; function controllodati() { if ( empty($_POST['nome']) || "SELECT * FROM glossario WHERE nome='{$_POST['nome']}'") { die ('impossibile'); } } controllodati(); $query= "insert into glossario (nome, descrizione) values ('{$_POST['nome']}', '{$_POST['descrizione']}')"; $result= mysql_query($query); if(!$result) { die ('Inserimento non riuscito'.mysql_error()); } mysql_close(); echo 'Inserimento avvenuto con successo'; ?>
__________________
Amico Fido l’app che protegge il tuo cane, sempre. |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Feb 2010
Messaggi: 466
|
la condizione del tuo if si verifica se anche una delle due tue condizione risulta vera.
if ( empty($_POST['nome']) ) , puo risultare sia vera che falsa in base all'argomento passato a empty , quindi è corretto usarlo . if ( "SELECT * FROM glossario WHERE nome='{$_POST['nome']}'") risulta sempre verificata perche in PHP una stringa che contiene testo è vera a meno che la stringa non contenga uno 0 quindi ora capisci da solo che la condizione del tuo IF è sempre verificata quindi ti ritorna la scritta impossibile.
__________________
I robot hanno scintillanti fondoschiena metallici che non dovrebbero essere baciati. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:23.