Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080

    Suggerimento gestione variabili

    Ho tanti dati che mi vengono passati in variabili post e li recupero così:
    Codice PHP:
    foreach ( $_POST as $key => $value )
    {
        echo 
    $key" - " .$value "<br>";

    Quello che ottengo oltre alla key sono questi valori:
    Esempio:
    Codice PHP:
    $variabile1 "Panda--Rossa--Metano";
    $variabile2 "Panda--Bianca--Metano";
    $variabile3 "Panda--Verde--Metano";
    $variabile4 "Ferrari--Azzurra--Benzina";
    $variabile5 "Maserati--Azzurra--Benzina"
    Come vedete ho diversi dati in una unica variabile che vado poi a dividere con un explode.
    Quello di cui ho bisogno partedo da quei dati è raggrupparli per marca, come posso fare?

    In pratica per ogni tipologia di macchina devo fare una unica insert che nel caso della panda inserirò le variabili:
    Panda, Rossa, Bianca, Verde, Metano
    nel caso della Ferrari sarà:
    Ferrari, Azzurra, vuoto, vuoto, Benzina

    (i colori non possono essere più di tre)

    Grazie a chi ha idee

  2. #2
    Utente di HTML.it L'avatar di brodik
    Registrato dal
    Jan 2009
    Messaggi
    764
    Codice PHP:
    <?php

    $POST 
    = array(1=>"Panda--Rossa--Metano",2=>"Panda--Bianca--Metano",3=>"Panda--Verde--Metano",4=>"Ferrari--Azzurra--Benzina",5=>"Maserati--Azzurra--Benzina",6=>"Panda--Rossa--Benzina");

    $globale = array();

    foreach (
    $POST as $key => $value){
     
    $arr explode("--"$value); //$arr = array("Panda", "Rossa", "Metano")
    //$arr[0] = marca
    //$arr[1] = colore
    //$arr[2] = alimentazione

    if (!array_key_exists($arr[0], $globale)) {
        
    $struct = array("colore"=>array($arr[1]), "alimentazione"=>array($arr[2]));
        
    $globale[$arr[0]] = $struct;
    }

    $col $globale[$arr[0]]["colore"];
    $alim $globale[$arr[0]]["alimentazione"];

    if(!
    in_array($arr[1], $col)){
        
    $globale[$arr[0]]["colore"][] = $arr[1];
    }

    if(!
    in_array($arr[2], $alim)){
        
    $globale[$arr[0]]["alimentazione"][] = $arr[2];
    }

    }

    print 
    "<pre>";
    print_r($globale);
    print 
    "</pre>";

    ?>
    RISULTATO
    codice:
    Array
    (
        [Panda] => Array
            (
                [colore] => Array
                    (
                        [0] => Rossa
                        [1] => Bianca
                        [2] => Verde
                    )
    
                [alimentazione] => Array
                    (
                        [0] => Metano
                        [1] => Benzina
                    )
    
            )
    
        [Ferrari] => Array
            (
                [colore] => Array
                    (
                        [0] => Azzurra
                    )
    
                [alimentazione] => Array
                    (
                        [0] => Benzina
                    )
    
            )
    
        [Maserati] => Array
            (
                [colore] => Array
                    (
                        [0] => Azzurra
                    )
    
                [alimentazione] => Array
                    (
                        [0] => Benzina
                    )
    
            )
    
    )
    Poi basta che fai dei cicli sugli array e gestisci i dati come meglio credi
    eXvision

  3. #3
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    Grazie Mille! A occhio ho capito domani provo a mettere in pratica!

  4. #4
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    Sono riuscita ad adattare il tutto al mio codice, ho fatto i test ed è perfetto! (Specifico solo che nel mio caso il colore non varia, ma è un dato che mi serve quindi va benissimo)

    Con al funzione count($globale) riesco ad ottenere il numero di righe di ordine che dovrò inserire.
    Il mio problema adesso è lo step 2.

    Semplificando con un output del genere
    codice:
    Array
    (
        [Maserati] => Array
            (
                [colore] => Array
                    (
                        [0] => Azzurra
                    )
    
                [alimentazione] => Array
                    (
                        [0] => Benzina
                        [1] => Metano
    
                    )
    
            )
    
    )
    Come recupero i valori: Maserati, azzurra e benzina?
    Ho guardato della documentazione sugli array multidimensionali, ma non ho trovato la risposta.

    Tnx

  5. #5
    Utente di HTML.it L'avatar di brodik
    Registrato dal
    Jan 2009
    Messaggi
    764
    sempre in riferimento all'esempio di prima
    Codice PHP:
    //marche auto
    foreach ($globale as $key => $value){
        print 
    $key."</br>";
    }

    //colore auto, sostituisci "Panda" con il nome di un altra marca
    foreach ($globale["Panda"]["colore"] as $key => $value){
        print 
    $value."</br>";
    }

    //alimentazione auto, sostituisci "Panda" con il nome di un altra marca
    foreach ($globale["Panda"]["colore"] as $key => $value){
        print 
    $value."</br>";

    eXvision

  6. #6
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    Grazie!

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.