Php non inserisce dati in db mysql

DeAndreon

Utente Attivo
9 Giu 2009
39
0
0
Ciao a tutti! Eccomi di nuovo... Ho un problema con questo listato:

insprop.php

<?php

$conn = mysql_connect("localhost","root","gt40forever");

if(!$conn)
{
echo "connessione non avvenuta";
exit;
}
$DB= mysql_select_DB("catasto");
if(!$DB)
{
echo "connessione al database fallita";
exit;
}
$query = "Insert into proprietario(IDProp,Cognome,Nome,DataNascita,LuogoNascita,CodFiscale,Indirizzo) Values
(NULL,'".$_POST['cognome']."','".$_POST['nome']."','".$_POST['datan']."','".$_POST['luogon']."',NULL,NULL);";
$res = mysql_query($query);
if(!$res)
{ echo "errore inserimento nuovo proprietario";
echo "".$_POST["cognome"].$_POST['nome'].$_POST['datan'].$_POST['luogon'];
}else{
echo "proprietario inserito con successo";
}
mysql_close($conn);

?>

Penso che ho fatto bene però non inserisce i dati nel db in mysql perchè mi esce sempre "errore inserimento nuovo proprietario"...
Posto anche la pagina principale:

pagin.html

<HTML>
<HEAD>
<TITLE>Nuovo proprietario</TITLE>
</HEAD>
<BODY>
<H3>In questa pagina puoi inserire un nuovo proprietario</H3>
<FORM ACTION = "insprop.php" METHOD = "POST">
Cognome: <INPUT TYPE = "text" NAME = "cognome"><BR>
Nome: <INPUT TYPE = "text" NAME = "nome"><BR>
Data di nascita: <INPUT TYPE = "text" NAME = "datan"><BR>
Luogo di nascita: <INPUT TYPE = "text" NAME = "luogon"><BR>
Codice fiscale: <INPUT TYPE = "text" NAME = "codfisc"><BR>
Indirizzo: <INPUT TYPE = "text" NAME = "ind"><BR>
<INPUT TYPE ="submit" VALUE = "Inserisci proprietario">
<INPUT TYPE = "reset" VALUE = "Annulla">
</FORM>

</BODY>
</HTML>

Non riesco a capire il perchè... ho utilizzato la stessa sintassi del mio libro:confused:

Grazie a quelli che mi aiuteranno!

p.s. il database ha l'autoincremento dell'IDProp. Quando inserisco un nuovo proprietario con la pagina web, mysql assegnerà automaticamente l'id al nuovo prop?
 
ciao
se l'id è autoincremente non va messo nell'inseret, ci pensa mysql

$query = "Insert into proprietario(Cognome,Nome,DataNascita,Luogo Nascita,CodFiscale,Indirizzo) Values
('".$_POST['cognome']."','".$_POST['nome']."','".$_POST['datan']."','".$_POST['luogon']."',NULL,NULL);";
secondo NULL,NULL);";
 
Ciao! Grazie per la risposta! Niente, nemmeo così va:incazz2: sto da oggi pomeriggio a sbattere la testa provando varie soluzioni ma niente:incazz2: Ho fatto il copia incolla della tua riga postata ma niente:incazz2:
 
ciao, scusa una cosa anche se mi sembra assurda
nella tabella i due campi CodFiscale e Indirizzo per caso sono NOT NULL?

poi verifica sempre la corrispondenza dei nomi compreso maiscolo/minuscolo
 
Grazie ancora per il tuo "soccorso":) Allora, la corrispondenza con minuscole e maiuscole c'è e sono NULL Indirizzo e CodFiscale. Sono null perchè non c'è inserito niente.

errore inserimento nuovo proprietarioMastroGeppetto1890/2/23Puffo

Questo mi esce. Nell'if dell'errore ho messo anche l'echo per vedere se effettivamente sono passati i dati e a quanto pare vengono passati solo che non riesco a capire perchè non li inserisce:mad:
 
Incredibile... ho creato un altro db con mysql chiamato testdb con gli stessi campi tranne Indirizzo e CodFiscale e nemmeno funziona:confused:

Penso di averlo creato bene:

Enter password: ***********
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 24
Server version: 5.1.34-community MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create database testdb;
Query OK, 1 row affected (0.00 sec)

