Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 18 su 18
  1. #11
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Spiegami cosa devi fare.
    Tu hai questo array
    Codice PHP:
    $queryOrdini = array(
        array(
            
    "collezione" => "C180",
            
    "zona"       => "Z27",
            
    "agente"     => "AGENTE",
            
    "cliente"    => "CODICE_CLIENTE",
            
    "ragsoc"     => "RAG SOC",
            
    "tot_netto"  => "5272.50",
            
    "tot_lordo"  => "5272.50",
            
    "tot_qta"    => "90"
        
    ),
        array(
            
    "collezione" => "C180",
            
    "zona"       => "Z27",
            
    "agente"     => "AGENTE",
            
    "cliente"    => "CODICE_CLIENTE",
            
    "ragsoc"     => "CLIENTE",
            
    "tot_netto"  => "2210.50",
            
    "tot_lordo"  => "2210.50",
            
    "tot_qta"    => "42"
        
    )
    ); 
    Ora cosa deve succedere? Quali sono le condizioni per la somma?
    Devi sapere la quantità totale di una certa collezione in una certa zona?
    Per esempio qui dovrebbe venirti
    Collezione C180 nella zona Z27 = 90 + 42 = 132?

  2. #12
    il classico foreach già lo faccio.
    però in questa pagina eseguo due query differenti, che non posso mettere insieme con join e varie.
    nella prima query faccio il foreach ed estraggo dei dati.
    poi per evitare di eseguire altre parecchie subquery parametrizzate dal primo ciclo, ho pensato di usare array_filter per cercare altri dati.
    in generale funziona bene, fino a che mi sono imbattuto nel problema della somma dei dati.
    avrei già risolto se avessi usato un foreach interno al primo, ma preferivo evitare.

    comunque, quel codice funziona.
    ho modificato il mio usando il tuo di esempio:
    Codice PHP:
    $totCollQtaAgente 0;
    array_filter($queryOrdini, function($item) use ($agenteZona$coll, &$totCollQtaAgente) {
        if (
    $agenteZona == $item['zona'] && $coll == $item['collezione']) {
            
    $tmpQta intval(trim($item['tot_qta']));
            
    $totCollQtaAgente += $tmpQta;
        }
    });
    echo 
    $totCollQtaAgente
    grazie!!!

  3. #13
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Spiegami cosa devi fare.
    Tu hai questo array
    Codice PHP:
    $queryOrdini = array(
        array(
            
    "collezione" => "C180",
            
    "zona"       => "Z27",
            
    "agente"     => "AGENTE",
            
    "cliente"    => "CODICE_CLIENTE",
            
    "ragsoc"     => "RAG SOC",
            
    "tot_netto"  => "5272.50",
            
    "tot_lordo"  => "5272.50",
            
    "tot_qta"    => "90"
        
    ),
        array(
            
    "collezione" => "C180",
            
    "zona"       => "Z27",
            
    "agente"     => "AGENTE",
            
    "cliente"    => "CODICE_CLIENTE",
            
    "ragsoc"     => "CLIENTE",
            
    "tot_netto"  => "2210.50",
            
    "tot_lordo"  => "2210.50",
            
    "tot_qta"    => "42"
        
    )
    ); 
    Ora cosa deve succedere? Quali sono le condizioni per la somma?
    Devi sapere la quantità totale di una certa collezione in una certa zona?
    Per esempio qui dovrebbe venirti
    Collezione C180 nella zona Z27 = 90 + 42 = 132?
    non avevo letto la tua risposta.
    in pratica ho spiegato cosa dovrei ottenere nel post precedente.
    e cmq si, hai capito bene!

  4. #14
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Quote Originariamente inviata da fermat Visualizza il messaggio
    il classico foreach già lo faccio.
    però in questa pagina eseguo due query differenti, che non posso mettere insieme con join e varie.
    nella prima query faccio il foreach ed estraggo dei dati.
    poi per evitare di eseguire altre parecchie subquery parametrizzate dal primo ciclo, ho pensato di usare array_filter per cercare altri dati.
    in generale funziona bene, fino a che mi sono imbattuto nel problema della somma dei dati.
    avrei già risolto se avessi usato un foreach interno al primo, ma preferivo evitare.

    comunque, quel codice funziona.
    ho modificato il mio usando il tuo di esempio:
    Codice PHP:
    $totCollQtaAgente 0;
    array_filter($queryOrdini, function($item) use ($agenteZona$coll, &$totCollQtaAgente) {
        if (
    $agenteZona == $item['zona'] && $coll == $item['collezione']) {
            
    $tmpQta intval(trim($item['tot_qta']));
            
    $totCollQtaAgente += $tmpQta;
        }
    });
    echo 
    $totCollQtaAgente
    grazie!!!
    Mica ho capito perchè non puoi fare
    Codice PHP:
    $totCollQtaAgente 0;
    foreach(
    $queryOrdini as $item){
        if (
    $agenteZona == $item['zona'] && $coll == $item['collezione']) {
            
    $tmpQta intval(trim($item['tot_qta']));
            
    $totCollQtaAgente += $tmpQta;
        }
    }
    echo 
    $totCollQtaAgente

  5. #15
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Una cosa un po' più elaborata
    Codice PHP:
    $queryOrdini = array(
        array(
            
    "collezione" => "C180",
            
    "zona"       => "Z27",
            
    "tot_qta"    => "29"
        
    ),
        array(
            
    "collezione" => "C320",
            
    "zona"       => "Z37",
            
    "tot_qta"    => "48"
        
    ),
        array(
            
    "collezione" => "C180",
            
    "zona"       => "Z27",
            
    "tot_qta"    => "65"
        
    ),
        array(
            
    "collezione" => "C180",
            
    "zona"       => "Z28",
            
    "tot_qta"    => "57"
        
    ),
        array(
            
    "collezione" => "C320",
            
    "zona"       => "Z39",
            
    "tot_qta"    => "73"
        
    ),
        array(
            
    "collezione" => "C180",
            
    "zona"       => "Z27",
            
    "tot_qta"    => "42"
        
    ),
        array(
            
    "collezione" => "C320",
            
    "zona"       => "Z37",
            
    "tot_qta"    => "23"
        
    ),
        array(
            
    "collezione" => "C180",
            
    "zona"       => "Z28",
            
    "tot_qta"    => "12"
        
    ),
        array(
            
    "collezione" => "C320",
            
    "zona"       => "Z37",
            
    "tot_qta"    => "31"
        
    )
    );

    $totali = array();

    foreach( 
    $queryOrdini as $ordine )
    {
        if ( 
    array_key_exists($ordine['collezione'], $totali) )
        {
            if ( 
    array_key_exists($ordine['zona'], $totali$ordine['collezione'] ]) )
            {
                
    $totali$ordine['collezione'] ][ $ordine['zona'] ] += $ordine['tot_qta'];
            }
            else
            {
                
    $totali$ordine['collezione'] ][ $ordine['zona'] ] = $ordine['tot_qta'];
            }
        }
        else
        {
            
    $totali$ordine['collezione'] ][ $ordine['zona'] ] = $ordine['tot_qta'];
        }
    }

    foreach(
    $totali as $codice => $collezione)
    {
        echo 
    "Collezione: " $codice "<br>";
        foreach (
    $collezione as $zona => $qt)
        {
            echo 
    "Zona: " $zona ": " $qt " unità<br>";
        }
        echo 
    "<br>";


  6. #16
    @boots
    no scusa, non avevo capito io, pensavo ad un'altra cosa.

    @Alhazred
    capito il concetto, proverò anche questa soluzione.

    grazie mille!!

  7. #17
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,344
    La soluzione di boots con & funziona. Atrimenti puoi anche togliere $totCollQtaAgente dall'use ed scrivere global $totCollQtaAgente; nella funzione.
    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

  8. #18
    Quote Originariamente inviata da badaze Visualizza il messaggio
    La soluzione di boots con & funziona. Atrimenti puoi anche togliere $totCollQtaAgente dall'use ed scrivere global $totCollQtaAgente; nella funzione.
    si ho provato anche con global.
    ma in generale non mi piace usarlo!

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.