Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

Discussione: Unset... ma funziona?

  1. #1
    Utente di HTML.it L'avatar di Lucada
    Registrato dal
    Apr 2005
    Messaggi
    176

    Unset... ma funziona?

    Salve,

    allora ho un "piccolo" quanto "complicato" (per me) problema...

    Io ho un carrello per un e-commerce, con un array che mi sta dentro una sessione e che mi tiene tutti gli oggetti (id e quantità)... solo che non riesco ad eliminare un oggetto dal carrello.

    Vi posto il codice:

    codice:
    <?
    
    class prodotto { 
    
     function prodotto ($id, $q) { 
     
     # id è l'id del prodotto 
     # q è la quantità acquistata 
    
     $this->id = (int) $id; 
     $this->q  = (int) $q; 
     
     } 
    }
    
    session_start();
    
    IF (!isset($_SESSION['utente'])) { 
    
    #reindirizzamento su un altra pagina...
    
    } else {
    
    bla bla bla...
    
    #quando inserisco un oggetto nel carrello succede questo...
    #lo aggiunge all'array
    
    $_SESSION['shop'][] = new prodotto ($idprodotto, $quantità);
    
    ?>
    Fino a qui ci siete? Spero di si...

    Quindi facendo così lui mi crea l'array in modo sequenziale...
    Quindi

    $_SESSION['shop'][0] // Ci saranno due valori.. id e quantità
    $_SESSION['shop'][1] // Ci saranno due valori.. id e quantità
    $_SESSION['shop'][2] // Ci saranno due valori.. id e quantità
    $_SESSION['shop'][3] // Ci saranno due valori.. id e quantità

    E così via...

    E fin qua tutto oki... ho fatto anche l'aggiornamento della quantità e va benissimo.

    Ma veniamo al punto...

    Per stampare il carrello eseguo il seguente ciclo while

    codice:
    while (list ($indice,$contenuto) = each ($_SESSION['shop'])) { 
    
        $idpr = $_SESSION['shop'][$indice]->id; //id prodotto
        $qpr = $_SESSION['shop'][$indice]->q;   // quantità prodotto
    								
        # Select sui prodotti per il carrello										
        $asd = "SELECT * FROM prodotti WHERE id_prodotto='".$idpr."'";
        $lolasd = mysql_query($asd,$conn) or die('Errore durante la query: '. mysql_error());
        $llsd= mysql_fetch_array($lolasd);
    Faccio la select e mi vado a stampare tutte le varie voci associate a quel prodotto, scorrendo tutti i prodotti con il while.

    Quindi nel carrello stampo il titolo, la quantità, il costo dell'oggetto e un pulsante elimina che si porta dietro l'id dell'array dove è contenuto il prodotto.

    codice:
    ELIMINA 
    Fin qui tutto oki...

    Ora nella pagina "delprod.php" io dovrei cancellare il prodotto (id e quantità) contenuto nell'indice dell'array che sarebbe la variabile "$PID$.

    Pagina di delete:

    codice:
    $id=$_GET['pid'];
    
    #Eliminazione Prodotto
    
    unset($SESSION['shop'][$id]);
    
    #Reindirizzamento Carrello
    
    header("Location: carrello.php");
    Solo che quest'ultimo passaggio, nonostante nn mi dia errore e mi reindirizzi al carrello, non mi elimina quell'indice di quell'array.

    Ora lo so sono stato lungo nel topic, ma spero che sia servito per far capire il problema, cioè che l'unset non me lo cancella.

    Sono quindi qui a richiedere (se disponibile) il vostro aiuto...

    Ciao e Grazie Mille anche solo per averlo letto!

    P.S.
    Qualsiasi risposte, o consigli sono ben accetti.

    Il vero io è quello che tu sei, non quello che gli altri hanno detto di te. [Paulo Coelho]

  2. #2
    Utente di HTML.it L'avatar di Lucada
    Registrato dal
    Apr 2005
    Messaggi
    176
    Help Me!

    Please...
    Il vero io è quello che tu sei, non quello che gli altri hanno detto di te. [Paulo Coelho]

  3. #3
    Utente di HTML.it L'avatar di Lucada
    Registrato dal
    Apr 2005
    Messaggi
    176
    Nessuno in grado di aiutarmi?

    Non penso... uppettino sperando che qualcuno capace lo noti!

    P.S.

    Avrei da consegnare questo lavoro al più breve... spero che qualcuno mi aiuti a risolvere il dilemma.

    Grazie!
    Il vero io è quello che tu sei, non quello che gli altri hanno detto di te. [Paulo Coelho]

  4. #4
    per funzionare funziona,

    prova a stampare l'array prima e dopo unset() con print_r.

    verifica anche che $id sia valorizzato correttamente.

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

  5. #5
    Utente di HTML.it L'avatar di Lucada
    Registrato dal
    Apr 2005
    Messaggi
    176
    Azz... dal risultato mi sembra che non vada tutto molto bene!

    Nonostante che mi funzioni tutto, (tranne l'eleminazione dell'oggetto).

    Vi incollo qui cosa succede se faccio un:

    print_r ($_SESSION['shop']);

    codice:
    Array ( [183] => __PHP_Incomplete_Class Object ( [__PHP_Incomplete_Class_Name] => prodotto [id] => 183 [q] => 1 ) [201] => __PHP_Incomplete_Class Object ( [__PHP_Incomplete_Class_Name] => prodotto [id] => 201 [q] => 1 ) [164] => __PHP_Incomplete_Class Object ( [__PHP_Incomplete_Class_Name] => prodotto [id] => 164 [q] => 1 ) )
    Forse quegli incomplete non ci devono stare che dite?

    Comunque per farvi capire gli indici sono come vedete [183] [201] [164] sono in poche parole gli id del prodotto.

    Come posso fare?

    Forse risolvo anche il problema per cancellare gli indici... almeno penso no?

    Ancora Grazie Mille
    Il vero io è quello che tu sei, non quello che gli altri hanno detto di te. [Paulo Coelho]

  6. #6
    metti un tag pre prima del print_r... almeno ti formatta l'output e sara' piu' chiaro.

    echo "<pre>";
    print_r($tuo_array);

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

  7. #7
    Utente di HTML.it L'avatar di Lucada
    Registrato dal
    Apr 2005
    Messaggi
    176
    Ecco qua l'array formattato...

    codice:
    Array
    (
        [102] => __PHP_Incomplete_Class Object
            (
                [__PHP_Incomplete_Class_Name] => prodotto
                [id] => 102
                [q] => 1
            )
    
        [186] => __PHP_Incomplete_Class Object
            (
                [__PHP_Incomplete_Class_Name] => prodotto
                [id] => 186
                [q] => 1
            )
    
    )
    E quegli incomplete non mi convincano tanto...

    In questo caso ci sono due prodotti come si vede... [102] e [186].
    Il vero io è quello che tu sei, non quello che gli altri hanno detto di te. [Paulo Coelho]

  8. #8
    In solido l'unset funziona.

    Stampalo prima e dopo e l'indice non c'e' piu'. E su questo metti pure una pietra tombale.

    per quanto riguarda il contenuto...



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

  9. #9
    Utente di HTML.it L'avatar di Lucada
    Registrato dal
    Apr 2005
    Messaggi
    176
    Boh... e sarò anche scemo che ci posso fa... ma ti faccio vedere che un va...

    Questo è il codice:


    codice:
    				
    
    $id=$_GET['pid'];
    
    echo $id;
    
    echo "<pre>"; 
    print_r ($_SESSION['shop']);
    
    unset($SESSION['shop'][$id]);
    
    echo "<pre>"; 
    print_r ($_SESSION['shop']);
    E questo è il risultato:

    codice:
    102 //l'id stampato.. quindi se lo porta dietro bene!
    
    Array
    (
        [102] => __PHP_Incomplete_Class Object
            (
                [__PHP_Incomplete_Class_Name] => prodotto
                [id] => 102
                [q] => 1
            )
    
        [186] => __PHP_Incomplete_Class Object
            (
                [__PHP_Incomplete_Class_Name] => prodotto
                [id] => 186
                [q] => 1
            )
    
    )
    Array
    (
        [102] => __PHP_Incomplete_Class Object
            (
                [__PHP_Incomplete_Class_Name] => prodotto
                [id] => 102
                [q] => 1
            )
    
        [186] => __PHP_Incomplete_Class Object
            (
                [__PHP_Incomplete_Class_Name] => prodotto
                [id] => 186
                [q] => 1
            )
    
    )
    E stampando l'array prima e dopo rimane invariato.

    Il vero io è quello che tu sei, non quello che gli altri hanno detto di te. [Paulo Coelho]

  10. #10
    Sara' sballato l'array. non ho mai visto un array simile. Guarda, ho preso da un esempio tra i miei file di test...
    codice:
    <?php
    $_POST = array("0" =>  array(
    "data" => "1234567890",
    "user" => "piero",
    "pwd" => "pippobaudobellittimo",
    ),
    "1" => array(
    "data" => "1234567890",
    "user" => "beppe",
    "pwd" => "fagiolosbollito",
    ),
    );
    
    echo "<pre>";
    print_r($_POST);
    unset($_POST[0]['data']);
    print_r($_POST);
    exit;
    ?>
    unset funziona. il problema e' diverso.


    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.