mysql> use testdb
Database changed
mysql>
mysql>
mysql> use testdb;
Database changed
mysql> create table proprietario (
-> IDProp int not null,
-> Cognome char(30),
-> Nome char(30),
-> DataNascita date,
-> LuogoNascita char(40),
-> primary key (IDProp)
-> );
Query OK, 0 rows affected (0.08 sec)

mysql> show tables;
+------------------+
| Tables_in_testdb |
+------------------+
| proprietario |
+------------------+
1 row in set (0.00 sec)

mysql> describe proprietario
-> ;
+--------------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+----------+------+-----+---------+-------+
| IDProp | int(11) | NO | PRI | NULL | |
| Cognome | char(30) | YES | | NULL | |
| Nome | char(30) | YES | | NULL | |
| DataNascita | date | YES | | NULL | |
| LuogoNascita | char(40) | YES | | NULL | |
+--------------+----------+------+-----+---------+-------+
5 rows in set (0.01 sec)

mysql>

e questo è il listato modificato per questo db:

<?php

$conn = mysql_connect("localhost","root","gt40forever");

if(!$conn)
{
echo "connessione non avvenuta";
exit;
}
$DB= mysql_select_DB("testdb");
if(!$DB)
{
echo "connessione al database fallita";
exit;
}
$query = "Insert into proprietario(Cognome,Nome,DataNascita,Luogo Nascita) Values
('".$_POST['cognome']."','".$_POST['nome']."','".$_POST['datan']."','".$_POST['luogon']."');";
$res = mysql_query($query);
if(!$res)
{ echo "errore inserimento nuovo proprietario";
echo "".$_POST["cognome"].$_POST['nome'].$_POST['datan'].$_POST['luogon'];
}else{
echo "proprietario inserito con successo";
}
mysql_close($conn);

?>

non so veramente che pensare...:crying:
 
Luogo nascita lo devi attaccare e il punto e virgola prima della chiusura della parentesi non ci va.
prova con questo codice
PHP:
$query = "INSERT INTO proprietario(Cognome,Nome,DataNascita,LuogoNascita) VALUES
('".$_POST['cognome']."','".$_POST['nome']."','".$_POST['datan']."','".$_POST['luogon']."')";

fammi sapere ciao
 
Ma è allergico il mio mysql? com'è possibileeeeeeeeeeeee !!!! ho visto la sintassi in 100000 siti e sta fatta bene!!!!!!!!:confused::confused::incazz2::incazz2::crying::crying::crying::crying:
 
ciao
allora mettiamo in caccia del bug

prima cosa nella tabella

IDProp | int(11) | NO | PRI | NULL | autoincrement|
l'id usualmente è autoincrementante altrimenti lo devi inserire con l'avvertaenza di non fare duplicati (e che è assurdo)

secondo
$query = "Insert into proprietario(Cognome,Nome,DataNascita,LuogoNascita) Values
('".$_POST['cognome']."','".$_POST['nome']."','".$_POST['datan']."','".$_POST['luogon']."')";
nome campo LuogoNascita non Luogo Nascita
; da eliminare

terzo
subito dopo la riga $query = "Insert .........
metti il solito

var_dump($query);
e verifica, carattere per carattere, come è scritta la query e se i valori di post sono valorizzati

quarto
non so si ininfluente, ma scrivi le istruzioni mysql
"INSERT INTO propietario(...) VALUES(....)"

quinto
ma questo può essere uno stile di come scrivere il codice, io preferisco sempre ricavare i valori dei post prima, anche perche è meglio non metterli grezzi nel db.

$cognome=htnlspecialchars(addslashes(trim($_POST['cognome'])));
anche perchè se uno si chiama "d'argenti" o è nato a l'aquilla il db va in pallino
ecc...
con questo sistema che all'apparenza è più lungo, è più facile verificare ogni post e nell'insert si possono fare meno errori

"INSERT INTO proprietario(Cognome,Nome,DataNascita,LuogoNascita) VALUES('$cognome', '$nome', '$datan', $luogo')"

che, secondo me, è meglio leggibile che una serie di punti e doppi o tripli apici '"
 
string(105) "INSERT INTO proprietario(Cognome,Nome,DataNascita,LuogoNascita) VALUES ('oio','uiuo','1950/7/9','iuigi')" errore inserimento nuovo proprietariooiouiuo1950/7/9iuigi

questo mi esce ora...


e questo è il mio listato:

insprop.php

<?php

$conn = mysql_connect("localhost","root","gt40forever");

