problema con Database e form

efisio

Utente Attivo
5 Ago 2008
95
0
0
buon pomeriggio a tutti quelli del forum.
Nel mio fare pratica di apprendimento del linguaggio php e mysql sono incappato in un qualche errore.
Se qualcuno può aiutarmi provo a postare il codice con il quale sono alle prese, ma prima vi riassumo velocemente come ho impostato i file, magari c'è un'errore anche qui!

ho un form(inserisci.php) da cui invio dati (metodo post)ad una pagina (salva.php) la quale dovrebbe inviare i dati al Database mysql, (tabella iscritti.sql)e il file (connDB.php) che contiene i dati per la connessione al database.

Il codice (inserisci.php) è il seguente:

<form action="Salva.php" method="post">
nome: <input type="text" name="nome"><br>
cognome: <input type="text" name="cognome"><br>
Luogo:<select name="luogo">
<option value="AG" >Agrigento</option>
<option value="AL" >Alessandria</option>
<option value="AN" >Ancona</option>
<option value="AO" >Aosta</option>
<option value="AR" >Arezzo</option>
<option value="AP" >Ascoli Piceno</option>
<option value="AT" >Asti</option>
<option value="AV" >Avellino</option>
<option value="BA" >Bari</option>
<option value="BT" >Barletta-Andria-Trani</option>
<option value="BL" >Belluno</option>
<option value="BN" >Benevento</option>
<option value="BG" >Bergamo</option>
<option value="BI" >Biella</option>
<option value="BO" >Bologna</option>
<option value="BZ" >Bolzano</option>
<option value="BS" >Brescia</option>
<option value="BR" >Brindisi</option>
<option value="CA" >Cagliari</option>
<option value="CL" >Caltanissetta</option>
<option value="CB" >Campobasso</option>
<option value="CI" >Carbonia-Iglesias</option>
<option value="CE" >Caserta</option>
<option value="CT" >Catania</option>
<option value="CZ" >Catanzaro</option>
<option value="CH" >Chieti</option>
<option value="CO" >Como</option>
<option value="CS" >Cosenza</option>
<option value="CR" >Cremona</option>
<option value="KR" >Crotone</option>
<option value="CN" >Cuneo</option>
<option value="EN" >Enna</option>
<option value="FE" >Ferrara</option>
<option value="FI" >Firenze</option>
<option value="FG" >Foggia</option>
<option value="FC" >Forlì - Cesena</option>
<option value="FR" >Frosinone</option>
<option value="-" >Fuori Italia</option>
<option value="GE" >Genova</option>
<option value="GO" >Gorizia</option>
<option value="GR" >Grosseto</option>
<option value="IM" >Imperia</option>
<option value="IS" >Isernia</option>
<option value="SP" >La Spezia</option>
<option value="AQ" >L'Aquila</option>
<option value="LT" >Latina</option>
<option value="LE" >Lecce</option>
<option value="LC" >Lecco</option>
<option value="LI" >Livorno</option>
<option value="LO" >Lodi</option>
<option value="LU" >Lucca</option>
<option value="MC" >Macerata</option>
<option value="MN" >Mantova</option>
<option value="MS" >Massa Carrara</option>
<option value="MT" >Matera</option>
<option value="MD" >Medio Campidano</option>
<option value="ME" >Messina</option>
<option value="MI" >Milano</option>
<option value="MO" >Modena</option>
<option value="NA" >Napoli</option>
<option value="NO" >Novara</option>
<option value="NU" >Nuoro</option>
<option value="OG" >Ogliastra</option>
<option value="OT" >Olbia-Tempio</option>
<option value="OR" >Oristano</option>
<option value="PD" >Padova</option>
<option value="PA" >Palermo</option>
<option value="PR" >Parma</option>
<option value="PV" >Pavia</option>
<option value="PG" >Perugia</option>
<option value="PS" >Pesaro</option>
<option value="PU" >Pesaro - Urbino</option>
<option value="PE" >Pescara</option>
<option value="PC" >Piacenza</option>
<option value="PI" >Pisa</option>
<option value="PT" >Pistoia</option>
<option value="PN" >Pordenone</option>
<option value="PZ" >Potenza</option>
<option value="PO" >Prato</option>
<option value="RG" >Ragusa</option>
<option value="RA" >Ravenna</option>
<option value="RC" >Reggio Calabria</option>
<option value="RE" >Reggio Emilia</option>
<option value="RI" >Rieti</option>
<option value="RN" >Rimini</option>
<option value="RM" >Roma</option>
<option value="RO" >Rovigo</option>
<option value="SA" >Salerno</option>
<option value="SS" >Sassari</option>
<option value="SV" >Savona</option>
<option value="SI" >Siena</option>
<option value="SR" >Siracusa</option>
<option value="SO" >Sondrio</option>
<option value="TA" >Taranto</option>
<option value="TE" >Teramo</option>
<option value="TR" >Terni</option>
<option value="TO" >Torino</option>
<option value="TP" >Trapani</option>
<option value="TN" >Trento</option>
<option value="TV" >Treviso</option>
<option value="TS" >Trieste</option>
<option value="UD" >Udine</option>
<option value="VA" >Varese</option>
<option value="VE" >Venezia</option>
<option value="VB" >Verbano Cusio Ossola</option>
<option value="VC" >Vercelli</option>
<option value="VR" >Verona</option>
<option value="VV" >Vibo Valentia</option>
<option value="VI" >Vicenza</option>
<option value="VT" >Viterbo</option>
</select><br>
Disciplina: <select name="discipline">
<option value="avvocato" >avvocato</option>
<option value="commercialista" >commercialista</option>
<option value="ragioniere" >ragioniere</option>
</select><br>

