PDA

View Full Version : [PHP] Inserimento dati invisibile


Traxsung
06-08-2006, 22:53
Non sapevo come altro chiamarlo questo problemuccio.
In pratica ho fatto un script ovvero un form che l'utente deve compilare ed inserisce i dati direttamente nel db... ma nonostante non c siano errori, questo non avviene.
Cosa può essere???

Di seguito riporto il sorgente:



<?
include("info.php");


$sql = "INSERT INTO Clienti
(
ID_CLIENTE,
Nome,
Cognome,
Indirizzo,
Telefono,
Email,
)VALUES(
".$_GET["Nome"].",
'".$_GET["Cognome"].",
'".$_GET["Indirizzo"].",
'".$_GET["Telefono"].",
'".$_GET["Email"]."'
)

INSERT INTO Libri
(
ID_LIBRI,
Scelta,
Titolo,
Editore,
Autore,
Prezzo,
Pubblicazione,
Note,
)VALUES(
".$_GET["Scelta"].",
'".$_GET["Titolo"].",
'".$_GET["Editore"].",
'".$_GET["Autore"].",
'".$_GET["Prezzo"].",
'".$_GET["Pubblicazione"].",
'".$_GET["Note"]."'
)
";
?>





Il tutto l'ho provato su netsons

Traxsung
06-08-2006, 23:01
Questi invece sono gli errori che ottengo in locale

Warning: mysql_select_db(): Accesso non consentito per l'utente: 'ODBC'@'localhost' (Password: NO) in c:\programmi\easyphp1-8\www\n\inserimento.php on line 4

Warning: mysql_select_db(): A link to the server could not be established in c:\programmi\easyphp1-8\www\n\inserimento.php on line 4

wisher
06-08-2006, 23:05
sembra ci sia un errore nell'accesso al db...
prova a postare anche il file info.php

Traxsung
07-08-2006, 11:18
Questo è il file info.php che contiene i dati per la connessione:


<?
$host = "localhost";
$user = "root";
$password = "";

$connessione = mysql_connect($host,$user,$password) or die ("Non riesco a connettermi");


mysql_close($connessione);

?>




La cosa che mi stranizza è che in locale invece di root lui vorrebbe ODBC :mbe:

andbin
07-08-2006, 14:20
Questo è il file info.php che contiene i dati per la connessione:


<?
$host = "localhost";
$user = "root";
$password = "";

$connessione = mysql_connect($host,$user,$password) or die ("Non riesco a connettermi");


mysql_close($connessione);

?>
Se questo è il file che includi all'inizio dell'altro script, perché fai una close della connessione??

Traxsung
07-08-2006, 23:18
perchè dopo che la apro non devo chiuderla??
Accetto consigli e suggerimenti perchè sono niubbo in php

Traxsung
07-08-2006, 23:24
andbin ho appena provato senza il close ma se vado a vedere su phpmyadmin le righe rimangono sempre a zero :muro:

Cosa potrebbe essere che non mi permette la scrittura??

Traxsung
08-08-2006, 10:11
Ragazzi... nessun consiglio?? Non so più dove sbattere la testa :muro:

Traxsung
09-08-2006, 21:00
Non c'è proprio nessuno che possa aiutarmi ?

andbin
09-08-2006, 21:05
L'unica cosa che posso dire è che mysql_close la devi chiamare alla fine di tutto lo script, non appena dopo che hai aperto la connessione (almeno così ho capito dai tuoi post).

loris_p
10-08-2006, 03:42
dunque innanzitutto come è già stato detto devi assolutamente levare il mysql_close dal file che includi (è un po' come se tu accendessi il pc per fare un lavoro, lo spegnessi e poi tentassi di fare il lavoro) :)
dopodiché c'è un altro errore: tu prepari la stringa della query in $sql, ma non la fai mai eseguire..
in pratica, dopo la preparazione della stringa devi dare:
if(!mysql_query($sql)) die("query non riuscita");
che ti testa già se la query è andata a buon fine..

per quanto riguarda la connessione che ti rifiuta..sei sicuro che root nel tuo sistema non abbia la pasword?altra domanda: sei sicuro che root abbia tutti i privilegi su tutti gli host, localhost compreso? (domanda abbstanza stupida perché li ha nativamente, ma non si sa mai)

facci sapere se funziona qualcosa oppure gli eventuali msg di errore

Traxsung
12-08-2006, 17:49
ragazzi... non va neanche così :muro: :muro: :muro:
Potete passarmi un vostro piccolo scripterino per l'inserimento così vedo dov'è che sbaglio ??

Grazie

loris_p
12-08-2006, 20:53
ragazzi... non va neanche così
ed essere magari un pelino più dettagliato nel cosa "non va?" ;)

