Newsgroup: it.comp.www.php
Titolo: Non riesco ad inserire nuovi records

Ciao a tutti
non avevo mai usato php unitamente a mysql per aggiungere records ma solo 
per leggerli da una tabella che avevo gią.
Ieri ho provato con un sorgente preso da 
php.net
 ma non mi ha aggiunto 
nessun record e non so dove possa essere l'errore..
La pagina non fa errore e giunge alla fine
Per tentare di capčire chiedo:
l'ordine dei ca,mpi del database deve essere lo stesso di quello in cui 
vengono salvati ?
Se il database non viene chiuso i dati sono comunque salvati?
questo comunque č il sorgente:
$connessione = @mysql_connect("999.999.999.999", "Sqldatabase", 
"888888888888");
if ($connessione == FALSE)
{header('Location: errore.php');
exit();}
mysql_select_db("xxxxxxxxxxxx");
$query = "INSERT INTO rubrica 
(nome,ind,cap,citta,provincia,nazione,email,piva,tele1,tele2,fax,note) 
VALUES 
($nome,$ind,$cap,$citta,$provincia,$nazione,$email,$piva,$tele1,$tele2,$fax,$note)";
@mysql_query($query);
$id=mysql_insert_id();
#mi ritorna l'id che auto increment
mysql_close($connessione);
sono poi andato nel mio pannello di controllo alla pagina phpmyadmin e dopo 
aver selezionato la tabella ho provato a visualizzarne il contenuto ma 
quando il mouse si avvicina al pulsante mostra il mouse diventa una crocetta 
rossa e non mi poermette di cliccare
Cosa posso fare per testare l'immissione di nuovi records?
Grazie

 Cosa posso fare per testare l'immissione di nuovi records?
Con una SELECT.

@mysql_query($query);
Sbagliato. Togli la chiocciola, cosi' ti dice qualcosa.
Inoltre, non so se la rubrica ha un campo auto_increment; se ce l'ha,
comunque, controlla che sia "largo" abbastanza (es.: "integer").
Leonardo
-- 
While ordinarily valid that being widespread does not make a statement
true, I feel that the diffusion of anti-evolutionary beliefs does pose
a strong argument for Darwin having been, indeed, sorely mistaken.

 ($nome,$ind,$cap,$citta,$provincia,$nazione,$email,$piva,$tele1,$tele2,$fax,$note)";
$query = "INSERT INTO rubrica 
(nome,ind,cap,citta,provincia,nazione,email,piva,tele1,tele2,fax,note) 
VALUES 
('" . $nome. "','" . $ind . "','" . $cap . "','" . $citta . "','" .
$provincia . "','" . $nazione . "','" . $email . "','" . $piva . "','" .
$tele1 . "','" . $tele2 . "','" . $fax . "','" . $note. "')";
-- 
http://www.ginnasticatriestina.com
  _   _ _           _
 _| |___ _ _<_>__      | |___ _ ___| |_<_> |___ _ ___| |_ ___._ _ ___
/ . / . \ '_> / ._> ___| / / '_X_> | . \ | / / '_X_> | . Y . \ ' / . |
\___\___/_| | \___.|___|_\_\_| <___|___/_|_\_\_| <___|___|___/_|_\_. |
           <__'                                                  <___' 
MAIL(rot13):fgn...@tznvy.pbz - ICQ:#66264348 - 
MSN:dor...@hotmail.it
 

 MAIL(rot13):fgna...@tznvy.pbz - ICQ:#66264348 - 
MSN:dorj...@hotmail.it
Scusate, non potrebbe essere utile (io per lo meno mentre programmo lo
uso) inserire nella riga di comando della query la dicitura:
mysql_query($query) or die (mysql_error()) ??
Così almeno viene visualizzato la tipologia di errore nel caso vi ci
fosse...

 fosse...
Riveste una maggior utilità l'utilizzo di una classe di astrazione per 
l'accesso al database (anche se si accede a pochi dati, non ha 
importanza) in questo modo si risolve automaticamente il 99% degli 
errori sql, ovvero gli errori di chi immette direttamente il valore dei 
campi nella stringa sql *senza* provvedere all'adeguato escape.
Tornando alla tua nota, sicuramente mostrare un errore è molto più utile 
di nasconderlo (come ha riportato Paolo nel post iniziale!)
	Francesco

 
   così come è più utile una gestione degli errori fatta bene piuttosto che un
brutale die(...)

Ho fatto come avete consigliato e il server mysql mi ritorna l'errore
Siccome uno dei campi č una data CHE DOVREBBE NELLE MIE INTENZIONI stampare 
il timestamp nel momento del salvataggio ho provato a inerirla io oppure a 
lasciarlo vuoto ma mi rispomnde Duplicate entry '0000-00-00 00:00:00' for 
key 1

Il campo data di tipo timestamp di cui parlavo nella mail precedente 
inserendo un nuovo record manualmente con phpmyadmin una volta salvato il 
record risulta inserito automaticamente e viene cisualizzato cosě:
2007-12-18 15:53:52


Quel campo fa parte dell'indice, per questo ti stampa tale errore 
(esiste gią un record con il campo pari a tale valore)
Per l'inserimento dell'ora corrente puoi utilizzare now() come valore da 
attribuire al campo oppure impostare il campo (struttura del database, 
con l'apposita sintassi 
http://dev.mysql.com/doc/refman/5.0/en/timestamp.html
)
	Francesco



Ovvio che il die nudo e crudo è di una brutalità inimmaginabile, e
ahime ci sono tanti siti che ne fanno uso...
Cmq io dicevo di usare il die solo durante questa fase di
programmazione delle pagine così da capire noi quale sia l'errore poi
una volta compreso si costruisce un controllo degli errori ad hoc...
L'utente finale non penso che ami troppo vedersi il messaggio "A
syntax error occur at line #X" come in certi casi succede :P