il codice del file (salva.php) è il seguente:

<?php
$nome= trim($_POST ['nome']);
$cognome= trim($_POST['cognome']);
$luogo= intval($_POST ['luogo']);
$discipline= intval($_POST ['discipline']);
$nome = ($nome == "") ? "Anonimo" : $nome;
$cognome = ($cognome == "") ? "" : $cognome;
if($nome == "" || $cognome == "") {
die(header("Location: iserisci.php?errore=1&nome=$nome&cognome=$cognome&luogo=$luogo&disciplina=$disciplina"));
}
include ("connDB.php");
$pntDB = @mysql_connect($DB[host], $DB[user], $DB[pass]);
if(!$pntDB) {
die ("ATTENZIONE: il sito-web è temporaneamente off-line per problemi tecnici.")
};
mysql_select_db("$DB[database]", $pntDB);
mysql_query("INSERT INTO iscritti (nome, cognome, luogo, discipline) VALUES ('$_POST['nome']', '$_POST['cognome']','$_POST['luogo']','$_POST['discipline']')");
?>


La tabella MYSQL (iscritti) è la seguente:

id int(11) No auto_increment
nome varchar(20) latin1_swedish_ci No
cognome varchar(20) latin1_swedish_ci No
luogo tinyint(20) No
discipline tinyint(20) No


il file connDB ha il seguente codice:

<?php
$DB[host] = "localhost";
$DB[user] = "root";
$DB[pass] = "";
$DB[database] = "utenti";
?>
 

Vale_Barbato

Utente Attivo
15 Set 2005
465
0
0
La tabella MYSQL (iscritti) è la seguente:

id int(11) No auto_increment
nome varchar(20) latin1_swedish_ci No
cognome varchar(20) latin1_swedish_ci No
luogo tinyint(20) No
discipline tinyint(20) No


il file connDB ha il seguente codice:

<?php
$DB[host] = "localhost";
$DB[user] = "root";
$DB[pass] = "";
$DB[database] = "utenti";
?>