Traxsung
12-08-2006, 21:23
sembrerebbe andare tutto a buon fine, ma in pratica non scrive nulla nel database :muro:

loris_p
12-08-2006, 23:04
allora fai così: prendi la query e la schiaffi o in phpmyadmin o direttamente sul prompt di mysql e vedi che ti dice (naturalemente ripuliscila dei vari $_GET e sostituisci valori di prova

anonimizzato
13-08-2006, 17:42
sembrerebbe andare tutto a buon fine, ma in pratica non scrive nulla nel database :muro:

Se non ti vengono riportati errori è perchè la query non presenta errori sintattici, tuttavia non significa che sia costruita correttamente per il risultato che si vuole ottenere.

Prova a stampare a video la variabile $sql, poi copia e incolla la stringa come ti ha detto loris_p in PhpMyAdmin e vedi cosa succede.

anonimizzato
13-08-2006, 17:47
No aspetta c'è qualcosa che non mi quaglia, che io sappia non è possibile indicare in un'unica query due istruzioni INSERT come hai fatto qui:


<?
include("info.php");


$sql = "INSERT INTO Clienti
(
ID_CLIENTE,
Nome,
Cognome,
Indirizzo,
Telefono,
Email,
)VALUES(
".$_GET["Nome"].",
'".$_GET["Cognome"].",
'".$_GET["Indirizzo"].",
'".$_GET["Telefono"].",
'".$_GET["Email"]."'
)

INSERT INTO Libri
(
ID_LIBRI,
Scelta,
Titolo,
Editore,
Autore,
Prezzo,
Pubblicazione,
Note,
)VALUES(
".$_GET["Scelta"].",
'".$_GET["Titolo"].",
'".$_GET["Editore"].",
'".$_GET["Autore"].",
'".$_GET["Prezzo"].",
'".$_GET["Pubblicazione"].",
'".$_GET["Note"]."'
)
";
?>

loris_p
13-08-2006, 17:50
infatti anche io ce l'ho sto dubbio..
forse dovrebbe almeno provare a farlo separando le due istruzioni da un ; perché una cosa così mi sa che mysql gliela rifiuta :nono:

anonimizzato
14-08-2006, 10:56
Esatto, di sicuro si può effettuare una INSERT con più valori ma eseguire due INSERT distinte proprio no.

Traxsung facci sapere se hai risolto.

Ciao.

bianchins
28-08-2006, 15:26
Si, le inserzioni doppie non si riescono a fare ( a meno credo di inserire un ";" tra una e l'altra, ma ti conviene dividerle in due) MA c'è un errore concettuale: hai specificato che andrai a inserire l'id_cliente, ma tra i VALUES il primo valore è il nome (e qui crasha).
poi ti consiglio: quando esegui una query, debuggala con mysql_error():

if (!mysql_query("SELECT...") die(mysql_error($connessione))

Spero di averti dato una mano!



<?
include("info.php");


$sql = "INSERT INTO Clienti
(
ID_CLIENTE, <-- Qui vuole anche idcliente
Nome,
Cognome,
Indirizzo,
Telefono,
Email,
)VALUES(
"", <-- devi inserire anche un campo vuoto per id_cliente (immagino si a autoincrement
".$_GET["Nome"].", <-- qui gli passi come primo "nome"
'".$_GET["Cognome"].",
'".$_GET["Indirizzo"].",
'".$_GET["Telefono"].",
'".$_GET["Email"]."'
)

INSERT INTO Libri
(
ID_LIBRI,
Scelta,
Titolo,
Editore,
Autore,
Prezzo,
Pubblicazione,
Note,
)VALUES(
".$_GET["Scelta"].",
'".$_GET["Titolo"].",
'".$_GET["Editore"].",
'".$_GET["Autore"].",
'".$_GET["Prezzo"].",
'".$_GET["Pubblicazione"].",
'".$_GET["Note"]."'
)
";
?>

ianaz
28-08-2006, 15:34
alla fine metti un


echo $sql;


e copia la query su phpMyAdmin per vedere gli errori...

e perché in nome e scelta non hai emsso gli apici?
Non mettendo gli apici lo dai come un INT se non erro...no?
E un nome non é sicuramente un INT :)