questo è il codice che mostra gli articoli memorizzati nella tabella "carrello" del database.
"sid" è la variabile del session id.
// connessione
$db=mysql_connect("localhost","root","") or die(mysql_error());
// seleziona il db
mysql_select_db("portatili",$db) or die(mysql_error());
// query di visualizzazione degli articoli in ordine
$carrello=mysql_query("SELECT * FROM carrello WHERE sid = '".$sid."' ") or die(mysql_error());
print('
<div align="center">Riepilogo dell\'ordine
');
print('<div align="center">');
print('<table width="660" border="2" cellspacing="0" cellpadding="0">');
print("<tr>");
print('<td align="center" width="100">Marca</td>');
print('<td align="center" width="100">Modello</td>');
print('<td align="center" width="100">Prezzo unitario</td>');
print('<td align="center" width="50">Quantità</td>');
print('<td align="center" width="100">Prezzo totale</td>');
print('<td align="center" width="100">Rimuovi</td>');
print('</tr>');
while ($row=mysql_fetch_assoc($carrello)) {
print "<tr>";
print('<td><div align="center">');
print("$row[marca]");
print('</div></td>');
print("<td><div align=\"center\"><a href=\"$row[categoria]dett.php?codiceprodotto=$row[codice]\">$row[modello]</a></div></td>");
print('<td><div align="center">');
print("$row[prezzo]");
print('</div></td>');
print('<form action="aggiornamento.php" method="post" name="carrello">');
print('<td><div align="center">');
print ("<input type=\"text\" name=\"quantità\" size=\"2\" maxlength=\"2\" value=\"${row[quantità]}\">");
print('</div></td>');
$parziale = $row[prezzo]*$row[quantità];
print('<td><div align="center">');
print("$parziale");
print('</div></td>');
print('</tr>');
}
print('<input type="submit" value="Aggiorna!">');
mysql_close_db;
dal momento che devo variare la quantità, ho creato una pagina che riceve il valore della quantità dal form e modifica il valore nel db.
la pagina di aggiornamento è questa:
// connessione
$db=mysql_connect("localhost","root","") or die(mysql_error());
// seleziona il db
mysql_select_db("portatili",$db) or die(mysql_error());
// query
$st=mysql_query("SELECT * FROM carrello WHERE sid = '".$sid."' ") or die(mysql_error());
while ($row=mysql_fetch_assoc($st)) {
$quantità = $_POST['quantità'];
mysql_query("UPDATE carrello SET quantità='".$quantità."' WHERE sid='".$sid."' AND codice='".$row[codice]."' ") OR DIE(mysql_error());
il problema è il seguente:
con un articolo solo nel carrello, tutto funziona.
se inserisco "6" nel campo della quantità quando clicco su aggiorna parte la pagina di aggiornamento e poi vengo reindirizzato verso la pagina del carrello e la nuova quantità è corretta.
il casino succede quando c'è più di un articolo nel carrello. ipotizzando di avere 3 articoli nel carrello:
a) se aggiorno la quantità del primo articolo, clicco su aggiorna, quando torna indietro le quantità non sono state modificate.
b) se aggiorno la quantità del secondo articolo e clicco su aggiorna, quando torna indietro le quantità non sono state modificate.
c) se aggiorno la quantità del terzo articolo e clicco su aggiorna, quando torno indietro TUTTI gli articoli hanno come quantità il valore che avevo inserito nel terzo articolo.
praticamente, la pagina di aggiornameneto prende il valore solo dell'ultimo campo e lo trasferisce a tutti i campi
come posso risolvere questo problema?
grazie in anticipo![]()