perchè l'id e No auto_increment ???
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
non hai postato l'errore che ti restituisce, comunque in "inserisci.php" il form non è stato chiuso e non vedo un pulsante per l'invio.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
scusate se mi intrometto (al massimo eliox mi banna)
ma c'è una cosa che non capisco
cosa vuol dire

PHP:
$luogo= intval($_POST ['luogo']);
$discipline= intval($_POST ['discipline']);

intavl non trasforma un numero in intero ed in funzione, se c'è, della base? ma nelle select i valori non mi sembrano numerici
analogo poi il
luogo tinyint(20) perche intero?non dovrebbe contenere una delle sigle della provincia?
 

efisio

Utente Attivo
5 Ago 2008
95
0
0
non hai postato l'errore che ti restituisce, comunque in "inserisci.php" il form non è stato chiuso e non vedo un pulsante per l'invio.

Buongiorno Eliox,

hai perfettamente ragione. Non ho postato l'intero codice della pagina perchè pensavo non fosse necessario, ma provvedo subito.

(inserisci.php):

<div id="nav">
Per iscriverti compila i campi sottostanti

<form action="Salva.php" method="post">
nome: <input type="text" name="nome"><br>
cognome: <input type="text" name="cognome"><br>
Luogo:<select name="luogo">
<option value="AG" >Agrigento</option>
<option value="AL" >Alessandria</option>
<option value="AN" >Ancona</option>
<option value="AO" >Aosta</option>
<option value="AR" >Arezzo</option>
<option value="AP" >Ascoli Piceno</option>
<option value="AT" >Asti</option>
<option value="AV" >Avellino</option>
<option value="BA" >Bari</option>
<option value="BT" >Barletta-Andria-Trani</option>
<option value="BL" >Belluno</option>
<option value="BN" >Benevento</option>
<option value="BG" >Bergamo</option>
<option value="BI" >Biella</option>
<option value="BO" >Bologna</option>
<option value="BZ" >Bolzano</option>
<option value="BS" >Brescia</option>
<option value="BR" >Brindisi</option>
<option value="CA" >Cagliari</option>
<option value="CL" >Caltanissetta</option>
<option value="CB" >Campobasso</option>
<option value="CI" >Carbonia-Iglesias</option>
<option value="CE" >Caserta</option>
<option value="CT" >Catania</option>
<option value="CZ" >Catanzaro</option>
<option value="CH" >Chieti</option>
<option value="CO" >Como</option>
<option value="CS" >Cosenza</option>
<option value="CR" >Cremona</option>
<option value="KR" >Crotone</option>
<option value="CN" >Cuneo</option>
<option value="EN" >Enna</option>
<option value="FE" >Ferrara</option>
<option value="FI" >Firenze</option>
<option value="FG" >Foggia</option>
<option value="FC" >Forlì - Cesena</option>
<option value="FR" >Frosinone</option>
<option value="-" >Fuori Italia</option>
<option value="GE" >Genova</option>
<option value="GO" >Gorizia</option>
<option value="GR" >Grosseto</option>
<option value="IM" >Imperia</option>
<option value="IS" >Isernia</option>
<option value="SP" >La Spezia</option>
<option value="AQ" >L'Aquila</option>
<option value="LT" >Latina</option>
<option value="LE" >Lecce</option>
<option value="LC" >Lecco</option>
<option value="LI" >Livorno</option>
<option value="LO" >Lodi</option>
<option value="LU" >Lucca</option>
<option value="MC" >Macerata</option>
<option value="MN" >Mantova</option>
<option value="MS" >Massa Carrara</option>
<option value="MT" >Matera</option>
<option value="MD" >Medio Campidano</option>
<option value="ME" >Messina</option>
<option value="MI" >Milano</option>
<option value="MO" >Modena</option>
<option value="NA" >Napoli</option>
<option value="NO" >Novara</option>
<option value="NU" >Nuoro</option>
<option value="OG" >Ogliastra</option>
<option value="OT" >Olbia-Tempio</option>
<option value="OR" >Oristano</option>
<option value="PD" >Padova</option>
<option value="PA" >Palermo</option>
<option value="PR" >Parma</option>
<option value="PV" >Pavia</option>
<option value="PG" >Perugia</option>
<option value="PS" >Pesaro</option>
<option value="PU" >Pesaro - Urbino</option>
<option value="PE" >Pescara</option>
<option value="PC" >Piacenza</option>
<option value="PI" >Pisa</option>
<option value="PT" >Pistoia</option>
<option value="PN" >Pordenone</option>
<option value="PZ" >Potenza</option>
<option value="PO" >Prato</option>
<option value="RG" >Ragusa</option>
<option value="RA" >Ravenna</option>
<option value="RC" >Reggio Calabria</option>
<option value="RE" >Reggio Emilia</option>
<option value="RI" >Rieti</option>
<option value="RN" >Rimini</option>
<option value="RM" >Roma</option>
<option value="RO" >Rovigo</option>
<option value="SA" >Salerno</option>
<option value="SS" >Sassari</option>
<option value="SV" >Savona</option>
<option value="SI" >Siena</option>
<option value="SR" >Siracusa</option>
<option value="SO" >Sondrio</option>
<option value="TA" >Taranto</option>
<option value="TE" >Teramo</option>
<option value="TR" >Terni</option>
<option value="TO" >Torino</option>
<option value="TP" >Trapani</option>
<option value="TN" >Trento</option>
<option value="TV" >Treviso</option>
<option value="TS" >Trieste</option>
<option value="UD" >Udine</option>
<option value="VA" >Varese</option>
<option value="VE" >Venezia</option>
<option value="VB" >Verbano Cusio Ossola</option>
<option value="VC" >Vercelli</option>
<option value="VR" >Verona</option>
<option value="VV" >Vibo Valentia</option>
<option value="VI" >Vicenza</option>
<option value="VT" >Viterbo</option>
</select><br>
Disciplina: <select name="discipline">
<option value="avvocato" >avvocato</option>
<option value="commercialista" >commercialista</option>
<option value="ragioniere" >ragioniere</option>
</select><br>
<input name="pulsante" type="submit" id="pulsante" value="Invia ">
</form>
</div>

