Newsgroup: it.comp.www.php
Titolo: problema con carrello...

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('<br><br><div align="center">Riepilogo dell\'ordine<br><br>');
 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 :)

 
premetto che non riesco a dare coerenza al tuo codice e che non capisco le
scelte che hai fatto costruendo il db..
se selezioni tutto con condizione sid = $sid
poi in un ciclo che ne percorre il risultato controlli nuovamante il sid
perdi solo tempo.. ma basterebbe un unico
UPDATE carrello SET quantità='".$quantità."' WHERE sid='".$sid."'";
comunque sia non riesco ancora a dare un senso..
while(..)
UPDATE carrello SET quantità='$quantità' WHERE codice='$row[code]'";
ma perchè non memorizzi con le sessioni i codici e quantità dei prodotti in
carrello?
ti basterebbe un array 
$cart = array(
'codice1' => 'quantità1',
'codice2' => 'quantità2',
'codice3' => 'quantità3'
);
e quando vuoi modificare qualcosa modifichi l'array..
-- 
www.iuz-lab.info