Insert Into con condizione

intimoviro

Utente Attivo
18 Ago 2009
272
0
0
Salve, vorrei inserire dati nel database se si verificano delle condizioni, cioè:

PHP:
if ($username != $use) {
//se l'username non esiste eseguo questa condizione
$database = "INSERT INTO carrello_sos (id_prodotto, username, nome_serv, richiesta, descrizione, prezzo, quantita) VALUES ('$id', '$username', '$nome', '$richiesta', '$descrizione', '$prezzo', $quant)";
 $database2 = mysql_query($database);
   if(!$database2) die(mysql_error());
}else{
//altrimenti
$database = "INSERT INTO carrello_sos (id_prodotto, nome_serv, richiesta, descrizione, prezzo, quantita) VALUES ('$id', '$nome', '$richiesta', '$descrizione', '$prezzo', $quant)";
 $database2 = mysql_query($database);
   if(!$database2) die(mysql_error());
}

Vi spiego meglio, ho un carrello, un'utente inserisce un prodotto nel carrello, e cosi lo script lo salva in un database che verrà cancellato a fine ordine, poi l'utente ritorna sul sito e inserisce un'altro prodotto nel carrello, a quel punto lo script deve controllare se l'username corrisponde ad un'username già presente nella tabella, deve inserire il nuovo prodotto nello stesso id del carrello del cliente, altrimenti ne deve creare uno nuovo.
Avevo provato in questo modo:
PHP:
$query = "INSERT INTO tabella WHERE username = '$username'(id_prodotto....
Però mi da un'errore di sintassi.
Quindi a questo punto, non so se è corretto scrivere in questo modo la query.
Spero di essere stato abbastanza chiaro, altrimenti non esitate a chiedere ulteriori informazioni.
Grazie :D
 
La insert che fai è sbagliata per questo ti da errore nella sintassi, dovrebbe essere così:

PHP:
$query = "INSERT INTO carrello_sos (id_prodotto, nome_serv, richiesta, descrizione, prezzo, quantita) VALUES ('$id', '$nome', '$richiesta', '$descrizione', '$prezzo', $quant) WHERE username = '$username'";
 
Satifal ho provato come dici tu, ma mi dice questo:

Codice:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE username = 'prova'' at line 1

Come mai?
 
Hai ragione, scusami, mea culpa. La clausola WHERE non può essere utilizzata nella INSERT in quanto stai creando un nuovo record. Se l'utente c'è già allora devi effettuare un UPDATE la cui sintassi è:

Codice:
UPDATE tabella SET campo1 = 'valore1', campo2 = 'valore2', ..., campoN = 'valoreN' WHERE campo = 'condizione';
 
Il fatto è che non voglio fare l'update, ma inserire altri dati dove è presente quell'username.
Non so, ma è possibile inserire più righe nel database sotto un solo id?
Cioè ho una tabella carrello_sos con i seguenti campi: id, id_prodotto, nome...
Ora il cliente aggiungendo il suo primo prodotti inserisce i dati in quella tabella. Ritornando sul sito ne aggiunge un'altro, ora nella tabella precedente dove è presente il suo username va ad aggiungere il nuovo prodotto mantenendo il vecchio.

Non so se sono stato abbastanza chiaro. :(
 
Allora basta fare un semplice INSERT senza alcuna clausola:

PHP:
$query = "INSERT INTO carrello_sos (id_prodotto, username, nome_serv, richiesta, descrizione, prezzo, quantita) VALUES ('$id', '$username', '$nome', '$richiesta', '$descrizione', '$prezzo', $quant)";

In questo modo verrà inserito un nuovo record per ogni nuovo prodotto inserito nel carrello da quel particolare utente. Poi, per recuperare tutti i prodotti presenti nel carrello di quell'utente basta fare una SELECT su quel username:

PHP:
$query = "SELECT * FROM carrello_sos WHERE username = '$username'";
 
ciao
in ritardo per problemi, ma ho visto che ti ha risposto satifal, comunque per semplificare intendevo questo, ma è uno stile di programmazione, non un errore, es

if ($username != $use) {
//se l'username non esiste eseguo questa condizione
$database = "INSERT INTO carrello_sos (id_prodotto, username, nome_serv, richiesta, descrizione, prezzo, quantita) VALUES ('$id', '$username', '$nome', '$richiesta', '$descrizione', '$prezzo', $quant)";
}else{
//altrimenti
$database = "INSERT INTO carrello_sos (id_prodotto, nome_serv, richiesta, descrizione, prezzo, quantita) VALUES ('$id', '$nome', '$richiesta', '$descrizione', '$prezzo', $quant)";
}
$database2 = mysql_query($database);
if(!$database2) die(mysql_error());

o anche così

if ($username != $use) {
//se l'username non esiste eseguo questa condizione
$nome="username, ";
$username="'".$username."', "
}else{
//altrimenti
$nome="";
$username"";
}

$database = "INSERT INTO carrello_sos (id_prodotto, $nome nome_serv, richiesta, descrizione, prezzo, quantita) VALUES ('$id', $username '$nome', '$richiesta', '$descrizione', '$prezzo', $quant)";
$database2 = mysql_query($database);
if(!$database2) die(mysql_error());

a me non piace ripetere le stesse istruzioni
 

Discussioni simili