Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato
Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato
Nuova frontiera per i robot tagliaerba, con Ecovacs GOAT O1200 LiDAR Pro che riconosce l'ambiente in maniera perfetta, grazie a due sensori LiDAR, e dopo la falciatura può anche rifinire il bordo con il tagliabordi a filo integrato
Recensione Samsung Galaxy S26+: sfida l'Ultra, ma ha senso di esistere?
Recensione Samsung Galaxy S26+: sfida l'Ultra, ma ha senso di esistere?
Equilibrio e potenza definiscono il Samsung Galaxy S26+, un flagship che sfida la variante Ultra e la fascia alta del mercato con il primo processore mobile a 2nm. Pur mantenendo l'hardware fotografico precedente, lo smartphone brilla per un display QHD+ da 6,7 pollici d'eccellenza, privo però del trattamento antiriflesso dell'Ultra, e per prestazioni molto elevate. Completano il quadro la ricarica wireless a 20W e, soprattutto, un supporto software settennale
Zeekr X e 7X provate: prezzi, autonomia fino a 615 km e ricarica in 13 minuti
Zeekr X e 7X provate: prezzi, autonomia fino a 615 km e ricarica in 13 minuti
Zeekr sbarca ufficialmente in Italia con tre modelli elettrici premium, X, 7X e 001, distribuiti da Jameel Motors su una rete di 52 punti vendita già attivi. La Zeekr X parte da 39.900 euro, la 7X da 54.100: piattaforma a 800V, chip Snapdragon di ultima generazione, ricarica ultraveloce e un'autonomia dichiarata fino a 615 km WLTP. Le prime consegne sono previste a metà aprile
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 06-01-2018, 00:03   #1
mariade
Senior Member
 
L'Avatar di mariade
 
Iscritto dal: Jun 2005
Città: Swords, Dublino
Messaggi: 642
PHP: shopping cart vuota cliccando aggiungi al carrello

Come da titolo, ho il problema che quando cerco di aggiungere un prodotto al carrello, mi appare una finestra con messaggio che e' stato aggiunto, ma in realta' nella tabella del cart non c'e'.
Mi da anche il seguente errore: Fatal error: Cannot use object of type stdClass as array .

La linea di codice e': <td><?php echo $value['item_name']; ?></td>

Vi posto tutto il codice che si trova nel file reserve.php :

Codice:
<?php

session_start();
ini_set('display_errors', 1);
$connect = mysqli_connect('127.0.0.1', 'root', '***********', 'Community Garden List');


if (isset($_POST['add'])) {
    if (isset($_SESSION['cart'])) {
        $item_array_id = array_column($_SESSION['cart'], 'product_id');
        if (!in_array($_GET['id'], $item_array_id)) {
            $count = count($_SESSION['cart']);
            $item_array = array(
                'product_id' => $_GET['id'],
                'item_name' => $_POST['hidden_name'],
                'product_price' => $_POST['hidden_price'],
                'item_quantity' => $_POST['quantity'],
            );
            $_SESSION['cart'][$count] = $item_array;
            echo '<script>window.location="reserve.php"</script>';
        } else {
            echo '<script>alert("Product is already Added to Cart")</script>';
            echo '<script>window.location="reserve.php"</script>';
        }
    } else {
        $item_array = array(
            'product_id' => $_GET['id'],
            'item_name' => $_POST['hidden_name'],
            'product_price' => $_POST['hidden_price'],
            'item_quantity' => $_POST['quantity'],
        );
        $_SESSION['cart'][0] = $item_array;
    }
}

if (isset($_GET['action'])) {
    if ($_GET['action'] == 'delete') {
        foreach ($_SESSION['cart'] as $keys => $value) {
            if ($value['product_id'] == $_GET['id']) {
                unset($_SESSION['cart'][$keys]);
                echo '<script>alert("Product has been Removed...!")</script>';
                echo '<script>window.location="reserve.php"</script>';
            }
        }
    }
}
?>

	?>
