Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    Problema con array multiplo

    Ciao a tutti raga..

    ho un problema che non riesco a risolvere. sarà che gli array mi fanno uscire pazzi

    ho creato un catalogo prodotti e un pulsante che aggiunge un prodotto al carrello. Successivamente nel carrello vedo tutte le indicazioni del prodotto, prezzo e possibilità di eliminare il singolo prodotto dalla SESSIONE.

    ora vorrei passare un secondo parametro, la quantità.

    questo è il mio codice dell'array:

    codice:
        $products = isset($_SESSION['products']) ? $_SESSION['products'] : array();
        $products[] = $_GET['id']; 
        $_SESSION['products'] = $products;
    Dove $_GET['id'] è il codice prodotto.

    e questo è il foreach:

    codice:
     foreach($_SESSION['products'] as $result => $value) {
    echo $value;
    ...
    }
    Come faccio a passare il secondo parametro?
    Grazie mille

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Prova cosi.

    Codice PHP:
    /*** registrazione dell'id e della quantità ***/
    $products             = isset($_SESSION['products']) ? $_SESSION['products'] : array();    
    $products[]           = array('id'=>$_GET['id'],'qta'=>$_GET['quantita']);     
    $_SESSION['products'] = $products;


    /*** simolazione del foreach. Rimpiazzare $_PIPPO con $_SESSION */
    $products           = array();
    $products[]         = array('id'=>'00120','qta'=>10);
    $products[]         = array('id'=>'00121','qta'=>11);
    $products[]         = array('id'=>'00122','qta'=>12);
    $_PIPPO['products'] = $products;

    foreach(
    $_PIPPO['products'] as $result) {
       echo 
    "id = ".$result['id'];
       echo 
    " - qta = ".$result['qta'];  
      echo 
    "<br/>";

    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Grazie mille, funziona alla perfezione

  4. #4
    Un ultima cosa, ho notato che nel cancellare un elemento nell'array, dopo la prima eliminazione non va più.
    Devo cancellare entrambi gli elmenti dell'array? ID e quantità?

    fin ora la eseguivo così


    codice:
    $item= codice del prodotto
    
    
      $key =array_search($item, $_SESSION['products']);
    unset($_SESSION['products'][$key]);

    Grazie

  5. #5
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    esattamente, di un array composto così
    codice:
    array(1) {
      ["some"]=>
      array(2) {
        ["thing"]=>
        string(9) "something"
        ["how"]=>
        string(7) "somehow"
      }
    tu cosa vuoi cancellare? l'intero array "some" o una parte di esso "thing" o "how"?

  6. #6
    Ciao, io passo 2 parametri all'array: codice e quantità, quindi alla cancellazione devo cancellare il codice (che lo cerco con array_search) e la quantità corrispondente. Secondo me sbaglio il metodo di cancellazione, nel senso che gli dico solo di cancellare il codice... infatti fancendo l'unset del primo elemento sembra funzionare, ma dopo non va più.


    questo è l'esempio con 2 elementi aggiunti al carrello


    codice:
    Array ( [0] => Array ([id] => DNAC05 [qta] => 1) [1] => Array ([id] => DNGN046 [qta] => 4) )
    Ultima modifica di carmelo86; 16-05-2015 a 11:33

  7. #7
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    e se tu facessi diventare il tuo array così? non dovresti neppure usare array_search() e per aggiungere un elemento in più dello stesso oggetto basterebbe una somma
    codice:
    Array ( [DNAC05] => Array ([id] => DNAC05 [qta] => 1) [DNGN046] => Array ([id] => DNGN046 [qta] => 4) )

  8. #8
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Non so se esiste una funzione php adhoc ma.

    Codice PHP:
    <?php
    function pippo(&$array,$articolo) {
        
    $elementToUnset null;
        foreach(
    $array as $key => $subArray) {
            if (
    $subArray['id'] == $articolo) {
                
    $elementToUnset $key;
                break;
            }
        }
        if (
    $elementToUnset != null) {
            unset(
    $array[$elementToUnset]);
        }
    }

    $codice = Array (0=> Array('id'=> 'DNAC05','qta' => 1),1=> Array('id' => 'DNGN046','qta' => 4),2=> Array('id'=> 'DNAC055','qta' => 145),3=> Array('id' => 'DNGN0896','qta' => 89) );

    var_dump($codice);
    print 
    "<br>=====<br/>";
    pippo($codice,'DNAC055');
    var_dump($codice);
    print 
    "<br>=====<br/>";
    pippo($codice,'DNGN046');
    var_dump($codice);
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  9. #9
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    ma perché complicarsi la vita, mi chiedo
    Codice PHP:
    <?php
    // una lista di test per i prodotti
    $p = array("prodotto1""prodotto2""prodotto3");

    session_start();
    print_r($_SESSION); // controllo cosa ho in sessione (al primo giro sarà vuota)
    echo "-------\n";

    // inserisco i miei prodotti
    foreach($p as $v){
        
    $_SESSION["products"][$v]['id'] = $v;
        
    $_SESSION["products"][$v]["qta"] = rand(1,6);
        
    // dato che id e indice dell'array coincidono, si potrebbe anche evitare di inserire la chiave id nel sottoarray
    }
    print_r($_SESSION); // controllo cosa ho in sessione dopo averli inseriti

    echo "-------\n";

    // cancello tutti i dati relativi al "prodotto2"
    unset($_SESSION['products']["prodotto2"]);
    print_r($_SESSION); // controllo cosa ho in sessione dopo aver cancellato un elemento

    echo "-------\n";

    // aggiungo un oggetto ad uno degli elementi rimasti
    $_SESSION["products"]["prodotto1"]["qta"] += 1;
    print_r($_SESSION); // controllo cosa ho in sessione dopo aver aggiunto un oggetto ad un elemento
    ?>
    Ultima modifica di clasku; 16-05-2015 a 12:29

  10. #10
    Risolto col metodo di Badaze.

    Perfetto.. Sei un genio
    Grazie mille

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.