• User Newbie

    carrello spesa

    Ciao a tutti :ciauz:
    ho impostato una specie di carrello spesa, però fa i capricci, nel senso che non memorizza gli input che invio e quindi risulta sempre vuoto.Qualcuno mi dice p.f. dove sbaglio?
    Invio il codice delle pagine ( session start è sempre in riga 1)
    Pagina indice

    <?php
    session_start();
    ?>

    <?php
    print("ID: " . session_id() . "<br>\n");
    ?>
    <body>
    <a href="prodotto.php">prodotto</a>
    </body>
    </html>

    Pagina prodotto
    <?php
    session_start();
    ?>
    <p>
    <?php
    print("ID: " . session_id() . "<br>\n");
    ?>
    </p>
    <form id="form1" name="form1" method="post" action="<?php $_SERVER['PHP_SELF']; ?>">
    <label>
    <input type="textfield" name="codice" value="CASSETTO INOX FIORE 1000" />
    </label>
    <label>
    <input type="submit" name="Submit" value="Submit" />
    </label>
    </form>
    <form id="form2" name="form2" method="post" action="<?php $_SERVER['PHP_SELF']; ?>">
    <label>
    <input type="textfield" name="codice" value="CASSETTO TERMOPLASTICA" />
    </label>
    <label>
    <input type="submit" name="Submit2" value="Submit" />
    </label>
    </form>
    <p><a href="carrello.php">carrello </a></p>
    <p> Il tuo carrello contiene <?php echo count($_SESSION['cart']); ?> articoli.</p>
    </body>
    </html>

    Pagina carrello
    <?php
    session_start();
    if (!isset($_SESSION['codice'])) {
    $_SESSION['codice'] = array();
    }
    $_SESSION['codice'] = $_REQUEST['codice'];
    ?>

    <?php
    if ($_SESSION['codice'] == 0)
    {
    print "Il tuo carrello è vuoto";
    }
    else
    {
    foreach($_SESSION['codice'] as $chiave => $valore)
    echo " $valore. \n";
    }
    ?>
    </body>
    </html>

    Grazie


  • Super User

    non ho analizzato tutto il codice ma questa riga
    <form id="form1" name="form1" method="post" action="<?php $_SERVER['PHP_SELF']; ?>">

    manca echo oppure =

    scrivila così:
    <form id="form1" name="form1" method="post" action="<?=$_SERVER['PHP_SELF']?>">


  • User Newbie

    @Tymba said:

    non ho analizzato tutto il codice ma questa riga
    <form id="form1" name="form1" method="post" action="<?php $_SERVER['PHP_SELF']; ?>">

    manca echo oppure =

    scrivila così:
    <form id="form1" name="form1" method="post" action="<?=$_SERVER['PHP_SELF']?>">

    Ti ringrazio per il suggerimento, purtroppo però credo che l'errore sia altrove, in quanto mi visualizza ancora

    Notice: Undefined index: codice in c:\programmi\easyphp1-8\www\suggerimenti\carrello.php on line 6

    dopo aver cliccato sul submit ed essere entrato nella pagina carrello,
    per la cronaca mi indica 0 prodotti nel carrello

    Help, grazie:bho:


  • User Attivo

    hai due input con lo stesso nome, 'codice'!


  • User Newbie

    @joey santiago said:

    hai due input con lo stesso nome, 'codice'!

    Grazie, ma purtroppo non cambia nulla.
    Ho sostituito tutte le chiamate di $_SESSION['codice'] con 'cart'
    ma contina a non memorizzare, infatti il messaggio è sempre
    Notice: Undefined index: codice in c:\programmi\easyphp1-8\www\suggerimenti\carrello.php on line 6.
    Dopo aver effettuato il submit mi resa sempre l'indicazione 0 articoli nel carrello e la pagina carrello da il messaggio di prima.
    Ho anche provato a sostituire $_REQUEST con $_POST, ma il risultato è sempre lo stesso.
    :bho:


  • User Attivo

    dunque... il problema è in riga 6...
    perché tu non passi nulla a carrello.php!
    dovresti inviare a questa pagina i dati del form tramite un <input type='submit'> ed un <form action='carrello.php'>, se poi vuoi recuperarti il codice tramite $_POST['codice']!!
    tu in questo momento arrivi a carrello.php tramite un link... per passare dei dati tramite link devi metterli in questa forma: <a href="pippo.php?codice=<?=$codice?>" > ed a questo punto recuperi il codice in questa forma: $codice=$_GET['codice'];


  • User Newbie

    Dunque Joey innanzitutto grazie, ho provato modificando l'action ed in effetti accade questo : invio con post l'articolo, se rientro nella pagina prodotto la mi viene indicato 1 articolo nel carrello, però se poi rientro nel carrello ho sempre
    Notice: Undefined index: codice in c:\programmi\easyphp1-8\www\suggerimenti\carrello.php on line 6

    Ora provo la tua seconda soluzione

    grazie


  • User Newbie

    @Caffeluca said:

    Dunque Joey innanzitutto grazie, ho provato modificando l'action ed in effetti accade questo : invio con post l'articolo, se rientro nella pagina prodotto la mi viene indicato 1 articolo nel carrello, però se poi rientro nel carrello ho sempre
    Notice: Undefined index: codice in c:\programmi\easyphp1-8\www\suggerimenti\carrello.php on line 6

    Ora provo la tua seconda soluzione

    grazie

    Purtroppo con l'href non ottengo nulla.
    Però ho effettuato una modifica che migliora un pò le cose,
    ho aggiunto una pagina intermedia (memorizza.php).
    Grazie a questa pagina ora l'articolo inviato rimane in memoria.
    Purtroppo però resta il problema che se inserisco il secondo articolo vine visualizzato solo il secondo.
    Help, sto impazzendo


  • User Attivo

    mhm... prova a guardarti cosa ti salva nella variabile di sessione (dovrebbe essere sotto la cartella tmp)
    potrebbe essere che tu memorizzi $_SESSION[$codice] dove $codice è un numero... in questo caso di sicuro non funziona, devi inserire una stringa letterale.
    Altra possibilità è che tu ti memorizzi $_SESSION['codice'] ed in questo caso lo sovrascrivi ogni volta che uno si aggiunge un articolo!


  • User Newbie

    @joey santiago said:

    ti mando il codice di una cosa simile che ho fatto, spero sia utile...

    Sei gentilissimo, provo a vedere se capisco qualche cosa ti faroò sapere, grazie.:)