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

    Ciclo per generare etichette formato a4

    Ciao a tutti.
    Dovrei creare un ciclo for che mi estragga i dati da un db mysql e li inserisca in una tabella grafica html, per stampare delle etichette. Il foglio formato a4 che contiene le etichette è formato da 16 etichette(2 colonne da 8).
    Ho creato con il css una pagina formato a 4 con il comando di creazione di un foglio nuovo alla fine della tabella html per poter stampare correttamente.
    Non riesco però a dire al php di chiudere la tabella html quando le etichette sono 16(per la corretta paginazione), e di iniziarne una nuova, così via fino alla fine del numero delle eichette.
    Capisco sia una banalità ma non ci arrivo proprio.
    potete darmi una mano ? Ecco il codice che utilizzo per creare il foglio delle 16 etichette, simulando che le etichette siano 32.

    codice:
    <style type="text/css">
    @page {size: 210mm 297mm; margin: 30mm;}
    table {page-break-inside: avoid;}
    background: none #FFF;color: #000
    </style>
    
    
    <div class="page"> 
    <div>
    Codice PHP:
    $n_etichette 32;

    echo
    "<table {page-break-inside: avoid;} width=\"793.7007874016\" height=\"1122.519685039\" class=\"testo\" border=\"1\" cellpadding=\"1\" cellspacing=\"0\">";

    for(
    $x=0$x<$n_etichette$x++){
    //calcolo della cella pari o dispari
    if ($x == 0$cellaPari true;
     else 
    $cellaPari false;

    //apri riga tabella
    if ($cellaPari) echo "<tr>";
      echo 
    "<td>";
       echo
    "scrivo nella tabella";
        echo 
    "</td>"
    //fine contenuto cella
    if (!$cellaPari) echo "</tr>";}

    //controllo dopo il ciclo se c'e ancora aperta una cella
    if ($cellaPari ) echo "</tr>";
    echo
    "</table>";//chiudo la tabella 

    codice:
    </div>    
    </div>

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,361
    Forse potrà aiutarti. L'idea è di fare una pagina ogni 16 etichette. Quando faccio l'anteprima della stampa ho 1 pagina vuota in più rispetto al dovuto. E' il pagebreak dopo <table> che bisogna inibire. Mi spiace ma non ho il tempo di analizzare di più che mi devo alzare presto domattina.

    Codice PHP:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>Untitled</title>
    <style id="myStyle" type="text/css">
     @page {size: 210mm 297mm; margin: 30mm;}
     table {background: none #FFF;color: #000}
     @media print {
        table {page-break-after: always;}
     }
    </style>
    </head>
    <body>
    <div class="page"> 
    <div>
    <?php 

    function etichette($n_etichette) {
     echo
    "<table {page-break-inside: avoid;} width=\"793.7007874016\" height=\"1122.519685039\" class=\"testo\" border=\"1\" cellpadding=\"1\" cellspacing=\"0\">";
     for(
    $x=0$x<$n_etichette$x++){
     
    //calcolo della cella pari o dispari
     
    if ($x == 0$cellaPari true;
      else 
    $cellaPari false;
     
    //apri riga tabella
     
    if ($cellaPari) echo "<tr>";
      echo 
    "<td>";
       echo
    "scrivo nella tabella";
        echo 
    "</td>"
     
    //fine contenuto cella
     
    if (!$cellaPari) echo "</tr>";}
     
    //controllo dopo il ciclo se c'e ancora aperta una cella
     
    if ($cellaPari ) echo "</tr>";
     echo
    "</table>";//chiudo la tabella  
    // function etichette($n_etichette)
    $n_etichette 37;
    $nbpagine    = (int) ($n_etichette 16);
    $resto       $n_etichette 16 $nbpagine;
    if (
    $resto != 0) {
     
    $nbpagine++;
    // if ($resto != 0)
    for ($j=1;$j<=$nbpagine;$j++) {
     
    etichette(16);
    // for ($j=1;$j<=$nbpagine;$j++)
    ?>
    </div>    
    </div>
    </body>
    </html>
    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

  3. #3
    Grazie mille, a parte la pagina in più, l'idea era proprio questa, ma non credo ci sarei mai arrivato da solo. Trovo ancora delle difficoltà però, quando creo la query per estrarre i valori da inserire nelle etichette. L'errore è: Warning: mysql_fetch_array() expects parameter 1 to be resource. Ti faccio vedere come eseguo il tutto così mi dici dove sbaglio, probabilmente ho sbagliato ad inserire la riga dove faccio l'estrazione $resrow = mysql_fetch_array($result); ma non capisco come estrarre i campi altrimenti. Grazie mille anticipatamente.


    Codice PHP:
    <?php

    $query 
    "SELECT * FROM tabella ";
    $query .= " ORDER BY campo_tabella ";
    $result mysql_query($query) or die("");
    $numrows mysql_num_rows($result);



    function 
    etichette($n_etichette) {
     echo
    "<table {page-break-inside: avoid;} width=\"793.7007874016\" height=\"1122.519685039\" class=\"testo\" border=\"1\" cellpadding=\"1\" cellspacing=\"0\">";
     for(
    $x=0$x<$n_etichette$x++){

    $row mysql_fetch_array($result); 


     
    //calcolo della cella pari o dispari
     
    if ($x == 0$cellaPari true;
      else 
    $cellaPari false;
     
    //apri riga tabella
     
    if ($cellaPari) echo "<tr>";
      echo 
    "<td>";
      

    echo 
    $row[10];

        echo 
    "</td>"
     
    //fine contenuto cella
     
    if (!$cellaPari) echo "</tr>";}
     
    //controllo dopo il ciclo se c'e ancora aperta una cella
     
    if ($cellaPari ) echo "</tr>";
     echo
    "</table>";//chiudo la tabella  
    // function etichette($n_etichette)
    $n_etichette 37;
    $nbpagine    = (int) ($n_etichette 16);
    $resto       $n_etichette 16 $nbpagine;
    if (
    $resto != 0) {
     
    $nbpagine++;
    // if ($resto != 0)
    for ($j=1;$j<=$nbpagine;$j++) {
     
    etichette(16);
    // for ($j=1;$j<=$nbpagine;$j++)
    ?>



    ?>


    Quote Originariamente inviata da badaze Visualizza il messaggio
    Forse potrà aiutarti. L'idea è di fare una pagina ogni 16 etichette. Quando faccio l'anteprima della stampa ho 1 pagina vuota in più rispetto al dovuto. E' il pagebreak dopo <table> che bisogna inibire. Mi spiace ma non ho il tempo di analizzare di più che mi devo alzare presto domattina.

    Codice PHP:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>Untitled</title>
    <style id="myStyle" type="text/css">
     @page {size: 210mm 297mm; margin: 30mm;}
     table {background: none #FFF;color: #000}
     @media print {
        table {page-break-after: always;}
     }
    </style>
    </head>
    <body>
    <div class="page"> 
    <div>
    <?php 

    function etichette($n_etichette) {
     echo
    "<table {page-break-inside: avoid;} width=\"793.7007874016\" height=\"1122.519685039\" class=\"testo\" border=\"1\" cellpadding=\"1\" cellspacing=\"0\">";
     for(
    $x=0$x<$n_etichette$x++){
     
    //calcolo della cella pari o dispari
     
    if ($x == 0$cellaPari true;
      else 
    $cellaPari false;
     
    //apri riga tabella
     
    if ($cellaPari) echo "<tr>";
      echo 
    "<td>";
       echo
    "scrivo nella tabella";
        echo 
    "</td>"
     
    //fine contenuto cella
     
    if (!$cellaPari) echo "</tr>";}
     
    //controllo dopo il ciclo se c'e ancora aperta una cella
     
    if ($cellaPari ) echo "</tr>";
     echo
    "</table>";//chiudo la tabella  
    // function etichette($n_etichette)
    $n_etichette 37;
    $nbpagine    = (int) ($n_etichette 16);
    $resto       $n_etichette 16 $nbpagine;
    if (
    $resto != 0) {
     
    $nbpagine++;
    // if ($resto != 0)
    for ($j=1;$j<=$nbpagine;$j++) {
     
    etichette(16);
    // for ($j=1;$j<=$nbpagine;$j++)
    ?>
    </div>    
    </div>
    </body>
    </html>

  4. #4
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,361
    Non è del tutto bello. Anzi è orrendo. Comunque.

    Codice PHP:
    function etichette($n_etichette,$result) {
    ....

    Codice PHP:
    for ($j=1;$j<=$nbpagine;$j++) { etichette(16,$result);} // for ($j=1;$j<=$nbpagine;$j++) 
    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

  5. #5
    Cosi' e' perfetto- Grazie ancora





    Quote Originariamente inviata da badaze Visualizza il messaggio
    Non è del tutto bello. Anzi è orrendo. Comunque.

    Codice PHP:
    function etichette($n_etichette,$result) {
    ....

    Codice PHP:
    for ($j=1;$j<=$nbpagine;$j++) { etichette(16,$result);} // for ($j=1;$j<=$nbpagine;$j++) 

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.