Visualizzazione dei risultati da 1 a 2 su 2

Discussione: problema con carrello.

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    281

    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('

    <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

  2. #2
    E' solo una mia svista oppure ti manca la chiusura del form?

    </form>

    Poi questo:
    codice:
    $quantità = $_POST['quantità']; 
    
    mysql_query("UPDATE carrello SET quantità='".$quantità."' WHERE sid='".$sid."' AND codice='".$row[codice]."' ") OR DIE(mysql_error());
    Se $quantita ti arriva dal db mi dici dove lo aggiorni?

    Forse basterebbe fare:

    SET quantità = quantità + '$_POST[quantita]'

    (Brutto usare le accentate nel nome dei campi e tabella).


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.