Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2017
    Messaggi
    2

    Shopping Cart in php. Problema con il passaggio delle variabili (Genere/Colore) come opzioni del prodotto

    Ciao a tutti,
    sto sbattendo la testa su questo problema da un po', e considerato che sono un neofita
    la cosa mi sta snervando un pochino :
    Il mio problema riguarda un carrello della spesa in php,
    ho un file index.php che mostra i prodotti e la scelta delle variabili (genere: maschio femmina neutro e colori vari impostati come radio button) e il pulsante ordina/aggiungi al carrello che rimanda al file cart.php

    Con l'aggiunta del primo articolo tutto funziona perfettamente, variabili comprese.
    Se aggiungo altri articoli il codice mi sovrascrive le variabili facendole risultare tutte identiche nel carrello.

    esempio: scelgo come primo articolo Maglietta Neutro Blu

    visualizza Maglietta Neutro Blu

    scelgo come secondo articolo Pantaloni Femmina Nero

    visualizza Maglietta Femmina Nero
    Pantaloni Femmina Nero

    Non riesco a fargli memorizzare per ogni riga le variabili

    questo il file index che pesca i dati da un database Mysql:

    <?php
    require 'connect.php';
    $result = mysqli_query($con, 'select * from products');
    ?>
    <table cellpadding="2" cellspacing="2" border="0">
    <tr>
    <th>Immagine</th>
    <th>Id</th>
    <th>Nome</th>
    <th>Prezzo</th>
    <th>Genere</th>
    <th>Colore</th>
    <th>Acquista</th>
    </tr>
    <?php while ($product = mysqli_fetch_object($result)) { ?>
    <form action="cart.php?id=<?php echo $product->id; ?>" method="GET">
    <tr>
    <td><img style="width: 10%;" src="<?php echo $product->image; ?>"></td>
    <td><?php echo $product->id; ?></td>
    <td><?php echo $product->name; ?></td>
    <td><?php echo $product->price; ?></td>
    <td>Scegli genere:<br>
    <?php
    $genere = $product->gender;
    $gen = explode(", ", $genere);
    ?>
    <input type="radio" name="genere" value="maschio"><?php echo $gen[0]; ?><br>
    <input type="radio" name="genere" value="femmina"><?php echo $gen[1]; ?><br>
    <input type="radio" name="genere" value="neutro"><?php echo $gen[2]; ?><br>
    </td>
    <td>Scegli colore:<br>
    <?php
    $colore = $product->color;
    $col = explode(", ", $colore);
    ?>
    <input type="radio" name="colore" value="rosso"><?php echo $col[0]; ?><br>
    <input type="radio" name="colore" value="blu"><?php echo $col[1]; ?><br>
    <input type="radio" name="colore" value="giallo"><?php echo $col[2]; ?><br>
    <input type="radio" name="colore" value="rosa"><?php echo $col[3]; ?><br>
    <input type="radio" name="colore" value="verde"><?php echo $col[4]; ?><br>
    <input type="radio" name="colore" value="azzurro"><?php echo $col[5]; ?><br>
    <input type="radio" name="colore" value="grigio"><?php echo $col[6]; ?><br>
    <input type="radio" name="colore" value="sorpresa"><?php echo $col[7]; ?><br>
    </td>
    <td><input type='hidden' name='id' value='<?php echo $product->id; ?>'></td>
    <td><input type='submit' name='add_to_cart' value='Ordina'></td>
    </tr>
    </form>
    <?php } ?>
    </table>

    e questo il file cart.php:

    <?php
    session_start();
    require 'connect.php';
    require 'item.php';
    echo $_GET['genere'];
    if(isset($_GET['id'])){
    $result = mysqli_query($con, 'select * from products where id='.$_GET['id']);
    $product = mysqli_fetch_object($result);
    $item = new Item();
    $item->id = $product->id;
    $item->name = $product->name;
    $item->price = $product->price;
    $item->quantity = 1;

    //Cerca prodotti gi� presenti nel carrello
    $index = -1;
    $cart = unserialize(serialize($_SESSION['cart']));
    for($i=0; $i<count($cart); $i++)
    if($cart[$i]->id==$_GET['id'])
    {
    $index = $i;
    break;
    }
    if($index==-1)
    $_SESSION['cart'][] = $item;
    else{
    $cart[$index]->quantity++;
    $_SESSION['cart'] = $cart;
    }
    }
    // cancella prodotti dal carrello
    if(isset($_GET['index'])){
    $cart = unserialize(serialize($_SESSION['cart']));
    unset($cart[$_GET['index']]);
    $cart = array_values($cart);
    $_SESSION['cart'] = $cart;
    }
    ?>
    <table cellpadding="2" cellspacing="2" border="1">
    <tr>
    <th>Azione</th>
    <th>Id</th>
    <th>Nome</th>
    <th>Prezzo</th>
    <th>Qta</th>
    <th>Sub Total</th>
    <th>Genere</th>
    <th>Colore</th>
    </tr>
    <?php
    $cart = unserialize(serialize($_SESSION['cart']));
    $s = 0;
    $index = 0;
    $qta = 0;
    $shipping = 6;
    for($i=0; $i<count($cart); $i++){
    $s += $cart[$i]->price * $cart[$i]->quantity;
    $qta = $qta + $cart[$i]->quantity;
    $shipping++;
    $cart[$i]->gender = $_GET['genere'];
    $cart[$i]->color = $_GET['colore'];
    if($cart[$i]->price == 99){
    if($qta <= 1){
    $shipping= $shipping - 7;
    }
    else {
    $shipping--;
    }
    }
    ?>
    <tr>
    <td><a href="cart.php?index=<?php echo $index; ?>" onclick="return confirm('Sei sicuro?')">Cancella</a></td>
    <td><?php echo $cart[$i]->id; ?></td>
    <td><?php echo $cart[$i]->name; ?></td>
    <td><?php echo $cart[$i]->price; ?></td>
    <td><?php echo $cart[$i]->quantity; ?></td>
    <td><?php echo $cart[$i]->price * $cart[$i]->quantity; ?></td>
    <td><?php echo $cart[$i]->gender ?></td>
    <td><?php echo $cart[$i]->color ?></td>
    </tr>
    <?php
    $index++;
    }
    ?>
    <tr>
    <td colspan="5" align="right">Somma</td>
    <td align="left"><?php echo $s; ?></td>
    </tr>
    <tr>
    <td colspan="5" align="right">Qta</td>
    <td align="left"><?php echo $qta; ?></td>
    </tr>
    <tr>
    <td colspan="5" align="right">Spese</td>
    <td align="left"><?php echo $shipping; ?></td>
    </tr>
    </table>
    <br>
    <a href="index.php">Continua lo shopping</a>



    Grazie infinite

  2. #2
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Premesso che entrare nel tuo (o di chiunque) modo di ragionare non è facile, cmq:

    Codice PHP:
    ...
    for(
    $i=0$i<count($cart); $i++){
       
    $s += $cart[$i]->price $cart[$i]->quantity;
       
    $qta $qta $cart[$i]->quantity;
       
    $shipping++;

       
    // QUA
       
    $cart[$i]->gender $_GET['genere'];
       
    $cart[$i]->color $_GET['colore'];
    ... 
    Perchè fai questo ? Per ogni oggetto nel carrello vai a sovrascrivere gender e color con quello che hai passato. gender e color dovresti metterle in $item all'inizio del codice.
    Inoltre, mi sorge un dubbio sul tuo carrello: come differisci le varianti? se non ho capito male una Maglietta uomo blu ha lo stesso id di una Maglietta uomo rossa. Ma tu quando trovi il prodotto nel carrello ($index != -1) incrementi solo la quantità ($cart[$index]->quantity++;)

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2017
    Messaggi
    2
    Ecccooooo, lo sapevo che era una scemata e non la vedevo. grazie grazie grazie .
    In effetti per le varianti ho aggiunto altri due controlli condizionali sul genere e il colore.
    Grazie ancora mitico

Tag per questa discussione

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 © 2024 vBulletin Solutions, Inc. All rights reserved.