Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Sezioni, categorie e salto pagina

    ciao!
    ho un problema che non riesco a risolvere.
    allora, io faccio una query per tirare fuori tutte le sezionie, e per ogni sezioni tutte le categorie collegate.
    una cosa del genere:
    codice:
    PER OGNI SEZIONE
       STAMPA NOME SEZIONE
       PER OGNI CATEGORIA DELLA SEZIONE
           STAMPA NOME CATEGORIA
    poi ho dei salti pagina:
    codice:
    <div style="page-break-before: always;"></div>
    in pratica metto questo div dopo ogni sezione, e dopo ogni tre categorie.
    il problema viene fuori quando dopo tre categorie, c'è anche il cambio sezione.
    in questo caso si verifica un doppio cambio pagina.
    avete una dritta al riguardo??
    non mi vengono più idee.....

  2. #2
    stampa il salto pagina per la sezione e per la categoria nella stessa porzione di codice. con dei flag (uno o due) controlli che se hai già stampato uno dei due salti, allora non stampi il secondo. Ovviamente poi riazzera i flag.
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    ciao!
    ho ragionato un pò sul tuo suggerimento.
    il problema è che non posso stampare il salto pagina nella stessa sezione per un problema di div annidati.
    dovrei ristrutturare tutto!!

  4. #4
    Quote Originariamente inviata da fermat Visualizza il messaggio
    ciao!
    ho ragionato un pò sul tuo suggerimento.
    il problema è che non posso stampare il salto pagina nella stessa sezione per un problema di div annidati.
    dovrei ristrutturare tutto!!
    che ti devo dire? posiziona i flag in maniera opportuna... prova a scrivere a parole il ragionamento dell'algoritmo e poi lo si prova a tradurre in php
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  5. #5
    ti provo a riscrivere un pezzo di programma, perchè tutto è troppo lungo.
    diciamo una cosa del genere:
    Codice PHP:
            <?php
            $countRighe 
    0;
            foreach (
    getSezioni() as $var): ?>
                  <div class="sezione">
                        <strong>NOME SEZIONE</strong>
                         <?php foreach (getCategoriePerSezione($var['s_id']) as $c): ?>
                             <div class="cat">
                                 <strong>NOME CATEGORIA</strong>
                                 <?php
                                  $countRighe
    ++;
                                  if (
    $countRighe == 3) {
                                    
    $countRighe 0;
                                    echo 
    '<div style="page-break-before: always;"></div>';
                                  }
                                  
    ?>
                             </div>
                             <?php 
                                   
    endforeach; 
                                   
    $countRighe 0;
                              
    ?>
                  </div>
                  <div style="page-break-before: always;"></div>
            <?php endforeach; ?>
    quindi, cosa succede.
    che se prima della fine della sezione ci sono tre righe, c'è un dopppio salto.

  6. #6
    dovrebbe essere una cosa del genere:

    Codice PHP:
    <?php
            $countRighe 
    0;
            foreach (
    getSezioni() as $var): 
            
                
    $addSessionBreak true;
            
    ?>
                  <div class="sezione">
                        <strong>NOME SEZIONE</strong>
                         <?php foreach (getCategoriePerSezione($var['s_id']) as $c): 
                            
    $addSessionBreak true;
                         
    ?>
                             <div class="cat">
                                 <strong>NOME CATEGORIA</strong>
                                 <?php
                                  $countRighe
    ++;
                                  if (
    $countRighe == 3) {
                                    
    $addSessionBreak false;
                                    
    $countRighe 0;
                                    echo 
    '<div style="page-break-before: always;"></div>';
                                  }
                                  
    ?>
                             </div>
                             <?php 
                                   
    endforeach; 
                                   
    $countRighe 0;
                              
    ?>
                  </div>
                  <?php if($addSessionBreak): ?><div style="page-break-before: always;"></div><?php endif; ?>
            <?php endforeach; ?>
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  7. #7
    uhm scusami, ma mi sono che nn mi sono ancora spiegato bene.
    il problema è che non è detto che questa condizione si verichi.
    cioè puoò essere che dopo che il conteggio arrivi a 3, non ci sia la fine della sezione.
    in questo caso deve andare a capo cmq e va bene perchè continuerebbe con le categorie della stessa sezione.
    quindi il problema si verifica solo se dopo che il counter arriva a tre c'è anche la fine della sezione, e quindi una nuova sezione.

    in sostanza, per dirla in maniera assurda, io dovrei predire il cambio di sezione.
    una cosa del genere:
    codice:
    SE CONTEGGIO = 3 E DOPO NON C'È LA FINE DELLA SEZIONE
            fai il break
    SENNÒ SALTALO PERCHÈ NE FARESTI DUE DI FILA
    il fatto è che io nn lo so a priori.

  8. #8
    senti, dovrebbe essere quello che ho scritto. se nn lo fà, o prendi spunto e implementi la logica te, oppure mi prepari uno script di test dicendomi qual'è il risultato atteso, e io lo faccio girare sul mio computer e vedo dove si sbaglia.
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  9. #9
    ciao!

    guarda alla fine ho risolto in altra maniera.
    faccio un controllo quando arrivo all'ultima categoria.
    una cosa del genere:
    codice:
    SE COUNT_CATEGORIE = 3
        varie operazioni
        SE NON E' ULTIMA CATEGORIA
             stampa il break
    avendo un array, all'inizio mi trovo l'ultimo valore con la funzione end.
    avendo calori unici (controllo l'id della tabella) ad ogni ciclo controllo che il valore corrente sia diverso da quello finale.
    ho fatto varie prove e sembra funzionare bene!

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.