Switch

intimoviro

Utente Attivo
18 Ago 2009
272
0
0
Salve, sto creando un carrello, però sto sfruttando il database, cioè quando l'utente aggiunge un prodotto al carrello lo salva in una tabella temporanea, che verrà eliminata al momento dell'acquisto, altrimenti rimarrà sempre il prodotto nella tabella associato all'username dell'utente che è unico. Ora ho una pagina carrello.php dove contiene il form per aggiungere o eliminare le quantità del prodotto, tutto funziona correttamente se faccio elaborare il tutto inviando i dati del form ad una pagina differente(agg_carrello.php), però vorrei elaborare tutto nella stessa pagina, cioè aggiungendo una quantità deve aggornarmi la stessa pagina con le nuove quantità.
Avevo pensato allo switch, però non so bene come funziona, intanto vi posto il codice che mi funziona nella pagina agg_carrello.php

PHP:
session_start();
require_once('site/config.php');

$sql = "SELECT * FROM carrello_sos WHERE username= '$username'";
$res = mysql_query($sql);
while ($row=mysql_fetch_assoc($res)) {

$quantita1 = $row['quantita'];

$num = $_POST['quantita'];

$som = $num + $quantita1;


$sql = "UPDATE carrello_sos SET quantita = $som WHERE username = '$username'";
                
            mysql_query($sql);

}
$sql1 = "SELECT * FROM carrello_sos WHERE username= '$username'";
$res1 = mysql_query($sql1);
while ($row1=mysql_fetch_assoc($res1)) {

$id_prodotto = $row1['id_prodotto'];
$nome_serv = $row1['nome_serv'];
$desc_prodotto = $row1['descrizione'];
$prezzo_prod = $row1['prezzo'];
$quantita = $row1['quantita'];
}
$totale = $prezzo_prod * $quantita;
?>

Ora vi do il codice che ho cercato di creare con lo switch, ma non funziona, in pratica è lo stesso della pagina agg_carrello.php ma con lo switch:

PHP:
$action = $_POST['carrello'];
switch ($action)
{
case 'aggiungi':

$sql = "SELECT * FROM carrello_sos WHERE username= '$username'";
$res = mysql_query($sql);
while ($row=mysql_fetch_assoc($res)) {

$quantita1 = $row['quantita'];

$num = $_POST['quantita'];

$som = $num + $quantita1;


$sql = "UPDATE carrello_sos SET quantita = $som WHERE username = '$username'";
                
            mysql_query($sql);

}
$sql1 = "SELECT * FROM carrello_sos WHERE username= '$username'";
$res1 = mysql_query($sql1);
while ($row1=mysql_fetch_assoc($res1)) {

$id_prodotto = $row1['id_prodotto'];
$nome_serv = $row1['nome_serv'];
$desc_prodotto = $row1['descrizione'];
$prezzo_prod = $row1['prezzo'];
$quantita = $row1['quantita'];
}
$totale = $prezzo_prod * $quantita;
}



$id =$_POST["id"];

$sql = "SELECT * FROM prodotti WHERE id= '$id'";
$res = mysql_query($sql);
while ($row=mysql_fetch_assoc($res)) {

$nome = $row['nome']; 
$descrizione = $row['descrizione']; 
$prezzo = $row['prezzo']; }

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


$sql1 = "SELECT * FROM carrello_sos WHERE username= '$username'";
$res1 = mysql_query($sql1);
while ($row1=mysql_fetch_assoc($res1)) {

$id_prodotto = $row1['id_prodotto'];
$nome_serv = $row1['nome_serv'];
$desc_prodotto = $row1['descrizione'];
$prezzo_prod = $row1['prezzo'];
$quantita = $row1['quantita'];
}
$totale =$prezzo * $quantita;

?>

$_POST['carrello'];
è il nome del form.
Nel form poi ho inserito questo nell'action: carrello.php?action=aggiungi