html code
Codice:
 <?php

    $query = 'SELECT * FROM product ORDER BY serial ASC';
    $result = mysqli_query($connect, $query);

    if (mysqli_num_rows($result) > 0) {
        while ($row = mysqli_fetch_array($result)) {
            ?>
            <div class="col-md-4">
            <form method="post" action="reserve.php?action=add&id='.$row['id'].">
            <div style="border: 1px solid #eaeaec; margin: -1px 19px 3px -1px; box-shadow: 0 1px 2px rgba(0,0,0,0.05); padding:10px;" align="center">

				<img src="<?php echo $row['image']; ?>" class="img-responsive" style="width:100%;>
            <h5 class="text-info"><?php echo $row['pname']; ?></h5>
            <h5 class="text-danger">€ <?php echo $row['price']; ?></h5>
            <h5 class="text-info"><?php echo $row['pdescription']; ?></h5>
            <input type="text" name="quantity" class="form-control" value="1">
            <input type="hidden" name="hidden_name" value="<?php echo $row['pname']; ?>">
            <input type="hidden" name="hidden_price" value="<?php echo $row['price']; ?>">
            <input type="hidden" name="hidden_pdescription" value="<?php echo $row['pdescription']; ?>">
            <input type="submit" name="add" style="margin-top:5px;" class="btn btn-success" value="Add to Bag">
            </div>
            </form>
            </div>
            <?php

        }
    }
    ?>

      <div style="clear: both"></div>
        <h3 class="title2">Shopping Cart Details</h3>
        <div class="table-responsive">
            <table class="table table-bordered">
            <tr>
                <th width="30%">Product Name</th>
                <th width="10%">Quantity</th>
                <th width="13%">Price Details</th>
                <th width="10%">Total Price</th>
                <th width="17%">Remove Item</th>
            </tr>

            <?php
                if (!empty($_SESSION['cart'])) {
                    $total = 0;
                    foreach ($_SESSION['cart'] as $key => $value) {
                        ?>
                        <tr>
                            <td><?php echo $value['item_name']; ?></td>
                            <td><?php echo $value['item_quantity']; ?></td>
                            <td>€ <?php echo $value['product_price']; ?></td>
                            <td>
                                € <?php echo number_format($value['item_quantity'] * $value['product_price'], 2); ?></td>
                            <td><a href="reserve.php?action=delete&id=<?php echo $value['product_id']; ?>"><span
                                        class="text-danger">Remove Item</span></a></td>

                        </tr>
                        <?php
                        $total = $total + ($value['item_quantity'] * $value['product_price']);
                    } ?>
                        <tr>
                            <td colspan="3" align="right">Total</td>
                            <th align="right">€ <?php echo number_format($total, 2); ?></th>
                            <td></td>
                        </tr>
                        <?php

                }
                ?>
            </table>
        </div>

    </div>
come posso risolvere questo problema per favore?
__________________
Ti Amo amore mio...per sempre!
mariade è offline   Rispondi citando il messaggio o parte di esso
Old 06-01-2018, 17:20   #2
Pbdz
Member
 
Iscritto dal: May 2003
Messaggi: 57
Il carrello non lo stai salvando nel database ma nella sessione, questo spiega perchè la tabella del carrello rimane vuota.

Per l'errore che ti da, il codice sembra corretto. A questo punto proverei a stampare la variabile $_SESSION['cart'] con var_dump o print_r in modo da capire come sono organizzati gli oggetti.

Nel dettaglio php ti sta dicendo che non puoi usare la notazione $value['item_name'] perchè $value è un oggetto e non un array. Se così fosse allora ti basterebbe fare $value->item_name (e così con tutti gli altri valori) per risolvere.
Pbdz è offline   Rispondi citando il messaggio o parte di esso
Old 06-01-2018, 22:18   #3
mariade
Senior Member
 
L'Avatar di mariade
 
Iscritto dal: Jun 2005
Città: Swords, Dublino
Messaggi: 642
Quote:
Originariamente inviato da Pbdz Guarda i messaggi
Il carrello non lo stai salvando nel database ma nella sessione, questo spiega perchè la tabella del carrello rimane vuota.