Quando inserisco i dati nel form poi questi non vengono memorizzati nel DB?
A video mi viene retituita l'Header e mancano il corpo e il footer.

Grazie
ancora per esserti interessato a questo problema
Efisio
 

efisio

Utente Attivo
5 Ago 2008
95
0
0
ciao
scusate se mi intrometto (al massimo eliox mi banna)
ma c'è una cosa che non capisco
cosa vuol dire

PHP:
$luogo= intval($_POST ['luogo']);
$discipline= intval($_POST ['discipline']);

intavl non trasforma un numero in intero ed in funzione, se c'è, della base? ma nelle select i valori non mi sembrano numerici
analogo poi il
luogo tinyint(20) perche intero?non dovrebbe contenere una delle sigle della provincia?

Buongiorno Borgo,


Cosa mi consigli di mettere al posto di intval?
Per il secondo problema mi sembra di capire che dovrò sostituire l'intero con la sigla.
potresti darmi qualche consiglio su come tu avresti risolto il problema?
grazie

Efisio
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
se nel db inserisci solo le sigle e/o i nomi delle province:

semplice $_POST per le sigle (al massimo un trim per sicurezza)
addslasces($_POST['']) per i nomi (addslashes perche se no L'Aquila ti da problemi

nella tabella
campo sigle varchar 2
campo nome_provincia varchar 15

io ho fatto così
per le
$discipline= addslashes(trim($_POST ['discipline']));
se le prendi da una select, altrimenti aggiungi htmlspecialchars

campo discipline varchar 20 (30 vedi tu)

dimenticavo
per verificare prova queste due righe

<?php
$a="PD";
$b="VE";
var_dump(intval($a));
var_dump(intval($b));
?>
vedrai che ti restituise sempre 0
 
Ultima modifica:

efisio

Utente Attivo
5 Ago 2008
95
0
0
Scusami Borgo, ho seguito le tue indicazioni ma probabilmente ho commesso qualche altro errore.
Forse nell'organizzare le pagine web del sito, in quanto non riesco ancora ad inviare i dati al DB.

scusami se ti sottopongo un ennesimo dubbio...

Ciao

Efisio
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
ho notato una cosa
prima dell'insert tu prelevi i $_POST e lei tratti

es.
$nome= trim($_POST ['nome']);
$cognome= trim($_POST['cognome']);
poi nell'insert utilizzi direttamente il $_POST, a che ti serve trattarli?

prova così (spezzado il codice per vedere, poi i var_dump li togli)

PHP:
$query="INSERT INTO iscritti (nome, cognome, luogo, discipline) VALUES ('$nome', '$cognome','$luogo,'$discipline')";
var_dum($query);//vedi se viene scritta giusta
$risult=mysql_query($query);
var_dump($risult);//TRUE se ok, FALSE se ko
 
Ultima modifica:

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
sicuramente Borgo intendeva scrivere:
PHP:
var_dump($query);//vedi se viene scritta giusta
 

efisio

Utente Attivo
5 Ago 2008
95
0
0
Grazie Borgo per i suggerimenti, ma ancora non riesco a risolvere il problema di inserimento dati nel DB.

Non riesco a capirci niente.

ti posto il file salva.php nella speranza di poter imparare dove stò sbagliando.

<?php
$host = 'localhost';
$user = 'root';
$password = 'root';
$database = 'utenti';

$nome=$_REQUEST['nome'];
$cognome=$_REQUEST['cognome'];
$luogo=$_REQUEST['luogo'];
$discipline=$_REQUEST['discipline'];

$db = mysql_connect($host, $user, $password)
or die ( "impossibile connetersi al server");
mysql_select_db($database, $db)
or die ("impossibile connettersi al daabasee");

$query="INSERT INTO*iscritti*(nome,*cognome,*luogo,*discipline) VALUES*('$nome',*'$cognome','$luogo,'$discipline')";
var_dump($query);//vedi se viene scritta giusta
$risult=mysql_query($query);
var_dump($risult);//TRUE se ok, FALSE se ko

?>

inoltre quando inserisco i dati mi restituisce a video la seguente stringa:

string(111) "INSERT INTO iscritti (nome, cognome, luogo, discipline) VALUES ('giuseppe', 'garibaldi','AO,'Psicologo')" bool(false)

Grazie

Efisio
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
se hai scritto la query in questo modo

$query="INSERT INTO*iscritti*(nome,*cognome,*luogo,*discipline) VALUES*('$nome',*'$cognome','$luogo,'$discipline') ";

per forza non inserisce
prova così

PHP:
$query="INSERT INTO iscritti (nome, cognome, luogo, discipline) VALUES('$nome','$cognome','$luogo,'$discipline') ";

perchè hai messo gli *?
il var_dump dovrebbe restituirti

string(111) "INSERT INTO iscritti (nome, cognome, luogo, discipline) VALUES('giuseppe', 'garibaldi','AO,'Psicologo')"
bool(true)
 

efisio

Utente Attivo
5 Ago 2008
95
0
0
Grazie Borgo, ma in effetti non avevo messo gli asterischi e non so come mai sono comparsi una volta che ho "inviato" la risposta.
riprovo a postare la parte in oggetto:

$query="INSERT INTO iscritti (nome, cognome, luogo, discipline) VALUES ('$nome', '$cognome','$luogo,'$discipline')";


Ps: prima di postare la risposta ho eseguito l'anteprima del messaggio e il programma mi restituisce gli asterischi al posto degli spazi.

purtroppo non riesco ad inserire i dati nel DB...questo problema mi sembra irrisolvibile !!!!!!
e mi domando:" Cosa continuo a sbagliare"?
Grazie Borgo per il tuo interessamento

Efisio
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
se il var_dump della query ti restituisce la stringa giusta, ma non fa l'insert, l'errore potrebbe essere nei nomi o nellla tabella.
1. verifica la corrispondenza dei nomi (anche minuscolo/maiuscolo)
2. verifica (sempre usando val_dump) che siano valorizzati $nome, $cognome, $luogo, $discipline
3. che il tipo dei campi in cui devono essere immessi sia giusto

dimenticavo
la tabella è rimasta così?
id int(11) No auto_increment
nome varchar(20) latin1_swedish_ci No
cognome varchar(20) latin1_swedish_ci No
luogo tinyint(20) No
discipline tinyint(20) No

secondo me devi modificarla in

id int(11) autoincrement primary key
nome varchar(20)
cognome varchar(20)
luogo varchar(2)
discipline varchar(20)
 
Ultima modifica:

efisio

Utente Attivo
5 Ago 2008
95
0
0
Grazie ai tuoi suggerimenti sono riuscito nell'impresa.

Grazie ancora Borgo.
:beer:
 
Discussioni simili
Autore Titolo Forum Risposte Data
Z Problema database MySQL con XAMPP PHP 0
alessandra86 [PHP] Popolamento database con form ricorsivi - problema array (foreach ) PHP 5
M Problema con ciclo foreach per chiusura apertura div in base al numero di record in database PHP 1
K Problema con update di un database in un ciclo Classic ASP 1
M Problema con modulo registrazione e inserimento dati in database PHP 8
radioButton Problema inserimento stringa con apostrofo in database sql Database 21
T problema strano con procedura di controllo da database, di dati immessi in un form asp Classic ASP 5
A Problema con date () e database PHP 7
A problema con database (mysql - php) PHP 4
A problema con database (mysql - php) PHP 1
M problema con ciclo foreach per estrarre dati da un database PHP 22
F Problema con selezione di un file nel database PHP 5
A Problema con connessione al database PHP 25
L problema con get per includere pagine dal database PHP 4
D problema con form che invia dati al database PHP 0
C Problema con visualizzazione dell'immagina da tabella database PHP 5
asevenx problema con l'inserimento di un record nel database (caratteri non consentiti) PHP 11
M Problema con l' esempio di "Approccio ai database" .NET Framework 7
A Problema con la connessione ad un database access PHP 3
U Problema con eliminazione righe dalla tabella del database PHP 1
U Problema con la selezione di database... PHP 3
G Tophost: problema con gestore Database in php PHP 1
T PROBLEMA CON SESSIONI PHP 3
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
T PROBLEMA CON ARRAY PHP 8
L problema con query select PHP 2
R Problema query con ricerca id numerico PHP 2
F Problema con risposta PHP 0
S problema con recupero dati tabella mysql PHP 2
Z Problema con il mio tp-l i nk Reti LAN e Wireless 1
L Problema RAM con Tomcat 8 Apache 0
napuleone problema con sort e asort PHP 4
Z Problema con INT MySQL PHP 1
M Problema con controllo form in real time jQuery 6
Z Problema di sincronizzazione PAYPAL con PHP PHP 1
G Problema con Get page PHP 4
P Problema con require once PHP 6
P Problema con i package Java 1
A Problema login con Safari PHP 14
F INDESIGN: problema esportazione esecutivo per la stampa con foto B/N Webdesign e Grafica 1
S problema con css bootstrap3 HTML e CSS 4
M .load() problema con caricamenti dinamici di js Javascript 0
G Problema ------- con Query PHP 1
G Problema con Query PHP 1
T problema con select dinamica con jquery Javascript 0
S Problema con spazi bianchi HTML e CSS 5
A PROBLEMA: insert mysqli con dati Tagsinput Presentati al Forum 0
Tommy03 Problema con z-index HTML e CSS 3
M Problema inserimento parole con apostrofo nel db PHP 5
C Problema con dati meteo xml XML 1

Discussioni simili