Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    275

    problema con update e while

    Salve a tutti
    ho un problema con l'update in un carrello della spesa. Dopo aver iniziato una sessione, in una pagina ho questo codice:


    <?php
    session_start();

    //VEDO SE LA COMBINAZIONE GIà ESISTE
    function esiste($designScelto,$alienScelto,$coloreScelto){
    $carrello=$_SESSION['prodotti'];
    $i=0;
    $flag = false;
    while ((count($carrello) > 0) && !$flag){
    $temp=array_shift($carrello);
    if ($temp['designScelto'] == $designScelto && $temp['alienScelto'] == $alienScelto && $temp['coloreScelto'] == $coloreScelto)
    $flag = true;
    $i++;
    }
    $flag=array('esiste'=>$flag,'pos'=>$i-1);
    return $flag;
    }


    function Carrello($id_tshirt,$designScelto,$alienScelto,$co loreScelto,$quantity) {
    if (array_key_exists('prodotti',$_SESSION))
    {
    $flag=esiste($designScelto,$alienScelto,$coloreSce lto);
    if ($flag['esiste']){
    $_SESSION['prodotti'][$flag['pos']]['quantity'] +=$quantity;

    } else {
    $temp=array('id_tshirt'=>$id_tshirt,'designScelto' =>$designScelto,'alienScelto'=>$alienScelto,'color eScelto'=>$coloreScelto,'quantity'=>$quantity);
    array_push($_SESSION['prodotti'],$temp);
    }
    } else {
    $_SESSION['prodotti'][0]=array('id_tshirt'=>$id_tshirt,'designScelto'=>$de signScelto,'alienScelto'=>$alienScelto,'coloreScel to'=>$coloreScelto,'quantity'=>$quantity);
    }
    }


    array($_SESSION['prodotti']);
    Carrello("$id_tshirt","$designScelto","$alienScelt o","$coloreScelto","$quantity");

    foreach ($_SESSION["prodotti"] as $tshirt){
    echo "ID: " ,$id_tshirt, "Design: ",$tshirt['designScelto'], " Alien: " ,$tshirt['alienScelto']," Color: " ,$tshirt['coloreScelto'], " Quantity: " ,$tshirt['quantity'], "</br>";
    }


    fin qui tutto ok, quando faccio gli inserimenti (le combinazioni di queste 3 var provengono dalla pagina precedente), mi stampa correttamente tutto nell'ultimo echo (ID, Design, Color...), anche quando faccio refresh, il valore della quantità aumenta correttamente...
    Il problema però sorge quando vado a fare l'update della quantità nel database. Infatti, non so cosa mettere di preciso dopo il SET.
    Ho fatto delle prove con echo, ma mi stampa sempre la quantità dell'ultimo articolo inserito.
    Per esempio:
    inserisco articolo con disegno 1, quantità 3
    inserisco articolo con disegno 2, quantità 2

    anche se scrivo:


    if($_SESSION['designScelto']==$row['designScelto']) //per vedere se il disegno è già stato inserito nel database... in questo caso updato solo la quantità)

    {
    echo "tshirt già inserita $tshirt[quantity]";
    $query="UPDATE products SET quantity = '$tshirt[quantity]' WHERE designScelto='$row[designScelto]}'";
    $id_risult = mysql_query($query, $id_conness);

    }

    anche se il disegno è 1 (sia quello in sessione che quello dal database), mi restituisce sempre la quantità del secondo articolo (in questo caso 2).
    ---------------

    Forse dipende dal while all'inizio?
    come posso risolvere?
    Grazie!

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    275
    in altre parole, vorrei poter updatare la quantità relativa al disegno in sessione.
    Per questo avevo pensato all'if: if (disegno in sessione corrisponde al disegno già presente nel database) updata solo la qunatità.
    Ho notato che se faccio:

    1. disegno 1, quantità 3: l'inserimento nel database è ok
    refresho la stessa combinazione: ok, quantità 6;


    2. disegno 2, quantità 2: inserimento nel database ok
    refresho la stessa combinazione: ok, quantità 4 nella row relativa al disegno 2;


    3. rifaccio disegno 1, quantità 5 ----> l'echo $tshirt['quantity'] continua a darmi la quantità del 2° caso, cioè 4, che poi viene updatata anche nella row relativa al disegno 1 (sbagliato, perchè quella quantità appartiene al disegno 2). Al contrario, avrei dovuto avere un echo quantità 6 (primo caso) + 5 (terzo caso)


  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    275
    nessuno?

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    275
    ok, ho risolto creando una nuova variabile

    $new_quantity=$row['quantity']+$_SESSION['quantity'];
    $query="UPDATE products SET quantity = '$new_quantity' WHERE designScelto='{$_SESSION[designScelto]}'";


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.