Newsgroup: it.comp.www.php
Titolo: Mi aiutate? sono due giorni che ci sbatto la testa.

Problema semplicissimo per un esperto. Stavo facendo un programmino per 
l'archiviazione dei telefoni dei miei amici.
il db e' amici
la tabella si chiama tabella.
i campi sono id_amico (autoincremente not null), nome, cognome, telefono
Ho creato un documento con una form che invia i dati tramite POST.
I campi da riempire nella prima pagina sono: nome, cognome, telefono.
La seconda pagina dovrebbe inserire i dati in tabella.
Ho scritto cosi
<HTML>
<HEAD>
  <TITLE>prima di mysql</TITLE>
</HEAD>
<BODY>
<?
$nome=$_POST['nome'];
$cognome=$_POST['cognome'];
$telefono=$_POST['telefono'];
$db_host="localhost";
$db_database="amici";
$db_username="root";
$db_password="";
$connessione = @mysql_connect($db_host, $db_username, $db_password) 
//numero di connessione a mysql.
or die("niente da fare connessione a mysql non andata: <br>". 
mysql_error());
mysql_select_db($db_database, $connessione) //Ci connettiamo ad un
database indicando il nome del db e il numero di connessione
or die("niente da fare: connessione al database non andata 
<br>".mysql_error()) ;
$inserisci_in_tabella ="INSERT INTO tabella(nome,cognome,telefono) 
values($nome, $cognome,$telefono)";
//$result=$connessione->query($infila)
mysql_query($inserisci_in_tabella) or die("niente da fare: inserimento 
alla tabella non andato <br>". mysql_error());
?>
</BODY>
</HTML>
Il msg d'errore che mi dï¿œ e'
niente da fare: inserimento alla tabella non andato
Unknown column 'dante' in 'field list'
dove dante e' il nome usato per prova. Sembra qualcosa relativo alle 
ultime righe. Come se avessi compilato male lo script e interpreta Dante 
come campo.
Sono abbastanza sicuro che e' un errore idiota e che fra qualche tempo 
diro' "come cavolo sono potuto cascarci". Ora pero' non so che pesci 
pigliare.
grazie

 pigliare.
Al di la` delle virgolette e dell'escaping, e` buona norma non mescolare 
PHP e HTML. Poi andrebbero fatte delle verifiche sui campi (banalmente: 
che non siano vuoti).
Bye.

Bud ha scritto:

Per forza cazzarola ma dentro values i valori vanno tra apici non credi?
altrimenti viene fuori qualcosa del tipo:
INSERT INTO tabella(nome,cognome,telefono) VALUES(dante,rossi,123);
mentre la query dovrebbe essere:
INSERT INTO tabella(nome,cognome,telefono) VALUES('dante','rossi',123);
altrimenti quel dante il db cerca di interpretarlo e da l'errore di cui
sopra della serie: oh cazzo ï¿œ sto dante?

 come campo.
lo interpreta come campo perchè non è tra apici, quindi pensa sia il
nome di una colonna.
Per il resto mi unisco agli inviti a seguire delle guide un minimo più
accorte su come si programma in PHP :)
bye!

 nome di una colonna.
Domanda da niubbo: il modulo php-mysql non permette di creare prepared
statement?
Grazie
	Y.

 il db e' amici
Grazie a tutti.
Effettivamente erano gli apici. Sul mio manuale c'erano pure.
La sintassi non l'ho ancora digerita bene.

 igienica o per accendere il camino quest'inverno.
Ok. Ma un manuale per principianti e che quindi sia non eccessivamente 
astratto?
La cosa migliore sarebbe poter seguire un programmino dall'inizio alla 
fine e mano a mano introdurre concetti nuovi.
Consigli?
Grazie

yossarian ha scritto:

Certamente ma devi usare mysqli.
http://www.php.net/manual/en/mysqli.prepare.php
$mysqli = new mysqli('localhost', 'username', 'password', 'db');
if(mysqli_connect_errno())
{
  echo "errore: " . mysqli_connect_errno();
  exit();
}
if($stmt = $mysqli->prepare("SELECT id FROM Users WHERE username=? AND
password=?"))
{
  $stmt->bind_param("ss", $user, $pass);
  $stmt->execute();
  $stmt->bind_results($result);
  $stmt->fetch();
  $page = new Page("users id", "template.htp");
  $page->setVar("userId", $result);
  $stmt->close();
}
$mysqli-> close();
(l' ss di bindparam corrisponde al tipo dei parametri e significa
semplicemente due stringhe)
Questo codice setta la variabile userId di un ipotetica pagina creata
dall'oggetto Page usando una prepared statement.
Ho voluto porre l'attenzione sul creare una pagina da template per non
mescolare html,php,javascript e quant'altro, qui c'� un altro problema
che l'sql � mescolato col php, in un progetto vero ci sarebbe un oggetto
per l'accesso al db, che a sua volta utilizzerebbe mysqli ma ovviamente
nel controller non si chiamano direttamente le funzioni del db ma del
nostro oggetto, probabilmente le pepared statement le metterei  in un
file di configurazione a parte.
micheg


Ormai che hai il manuale tra le mani, finiscilo di leggere, male non
fà ;)
Poi, in questo settore ricordati che il manuale è già vecchio nel
momento in cui lo compri, e sarebbe cosa buona che tu leggessi un
manuale per php, e uno per mysql.
Ma la migliore tecnica per imparare rimane la pratica;
su 
html.it
 trovi un sacco di guide anche per principianti.
Leggi spesso questo gruppo e i vari forum a tema, alla fine credo
siano una delle cose migliori per imparare