if(!$conn)
{
echo "connessione non avvenuta";
exit;
}
$DB= mysql_select_DB("testdb");
if(!$DB)
{
echo "connessione al database fallita";
exit;
}
$query = "INSERT INTO proprietario(Cognome,Nome,DataNascita,LuogoNascita) VALUES
('".$_POST['cognome']."','".$_POST['nome']."','".$_POST['datan']."','".$_POST['luogon']."')";
var_dump($query);
$res = mysql_query($query);
if(!$res)
{ echo "errore inserimento nuovo proprietario";
echo "".$_POST["cognome"].$_POST['nome'].$_POST['datan'].$_POST['luogon'];
}else{
echo "proprietario inserito con successo";
}
mysql_close($conn);

?>


lo stile con le variabili già l'ho tentato ma è sempre la stessa cosa...
 
ciao! e grazie per il tuo continuo sostegno! ho fatto quella modifica ma niente ancora...

string(99) "INSERT INTO proprietario(Cognome,Nome,DataNascita,LuogoNascita) VALUES ('io','io','1290/7/8','io')" errore inserimento nuovo proprietarioioio1290/7/8io


ecco il listato:

<?php

$conn = mysql_connect("localhost","root","gt40forever");

if(!$conn)
{
echo "connessione non avvenuta";
exit;
}
$DB= mysql_select_db("testdb");
if(!$DB)
{
echo "connessione al database fallita";
exit;
}
$query = "INSERT INTO proprietario(Cognome,Nome,DataNascita,LuogoNascita) VALUES
('".$_POST['cognome']."','".$_POST['nome']."','".$_POST['datan']."','".$_POST['luogon']."')";
var_dump($query);
$res = mysql_query($query);
if(!$res)
{ echo "errore inserimento nuovo proprietario";
echo "".$_POST["cognome"].$_POST['nome'].$_POST['datan'].$_POST['luogon'];
}else{
echo "proprietario inserito con successo";
}
mysql_close($conn);

?>
 
ciao
lo script mi sembra ok, credo di avelro passato tutto.
fai un esperimento, in quanto so che i campi typo date sono rognosi

| DataNascita | date | YES | | NULL | |


| DataNascita | varchar(10) | YES | | NULL | |


p.s.
tanto si inserisci la data aaaa/mm/gg l'ordinamento eventuale per data è lo stesso
 
Cioè, ormai... nemmeno mettendo il campo come varchar funziona:incazz2:

string(101) "INSERT INTO proprietario(Cognome,Nome,DataNascita,LuogoNascita) VALUES ('er','er','1990/3/4','reer')" errore inserimento nuovo proprietarioerer1990/3/4reer


ho cambiato il tipo di DataNascita in varchar ma nemmeno così va...


mysql> describe proprietario;
+--------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+----------------+
| IDProp | int(11) | NO | PRI | NULL | auto_increment |
| Cognome | varchar(30) | YES | | NULL | |
| Nome | varchar(30) | YES | | NULL | |
| DataNascita | varchar(30) | YES | | NULL | |
| LuogoNascita | varchar(40) | YES | | NULL | |
+--------------+-------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)


non so veramente cosa pensare... :crying:
 
E' andato!!!!!!!!!!!!!!!!!!

string(104) "INSERT INTO proprietario(Cognome,Nome,DataNascita,LuogoNascita) VALUES ('tyt','rt','1900/2/2','trwetr')" proprietario inserito con successo

prima non c'era autoincrement, l'ho messo e ora vaaaaa!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Allora, ora devo risolvere un altro mistero... il tipo date per DataNascita. Cambio e vedo che succede....

Una domanda: ma tra il tipo char e varchar che differenza c'è? Non sono tutti e 2 per il tipo stringa?
 
Ho messo anche il tipo date e funziona!:) Finalmente!:) ora posso proseguire inserendo nel form la modifica e la cancellazione dei proprietari nonchè la loro visualizzazione:)

Grazie ancora borgo italia!:) Grazie per il tuo costante interessamento!:)


Grazie anche php_programmer e gli altri che mi hanno aiutato!:)
 
ciao
prova ad inserire

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

e vedi che messaggio di errore ti da

dimenticavo mettilo anche dopo la connessione e selezione del db
 
Funziona tutto bene borgo italia:) Oggi pomeriggio nella pagina iniziale metto anche la parte dove consento di modificare, cancellare, visualizzare i proprietari:)

Certo, non me le dimentico quelle istruzioni:)

Ciao e grazie ancora! Vi terrò aggiornati:D
 

Discussioni simili