Per l'errore che ti da, il codice sembra corretto. A questo punto proverei a stampare la variabile $_SESSION['cart'] con var_dump o print_r in modo da capire come sono organizzati gli oggetti.
ho provato a far un print "<pre>"; var_dump($row); exit; dopo questa linea di codice: foreach ($_SESSION['cart'] as $key => $value) { e mi vien fuori la tabella con un text box su con dentro scritto NULL. Cosa significa?

Quote:
Originariamente inviato da Pbdz Guarda i messaggi
Nel dettaglio php ti sta dicendo che non puoi usare la notazione $value['item_name'] perchè $value è un oggetto e non un array. Se così fosse allora ti basterebbe fare $value->item_name (e così con tutti gli altri valori) per risolvere.
Ho provato a seguire il tuo consiglio, e questo e' il nuovo errore:
Notice: Undefined property: stdClass::$item_name in
__________________
Ti Amo amore mio...per sempre!

Ultima modifica di mariade : 06-01-2018 alle 22:25.
mariade è offline   Rispondi citando il messaggio o parte di esso
Old 07-01-2018, 15:34   #4
Nuke987
Member
 
Iscritto dal: Jul 2009
Messaggi: 275
Ti stai referenziando ad un object trattandolo come fosse un array. Al posto di
Codice PHP:
$value['item_name'
Devi usare
Codice PHP:
$value->item_name 
A meno che non preferisci castarlo come array ma è sconsigliabile a meno che più avanti nel codice tu debba giocare con l'array.
Nuke987 è offline   Rispondi citando il messaggio o parte di esso
Old 07-01-2018, 16:44   #5
mariade
Senior Member
 
L'Avatar di mariade
 
Iscritto dal: Jun 2005
Città: Swords, Dublino
Messaggi: 642
Quote:
Originariamente inviato da Nuke987 Guarda i messaggi
Ti stai referenziando ad un object trattandolo come fosse un array. Al posto di
Codice PHP:
$value['item_name'
Devi usare
Codice PHP:
$value->item_name 
A meno che non preferisci castarlo come array ma è sconsigliabile a meno che più avanti nel codice tu debba giocare con l'array.
Ci ho provato, come vedi nel commento precedente e mi e' venuto un altro errore:
Notice: Undefined property: stdClass::$item_name

Dopo che aggiungo il prodotto al carrello, devo far inserire nome e email al cliente e far storing dell'ordine nel database, che poi rilascera' i dati dell'ordine al cliente da salvare.
come risolvo? Ne sto uscendo pazza.
__________________
Ti Amo amore mio...per sempre!

Ultima modifica di mariade : 07-01-2018 alle 16:46.
mariade è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2018, 00:34   #6
Nuke987
Member
 
Iscritto dal: Jul 2009
Messaggi: 275
Non avevo visto la risposta. Dunque ora il problema è che ti stai referenziando a qualcosa che non esiste e da qui warning. Printa $value ed accertati che al suo interno ci sia realmente quello che stai cercando.
Nuke987 è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2018, 13:39   #7
Pbdz
Member
 
Iscritto dal: May 2003
Messaggi: 57
Fai un var_dump($_SESSION['cart']) così capisci cosa c'è dentro...

EDIT: non conosco l'architettura dell'intero progetto però il problema potrebbe risiedere nel fatto che nella pagina in cui mostri il carrello, non chiami la funzione session_start().

Ultima modifica di Pbdz : 08-01-2018 alle 19:36.
Pbdz è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2018, 22:36   #8
mariade
Senior Member
 
L'Avatar di mariade
 
Iscritto dal: Jun 2005
Città: Swords, Dublino
Messaggi: 642
grazie degli aiuti,
son riuscita a correggere gli errori. adesso ho il problema che aggiunge solo un prodotto al cart e non di piu' e non mi cancella il prodotto dal carrello. Qual e' il problema secondo voi?
__________________
Ti Amo amore mio...per sempre!

Ultima modifica di mariade : 09-01-2018 alle 09:41.
mariade è offline   Rispondi citando il messaggio o parte di esso
Old 09-01-2018, 18:22   #9
Pbdz
Member
 
Iscritto dal: May 2003
Messaggi: 57
Posta il codice aggiornato così vediamo se ci sono degli errori...ho già qualche sospetto...
Pbdz è offline   Rispondi citando il messaggio o parte di esso
Old 10-01-2018, 00:16   #10
mariade
Senior Member
 
L'Avatar di mariade
 
Iscritto dal: Jun 2005
Città: Swords, Dublino
Messaggi: 642
Quote:
Originariamente inviato da Pbdz Guarda i messaggi
Posta il codice aggiornato così vediamo se ci sono degli errori...ho già qualche sospetto...
grazie, ho risolto anche questo problema. grazie tante.
__________________
Ti Amo amore mio...per sempre!
mariade è offline   Rispondi citando il messaggio o parte di esso
Old 10-01-2018, 12:43   #11
Mursey
Senior Member
 
L'Avatar di Mursey
 
Iscritto dal: Aug 2017
Messaggi: 469
Capisco la situazione ma devo dire che seguire il problema su più forum rende alla fine inutile e confusa la discussione ad altri.

Un rimedio sarebbe mettere (in entrambi i forum) la soluzione funzionante...

Ultima modifica di Mursey : 10-01-2018 alle 12:49.
Mursey è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato Ecovacs Goat O1200 LiDAR Pro: la prova del robot...
Recensione Samsung Galaxy S26+: sfida l'Ultra, ma ha senso di esistere? Recensione Samsung Galaxy S26+: sfida l'Ultra, m...
Zeekr X e 7X provate: prezzi, autonomia fino a 615 km e ricarica in 13 minuti Zeekr X e 7X provate: prezzi, autonomia fino a 6...
Marathon: arriva il Fortnite hardcore Marathon: arriva il Fortnite hardcore
HP Imagine 2026: abbiamo visto HP IQ all’opera, ecco cosa può (e non può) fare HP Imagine 2026: abbiamo visto HP IQ all’opera, ...
Cometa interstellare 3I/ATLAS: l'ESA dif...
Kodak PIXPRO AZ653: la fotocamera bridge...
Monitor da gaming: Samsung si conferma l...
The Duskbloods potrebbe arrivare a fine ...
Il miglior pesce d'aprile del mondo Linu...
Monopattini elettrici a 62 km/h fermati ...
OpenAI porta la modalità vocale d...
Mercedes-Benz introduce lo steer-by-wire...
Hacker agli Uffizi, il museo smentisce: ...
Nvidia mostra il futuro della grafica co...
Windows 11, scattano gli aggiornamenti f...
TIM lancia l'offerta di Pasqua: Giga ill...
Prime foto reali per OPPO Find X9 Ultra:...
Il leak di Claude Code diventa un'esca: ...
Netflix, batosta in Italia: aumenti ille...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 17:46.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v