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

    Inserire una riga al cambio zona

    ciao!

    ho un problema di logica, probabilmente banale, ma mi sono incastrato.
    in sostanza, riempio un file excel da query.
    tra i vari dati c'è un campo zona.
    quando cambia la zona, devo inserire una ulteriore riga.
    e qui mi impappino!.
    vi giro il mio codice:

    Codice PHP:
        $zonaOld 'ND';
        foreach (
    $queryClienti as $cl) {
            
    $clienteCodice $cl['cliente'];
            
    $zona $cl['zona'];

            
    $xls->setActiveSheetIndex(0)
                    ->
    setCellValue('A' $row$zona)
                    ->
    setCellValue('B' $row$clienteCodice)
                    ->
    setCellValue('C' $row$cl['ragsoc'])
                    ->
    setCellValue('D' $row$tmp1Netto)
                    ->
    setCellValue('E' $row$tmp1Lordo)
                    ->
    setCellValue('F' $row$tmp1Qta)
                    ->
    setCellValue('G' $row$tmp2Netto)
                    ->
    setCellValue('H' $row$tmp2Lordo)
                    ->
    setCellValue('I' $row$tmp2Qta)
                    ->
    setCellValue('J' $row$tmp3Netto)
                    ->
    setCellValue('K' $row$tmp3Lordo)
                    ->
    setCellValue('L' $row$tmp3Qta)
                    ->
    setCellValue('M' $row$tmpProp)
                    ->
    setCellValue('N' $row$tmpAgente)
                    ->
    setCellValue('O' $row$tmpNote);
            
    $row++;
            
            
    // CAMBIO ZONA, PROVO AD INSERIRE RIGA
            
    if ($zonaOld != 'ND' && $zonaOld != $zona) {
                
    $xls->setActiveSheetIndex(0)
                        ->
    setCellValue('A' $row$zona)
                        ->
    setCellValue('B' $row'CLIENTI NUOVI')
                        ->
    setCellValue('C' $row'')
                        ->
    setCellValue('D' $row'')
                        ->
    setCellValue('E' $row'')
                        ->
    setCellValue('F' $row'')
                        ->
    setCellValue('G' $row'')
                        ->
    setCellValue('H' $row'')
                        ->
    setCellValue('I' $row'')
                        ->
    setCellValue('J' $row'')
                        ->
    setCellValue('K' $row'')
                        ->
    setCellValue('L' $row$queryBudgetNuovi[0]['bdgn_num_clienti'])
                        ->
    setCellValue('M' $row$queryBudgetNuovi[0]['bdgn_proposta'])
                        ->
    setCellValue('N' $row$queryBudgetNuovi[0]['bdgn_agente'])
                        ->
    setCellValue('O' $row$queryBudgetNuovi[0]['bdgn_note']);
                
    $row++;
            }
            
    $zonaOld $cl['zona'];
        } 
    qualche suggerimento??

  2. #2
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Io sposterei l'if prima di scrivere la riga, per il resto mi pare ok. Che problema ti da?

  3. #3
    ciao!

    intendi così?
    Codice PHP:
            if ($zonaOld != 'ND' && $zonaOld != $zona) {
                
    $xls->setActiveSheetIndex(0)
                        ->
    setCellValue('A' $row$zona)
                        ->
    setCellValue('B' $row'CLIENTI NUOVI')
                        ->
    setCellValue('C' $row'')
                        ->
    setCellValue('D' $row'')
                        ->
    setCellValue('E' $row'')
                        ->
    setCellValue('F' $row'')
                        ->
    setCellValue('G' $row'')
                        ->
    setCellValue('H' $row'')
                        ->
    setCellValue('I' $row'')
                        ->
    setCellValue('J' $row'')
                        ->
    setCellValue('K' $row'')
                        ->
    setCellValue('L' $row$queryBudgetNuovi[0]['bdgn_num_clienti'])
                        ->
    setCellValue('M' $row$queryBudgetNuovi[0]['bdgn_proposta'])
                        ->
    setCellValue('N' $row$queryBudgetNuovi[0]['bdgn_agente'])
                        ->
    setCellValue('O' $row$queryBudgetNuovi[0]['bdgn_note']);
                
    $row++;
            }

            
    $xls->setActiveSheetIndex(0)
                    ->
    setCellValue('A' $row$zona)
                    ->
    setCellValue('B' $row$clienteCodice)
                    ->
    setCellValue('C' $row$cl['ragsoc'])
                    ->
    setCellValue('D' $row$tmp1Netto)
                    ->
    setCellValue('E' $row$tmp1Lordo)
                    ->
    setCellValue('F' $row$tmp1Qta)
                    ->
    setCellValue('G' $row$tmp2Netto)
                    ->
    setCellValue('H' $row$tmp2Lordo)
                    ->
    setCellValue('I' $row$tmp2Qta)
                    ->
    setCellValue('J' $row$tmp3Netto)
                    ->
    setCellValue('K' $row$tmp3Lordo)
                    ->
    setCellValue('L' $row$tmp3Qta)
                    ->
    setCellValue('M' $row$tmpProp)
                    ->
    setCellValue('N' $row$tmpAgente)
                    ->
    setCellValue('O' $row$tmpNote);
            
    $row++;

            
    $zonaOld $cl['zona']; 

    facendo in questo modo, la riga aggiuntiva per la prima zona non viene scritta.
    per le zone successive, mi sembra venga scritta, ma all'inizio della zona e non alla fine.

    con il codice precedente, la riga aggiuntiva per la prima zona non viene scritta.
    per le zone successive, viene scritta come seconda riga della zona, e non alla fine.

  4. #4
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Per far scrivere anche la prima zona, basta che togli la condizione $oldZone != 'ND' (così ti viene a mo di header)
    Non ho ben capito la differenza tra inizio e fine ... la tua riga extra è un intestazione o un fine zona?
    Tra l'altro per come vedo il codice non mi pare ci sia differenza.
    Magari, fai un esempio su come vuoi che ti esca

  5. #5
    in sostanza, facendo un esempio banale:

    codice:
    ZONA_1   CLIENTE  VALORE
    ZONA_1   CLIENTE  VALORE
    ZONA_1   RIGA DA AGGIUNGERE
    
    ZONA_2   CLIENTE  VALORE
    ZONA_2   CLIENTE  VALORE
    ZONA_2   CLIENTE  VALORE
    ZONA_2   RIGA DA AGGIUNGERE
    ti ho messo un spazio per evidenziare il cambio zona.
    tra il cambio delle due zone, devo mettere la riga da aggiungere.

    invece con il mio codice, viene una cosa del genere:
    codice:
    ZONA_1   CLIENTE  VALORE
    ZONA_1   CLIENTE  VALORE
    
    ZONA_2   CLIENTE  VALORE
    ZONA_2   RIGA DA AGGIUNGERE
    ZONA_2   CLIENTE  VALORE
    ZONA_2   CLIENTE  VALORE
    con l'ultimo esempio di codice che ho postato:
    codice:
    ZONA_1   RIGA DA AGGIUNGERE
    ZONA_1   CLIENTE  VALORE
    ZONA_1   CLIENTE  VALORE
    
    ZONA_2   RIGA DA AGGIUNGERE
    ZONA_2   CLIENTE  VALORE
    ZONA_2   CLIENTE  VALORE
    ZONA_2   CLIENTE  VALORE

  6. #6
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    "Riga da aggiungere" è sempre uguale, o cambia in base alla zona ?

  7. #7
    cambia in base alla zona, ma i dati li prendo facendo una subquery.
    non l'ho messa nel codice per non fare casino.
    si trova dentro al foreach principale:

    Codice PHP:
    foreach ($queryClienti as $cl) {
      
    $queryBudgetNuovi $budgetNuovi->getByZonaCollezione($zona$bdgCollezione);

      
    // RESTO DEL CODICE

    però, a livello teorico non dovrebbe cambiare nulla.

  8. #8
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Allora prova
    Codice PHP:
    $zonaOld 'ND';
    foreach (
    $queryClienti as $cl) {
            
    $clienteCodice $cl['cliente'];
            
    $zona $cl['zona'];
            if (
    $zonaOld != 'ND' && $zonaOld != $zona) {
                
    // nota $zonaOld, visto che ci troviamo su elemento con zona successiva
               
    $queryBudgetNuovi $budgetNuovi->getByZonaCollezione($zonaOld$bdgCollezione);
               
    // Nuova riga
            
    }
            
    // riga
            
            
    $row++;
            
    $zonaOld $cl['zona'];  
    }
    if(
    $zonaOld != 'ND'){ // nel caso l'array è vuoto
       
    $queryBudgetNuovi $budgetNuovi->getByZonaCollezione($zonaOld$bdgCollezione);
       
    // Nuova riga per l'ultima zona


  9. #9
    uhm c'è qualcosa che nn mi quadra.

    quel controllo su $zonaOld io l'ho messo perchè alla prima iterazione è ovviamente vuoto.
    e se non lo mettevo mi creava problemi.
    però non è detto che abbia fatto corretto ovviamente.

    questo non mi dovrebbe servire, in quanto l'ultima zona non ha questo problema:

    Codice PHP:
        if ($zonaOld != 'ND') { // nel caso l'array è vuoto
            
    $queryBudgetNuovi $budgetNuovi->getByZonaCollezione($zonaOld$bdgCollezione);
            
    // Nuova riga per l'ultima zona
        


    cmq ho provato il codice così:
    Codice PHP:
        $zonaOld 'ND';
        foreach (
    $queryClienti as $cl) {
            
    $clienteCodice $cl['cliente'];
            
    $zona $cl['zona'];

            if (
    $zonaOld != 'ND' && $zonaOld != $zona) {
                
    $queryBudgetNuovi $budgetNuovi->getByZonaCollezione($zona$bdgCollezione);
                
    $xls->setActiveSheetIndex(0)
                        ->
    setCellValue('A' $row$zona)
                        ->
    setCellValue('B' $row'CLIENTI NUOVI')
                        ->
    setCellValue('C' $row'')
                        ->
    setCellValue('D' $row'')
                        ->
    setCellValue('E' $row'')
                        ->
    setCellValue('F' $row'')
                        ->
    setCellValue('G' $row'')
                        ->
    setCellValue('H' $row'')
                        ->
    setCellValue('I' $row'')
                        ->
    setCellValue('J' $row'')
                        ->
    setCellValue('K' $row'')
                        ->
    setCellValue('L' $row$queryBudgetNuovi[0]['bdgn_num_clienti'])
                        ->
    setCellValue('M' $row$queryBudgetNuovi[0]['bdgn_proposta'])
                        ->
    setCellValue('N' $row$queryBudgetNuovi[0]['bdgn_agente'])
                        ->
    setCellValue('O' $row$queryBudgetNuovi[0]['bdgn_note']);
                
    $row++;
            }

            
    $xls->setActiveSheetIndex(0)
                    ->
    setCellValue('A' $row$zona)
                    ->
    setCellValue('B' $row$clienteCodice)
                    ->
    setCellValue('C' $row$cl['ragsoc'])
                    ->
    setCellValue('D' $row$tmp1Netto)
                    ->
    setCellValue('E' $row$tmp1Lordo)
                    ->
    setCellValue('F' $row$tmp1Qta)
                    ->
    setCellValue('G' $row$tmp2Netto)
                    ->
    setCellValue('H' $row$tmp2Lordo)
                    ->
    setCellValue('I' $row$tmp2Qta)
                    ->
    setCellValue('J' $row$tmp3Netto)
                    ->
    setCellValue('K' $row$tmp3Lordo)
                    ->
    setCellValue('L' $row$tmp3Qta)
                    ->
    setCellValue('M' $row$tmpProp)
                    ->
    setCellValue('N' $row$tmpAgente)
                    ->
    setCellValue('O' $row$tmpNote);
            
    $row++;
            
    $zonaOld $cl['zona'];
        }

        if (
    $zonaOld != 'ND') { // nel caso l'array è vuoto
            
    $queryBudgetNuovi $budgetNuovi->getByZonaCollezione($zonaOld$bdgCollezione);
            
    // Nuova riga per l'ultima zona
        


    ottengo il risultato di prima, esattamente questo:
    codice:
    ZONA_1   CLIENTE  VALORE
    ZONA_1   CLIENTE  VALORE
    
    ZONA_2   RIGA DA AGGIUNGERE
    ZONA_2   CLIENTE  VALORE
    ZONA_2   CLIENTE  VALORE
    ZONA_2   CLIENTE  VALORE
    Ultima modifica di fermat; 25-07-2018 a 13:58

  10. #10
    allora, faccio un pò di pulizia.

    questo codice mi stampa direttamente sulla pagina:
    Codice PHP:
        $zonaOld 'ND';
        foreach (
    $queryClienti as $cl) {
            
    $clienteCodice $cl['cliente'];
            
    $zona $cl['zona'];

            echo 
    $zona ' - ' $cl['ragsoc'] . '<br>';

            if (
    $zonaOld != 'ND' && $zonaOld != $zona) {
                
    $queryBudgetNuovi $budgetNuovi->getByZonaCollezione($zona$bdgCollezione);
                echo 
    $zona ' - RIGA DA AGGIUNGERE con dati da $queryBudgetNuovi' '<br>';
            }

            
    $zonaOld $cl['zona'];
        } 

    questo l'output:
    codice:
    Z00 - CLIENTE
    Z00 - CLIENTE
    Z06 - CLIENTE
    Z06 - RIGA DA AGGIUNGERE con dati da $queryBudgetNuovi
    Z06 - CLIENTE
    Z06 - CLIENTE
    questo quello che mi dovrebbe uscire:
    codice:
    Z00 - CLIENTE
    Z00 - CLIENTE
    Z00 - RIGA DA AGGIUNGERE con dati da $queryBudgetNuovi
    Z06 - CLIENTE
    Z06 - CLIENTE
    Z06 - CLIENTE
    Z06 - RIGA DA AGGIUNGERE con dati da $queryBudgetNuovi
    quel ND ci sarebbe solo alla prima iterazione, giusto perchè all'inizio $zonaOld è vuoto.

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.