Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di ivy_76
    Registrato dal
    Dec 2004
    Messaggi
    1,822

    PHP: ancora array. Ciclare piu array

    Ciao

    dopo aver aperto altre discussioni ho deciso di rivedere tutto il codice e ho trovato 1 soluzione. Pero ho sempre dei problemi con gli array.
    In 2 parole vi spiego cosa devo fare. Ho una commessa (lavorazione da fare) . Ogni commessa è divisa in piu fasi di lavorazione divise ancora in giorni. In pratica devo salvare PER OGNI commessa tutte le lavorazioni effettuate divise per giorni. Ho tre array

    Primo array si chiama $commesse e conterrà dei valori tipo
    $commesse[0] = "0000001";
    $commesse[1] = "0000002";
    $commesse[2] = "0000003";

    Secondo array si chiama $articoli e come indice ha il valore della commessa precedente. Esempio

    $articoli["000001"] = "macchina";
    $articoli["000001"] = "specchietto";
    $articoli["000002"] = "portiera";


    Terzo array si chiama $lunedi e ha due indici. Il primo è la commessa e il secondo è l'aricolo. Esempio

    $lunedi["0000001"]["macchina"] = "8 ore";
    $lunedi["0000001"]["specchiatto"] = "2 ore";
    $lunedi["0000002"]["specchietto"] = "3 ore";


    Non riesco poi a visualizzare le ore lavorate di ogni singola fase per ogni commessa.
    In pratica dovrei ottenere

    COMMESSA 000001:
    fase : macchina ---> lavorato lunedi 8 ore
    fase : specchietto --> lavorato lunedi 2 ore

    Commessa 0000002
    fase : specchietto ---> lavorato lunedi 3 ore

    E cosi via. Pero mi incasino coi cicli. Mi potete dare una mano?
    TORTA DI RISO .. F I N I T A !!

    Da M.C.S.A. a impiegato pubblico :-(

  2. #2
    Commesse e articoli hanno un numero diverso di zeri. E' proprio così o hai sbagliato tu?
    I dilettanti costruirono l'Arca, i professionisti il Titanic!

  3. #3
    Studiandomi il problema ho trovato un grave errore:

    $articoli["000001"] = "macchina";
    $articoli["000001"] = "specchietto";
    $articoli["000002"] = "portiera";

    creando un array in questo modo tu cancelli il valore macchina (all'indice 000001). Come ottieni questi array? Con tre query per caso?
    I dilettanti costruirono l'Arca, i professionisti il Titanic!

  4. #4
    Utente di HTML.it L'avatar di ivy_76
    Registrato dal
    Dec 2004
    Messaggi
    1,822
    No gli zeri sono gli stessi. Era solo per dare un esempio.

    Ho provato a fare cosi :

    for ($i = 0 ; $i< $quanteCommesse ; $i++)
    {
    $commessa = $commesse [$i];

    for ($j = 0 ; $j < $quantiArticoli ; $j++ ) // Ciclo per gli articoli
    {
    $articolo = $a_articolo["$commessa"];

    for ($x = 0 ; $x < $quantiLunedi ; $x++ ) // ciclo per i giorni
    {
    $giorno1 = $lunedi["$commessa"]["$articolo"];
    $giorno2 = $martedi["$commessa"]["$articolo"];
    $giorno3 = $mercoledi["$commessa"]["$articolo"];
    $giorno4 = $giovedi["$commessa"]["$articolo"];
    $giorno5 = $venerdi["$commessa"]["$articolo"];
    $giorno6 = $sabato["$commessa"]["$articolo"];

    echo "$commessa : $articolo : $giorno1 : $giorno2 : $giorno3 : $giorno4 : $giorno5 : $giorno6
    ";
    }
    }

    }

    Ma non funziona correttamente. In pratica la prima riga non si vede ..
    TORTA DI RISO .. F I N I T A !!

    Da M.C.S.A. a impiegato pubblico :-(

  5. #5
    la prima riga non la vedi perché sovrascrivi il valore, per ogni indice in un array c'è SOLO un valore. Spiegami come peschi tutti sti array!
    I dilettanti costruirono l'Arca, i professionisti il Titanic!

  6. #6
    Utente di HTML.it L'avatar di ivy_76
    Registrato dal
    Dec 2004
    Messaggi
    1,822
    Gia. . hai ragione viene sovrascritto. Li popolo tramite query. Pero ho capito dove ho sbagliato. Ho una form nella quale ogni valore si chiama "lunedi[]" "martedi[]" e cosi via.
    Ho cambiato i nomi cosi:
    echo "<input type='text' name=lunedi[$commessa] value=''>";

    Essendo in un ciclo la varibile commessa ha dei valori diversi mentre l'indice è sempre lo stesso e i dati sono sovrascritti. Devo trvare il modo di impedirlo ...
    TORTA DI RISO .. F I N I T A !!

    Da M.C.S.A. a impiegato pubblico :-(

  7. #7
    Utente di HTML.it L'avatar di ivy_76
    Registrato dal
    Dec 2004
    Messaggi
    1,822
    Ce l'ho fatta ! Ho messo il nome variabile cosi:

    $articolo[$commessa][]


    e poi visualizzo tutto cosi

    $quanteCommesse = count($commesse);
    $quantiArticoli = count($a_articolo);
    $quantiGiorni = count($lunedi);

    for ($i = 0 ; $i< $quanteCommesse ; $i++)
    {
    $commessa = $commesse [$i];

    for ($j = 0 ; $j < $quantiGiorni ; $j++ ) // Ciclo per gli articoli
    {
    $articolo = $a_articolo["$commessa"][$j];

    $giorno1 = $lunedi["$commessa"]["$articolo"];
    $giorno2 = $martedi["$commessa"]["$articolo"];
    $giorno3 = $mercoledi["$commessa"]["$articolo"];
    $giorno4 = $giovedi["$commessa"]["$articolo"];
    $giorno5 = $venerdi["$commessa"]["$articolo"];
    $giorno6 = $sabato["$commessa"]["$articolo"];

    echo "$commessa : $articolo : $giorno1 : $giorno2 : $giorno3 : $giorno4 : $giorno5 : $giorno6
    ";

    }

    }


    Che fatica.. se lo avessi saputo anni fa ... avrei fatto un altro lavoro ....
    TORTA DI RISO .. F I N I T A !!

    Da M.C.S.A. a impiegato pubblico :-(

  8. #8
    io credo che ti sei complicato la vita. Se avessi fatto una sola query con un ciclo semplice risolvevi il problema. Ricordati che 3 cicli annidati portano ad una complessità n^3 che nn è l'ideale per le prestazioni.
    I dilettanti costruirono l'Arca, i professionisti il Titanic!

  9. #9
    E' possibile utilizzare una lista in php o un ABR??
    Roberto Dungino

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.