Grazie per qualsiasi aiuto :fonzie:
 
Esatto, magari per controllare potresti mettere qualche echo sulle variabili per vedere che siano valorizzate correttamente.

Es.

PHP:
$action = $_GET['carrello'];
echo $action;
 
Ma non sono il solo...

PHP:
$action = $_GET['action'];

if ($action=='aggiungi')
{
// qui fai quello che ti serve quando action=aggiungi
}

oppure con lo switch

PHP:
$action = $_GET['action'];

switch($action) {
  case 'aggiungi':
    // qui fai quello che ti serve quando action=aggiungi
  break;
}
 
Ragazzi, ho fatto così:

PHP:
$action = $_GET['action'];


switch ($action)
{
case 'aggiungi':

$sql = "SELECT * FROM carrello_sos WHERE username= '$username'";
$res = mysql_query($sql);
while ($row=mysql_fetch_assoc($res)) {

$quantita1 = $row['quantita'];

$num = $_GET['quantita'];

$som = $num + $quantita1;


$sql = "UPDATE carrello_sos SET quantita = $som WHERE username = '$username'";
                
            mysql_query($sql);

}

break;
}

Però ora ho un'altro problema, cioè:
Quando clicco su aggiungi invece di aggiornare la quantità nella tabella inerente all'username, me ne scrive una nuova, in pratica come se mi ricarica la pagina carrello.php scrivendo nuovamente nella tabella e creandomi un campo vuoto inerente a quell'username.
Dove sto sbagliando?
Grazie

Il codice che uso del carrello.php è questo(si trova nella stessa pagina):

PHP:
$id =$_POST["id"];

$sql = "SELECT * FROM prodotti WHERE id= '$id'";
$res = mysql_query($sql);
while ($row=mysql_fetch_assoc($res)) {

$nome = $row['nome']; 
$descrizione = $row['descrizione']; 
$prezzo = $row['prezzo']; }

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


$sql1 = "SELECT * FROM carrello_sos WHERE username= '$username'";
$res1 = mysql_query($sql1);
while ($row1=mysql_fetch_assoc($res1)) {

$id_prodotto = $row1['id_prodotto'];
$nome_serv = $row1['nome_serv'];
$desc_prodotto = $row1['descrizione'];
$prezzo_prod = $row1['prezzo'];
$quantita = $row1['quantita'];
}
$totale =$prezzo * $quantita;


?>

$id =$_POST["id"];
lo prendo dalla pagina precedente
 
Ultima modifica:
Ho risolto tutto, ho creato un file funzioni che viene richiamato nella pagina carrello.php contenente tutti gli switch.
Grazie :fonzie:
 
Salve ho un nuovo problema, cioè tutto funziona correttamente per l'inserimento di un solo prodotto, però al momento che vorrei inserire un'altro prodotto nel carrello, vorrei che il form contenente tutti i dati del prodotto compreso le quantità, venga incrementato in base hai prodotti scelti dall'utente.
In pratica che venga creata in automatico un form per ogni prodotto del carrello.
Spero di essere stato chiaro, altrimenti cercherò d'impegnarmi di più nel spiegarvi il mio problema :o

Grazie
 
Già avevo visto questo esempio di carrello, però vorrei crearlo da zero, oltretutto l'esempio riporta i prodotti salvati in sessione, mentre io vorrei farlo salvando i prodotti in un database temporaneo che verrà cancellato al momento dell'acquisto da parte dell'utente, in modo che quando un'utente ritorna sul sito trova sempre i prodotti che ha inserito nel carrello in una visita o in visite precedenti nel carrello.
Non sto trovando grandi difficoltà, però ho bisogno di aiuto per piccole cose, tipo la domanda che ho posto prima, cioè quella di creare un form per ogni prodotto inserito nel carrello, oppure inserire più prodotti nello stesso form.
Grazie per il tuo aiuto :D
 

Discussioni simili