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

    Stampare un record per volta

    Salve ragazzi ho bisogno di un vostro aiuto per la stampa dei record estratti da un database.

    Vorrei stampare un record per pagina per evitare che i i dati vengano divisi tra le due pagine.

    I dati vengono mostrati dentro una tabella dove ho inserito un'area ripetuta per visualizzare i risultati.

    La tabella si trova dentro un DIV che ha come ID "tabella".

    Ho provato inserendo l'istruzione Page-break per i CSS ma nulla:

    tabella {page-break-inside: avoid;}

    Uso IE 7

    Potete cortesemente aiutarmi.

    Agrazie in anticipo.

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Uso IE 7
    Questo puo` essere un problema....

    tabella {page-break-inside: avoid;}
    Il page-break-inside non e` molto supportato dai browser ... maggior supporto c'e` per il page-break-before e -after. Vedi se puoi usare quelli. Qualcuno tempo fa aveva postato un link ad una tabella di compatibilita` dei browser. Io ho questi link, ma non so se sono ancora aggiornati e se sono relativi ai CSS di stampa
    http://www.webreview.com/style/css1/...stergrid.shtml
    CSS contents and browser compatibility
    W3C DOM Compatibility Tables

    tabella {page-break-inside: avoid;}
    Ma non ho capito. Hai scritto che i dati sono in una tabella; ne deduco che sono record (righe) di un'unica tabella: allora il page-break-inside non serve: se la tabella non ci sta tutta in una pagina deve spezzarla da qualche parte ...

    Comunque prova a postare un pezzetto del codice HTML, il DOCTYPE usato, e il CSS relativo ai blocchi.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    Questo è il Doc Type usatp:
    codice:
    <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
    Connessione al Db e recordset
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    Questo è tutto il CSS per la stampa:
    codice:
    <style type="text/css" media="print">
    div#navigation, div#footer, div#stampa{display: none}
    tabella {page-break-inside: avoid;}
    </style>
    Questa invece è la tabella dove estraggo i record:

    codice:
    <div id="tabella">
          <table width="500" border="0" cellspacing="0" cellpadding="0">
            <% 
    While ((Repeat1__numRows <> 0) AND (NOT rsTestStampa.EOF)) 
    %>
    		<tr>
              <td><%=(rsTestStampa.Fields.Item("progressivoArchivio").Value)%></td>
            </tr>
            <tr>
              <td></td>
            </tr>
            <tr>
              <td><%=(rsTestStampa.Fields.Item("attribuzione").Value)%></td>
            </tr>
            <tr>
              <td></td>
            </tr>
            <tr>
              <td><%=(rsTestStampa.Fields.Item("nomeAutore").Value)%></td>
            </tr>
            <tr>
              <td></td>
            </tr>
            <tr>
              <td><%=(rsTestStampa.Fields.Item("dataAutore").Value)%></td>
            </tr>
            <tr>
              <td></td>
            </tr>
            <tr>
              <td><%=(rsTestStampa.Fields.Item("scuolaAutore").Value)%></td>
            </tr>
            <tr>
              <td></td>
            </tr>
            <tr>
              <td><%=(rsTestStampa.Fields.Item("dettaglioAutore").Value)%></td>
            </tr>
            <tr>
              <td></td>
            </tr>
            <tr>
              <td><%=(rsTestStampa.Fields.Item("nomeFotografo").Value)%></td>
            </tr>
            <tr>
              <td></td>
            </tr>
            <tr>
              <td><%=(rsTestStampa.Fields.Item("nomeEsperto").Value)%></td>
            </tr>
            <tr>
              <td></td>
            </tr>
            <tr>
              <td><%=(rsTestStampa.Fields.Item("dettaglioEsperto").Value)%></td>
            </tr>
            <tr>
              <td></td>
            </tr>
            <tr>
              <td><%=(rsTestStampa.Fields.Item("nomeMostra").Value)%></td>
            </tr>
            <tr>
              <td></td>
            </tr>
            <tr>
              <td><%=(rsTestStampa.Fields.Item("annoMostra").Value)%></td>
            </tr>
            <tr>
              <td></td>
            </tr>
            <tr>
              <td><%=(rsTestStampa.Fields.Item("luogoMostra").Value)%></td>
            </tr>
            <tr>
              <td></td>
            </tr>
            <tr>
              <td><%=(rsTestStampa.Fields.Item("titoloBibliografia").Value)%></td>
            </tr>
            <tr>
              <td></td>
            </tr>
            <tr>
              <td><%=(rsTestStampa.Fields.Item("immagineBibliografia").Value)%></td>
            </tr>
            <tr>
              <td></td>
            </tr>
            <tr>
              <td><%=(rsTestStampa.Fields.Item("titoloBibliografiaComparata").Value)%></td>
            </tr>
            <tr>
              <td></td>
            </tr>
            <tr>
              <td><%=(rsTestStampa.Fields.Item("immagineBibliografiaComparata").Value)%></td>
            </tr>
            <tr>
              <td></td>
            </tr>
            <tr>
              <td><%=(rsTestStampa.Fields.Item("provenienzaOpera").Value)%></td>
            </tr>
            <tr>
              <td></td>
            </tr>
            <tr>
              <td><%=(rsTestStampa.Fields.Item("nomeOpera").Value)%></td>
            </tr>
            <tr>
              <td></td>
            </tr>
            <tr>
              <td><%=(rsTestStampa.Fields.Item("categoriaOpera").Value)%></td>
            </tr>
            <tr>
              <td></td>
            </tr>
            <tr>
              <td><%=(rsTestStampa.Fields.Item("tipoOpera").Value)%></td>
            </tr>
            <tr>
              <td></td>
            </tr>
            <tr>
              <td><%=(rsTestStampa.Fields.Item("misureOpera").Value)%></td>
            </tr>
            <tr>
              <td></td>
            </tr>
            <tr>
              <td>[img]wbresize.aspx?f=opere/<%=(rsTestStampa.Fields.Item([/img]&amp;s=5" alt="<%=(rsTestStampa.Fields.Item("fotoOpera").Value)%>" id="immagine" /></td>
            </tr>
    <tr>
              <td>[img]immagini/null_trasp.gif[/img]</td>
            </tr>
            <tr>
              <td><hr width="500" size="1" /></td>
            </tr>
            <tr>
              <td></td>
            </tr>
    		          <% 
      Repeat1__index=Repeat1__index+1
      Repeat1__numRows=Repeat1__numRows-1
      rsTestStampa.MoveNext()
    Wend
    %>
          </table></div>
    Questo è tutto.

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Del codice PHP (o comunque lato server) non me ne faccio nulla.
    Devi postare il codice HTML come arriva al browser. Invece non serve che posti tutta la tabella: basta un pezzo che comprenda due righe.

    Comunque vedo che usi attributi HTML di formattazione: vanno tolti, altrimenti i CSS non funzionano a dovere (e funzionano in modo diverso in brwoser diversi).

    E non basta il CSS di stampa: probabilmente nel tuo CSS standard ci sono istruzioni per la formattazione che vengono usate anche nella fase di stampa.


    Ma ho visto un erorre: non esiste il tag <tabella>, quindi non puoi usare il selettore
    tabella { ...}

    Invece puoi usare il selettore
    #tabella { ... }
    che si riferisce all'oggetto della pagina con id="tabella"
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  5. #5
    Ecco il codice html come arriva al browser:

    codice:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Documento senza titolo</title>
    <style type="text/css" media="print">
    div#navigation, div#footer, div#stampa{display: none}
    #tabella {page-break-inside: avoid;}
    </style> 
    </head>
      <script>
       function changeImg(image) {
          var imgs  = document.getElementsByTagName('img');
          for(i = 0; i < imgs.length; i++){
             if(imgs[i].className == 'immagine') { imgs[i].src = image};
          }
    }
    
      </script>
    <body>
    <table width="500" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td><div id="tabella">
          <table width="500" border="0" cellspacing="0" cellpadding="0">
            
    		<tr>
              <td>RC 1069</td>
            </tr>
            <tr>
              <td>[img]immagini/null_trasp.gif[/img]</td>
            </tr>
            <tr>
              <td>Attribuito a</td>
            </tr>
            <tr>
              <td>[img]immagini/null_trasp.gif[/img]</td>
            </tr>
            <tr>
              <td>Pippo</td>
            </tr>
            <tr>
              <td>[img]immagini/null_trasp.gif[/img]</td>
            </tr>
            <tr>
              <td>24/06/1975</td>

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Ma la visualizzazione a schermo e` corretta? Perche` non vedo nessun CSS di formattazione per lo schermo.

    E poi quello script inserito tra </head> e <body>: va spostato nella <head>, ma il codice JS sarebbe meglio metterlo fuori dalla pagina (in un file a parte).

    In quella pagina io vedo due tabelle innestate. Sicuramente quella esterna e` una tabella di formattazione, che quindi non va usata.
    La seconda e` una singola colonna: sicuro che sia necessaria la tabella? Non sarebbe meglio usare una lista?

    Non spieghi se la tabella interna viene ripetuta: avrebbe senso nella logica della pagina, ma qui interviene un errore: usi un id="tabella" ripetuto piu` volte nella pagina: non si puo`: un id deve essere unico. Usa una classe, invece.

    Inoltre quel <div> inserito tra <td> e <table>: non ha senso. Se deve essere un elemento della tabella esterna, ti basta usare il <td>, ma sicuramente non ha senso inserire l'attributo page-break-inside dentro una cella di tabella: se proprio andrebbe inserito nel <tr>.

    E, come ho gia` detto, il page-break-inside non e` molto supportato. Potresti provare ad usare il page-break-before, al suo posto.

    Concludendo: gli errori sono tanti, tutti piccoli, ma tutti potenziali fonti di confusione. E nella confusione e` difficile ragionare in modo lineare ...
    Prova a fare una cosa fatta bene, seguendo le regole semantiche; ci guadagni sicuramente in accessibilita` e in usabilita` ed alla lunga ci guadagni anche in tempo di sviluppo.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  7. #7
    Come consigliato da te ho rifatto la pagina test dall'inizio.

    Prendendo spunto da un'esempio ho creato questo:
    Ecco il codice HTML che mi visualizza nel browser:

    codice:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Documento senza titolo</title>
    <style type="text/css" media="print">
    div#navigation, div#footer, div#stampa{display: none}
    </style>
      <script>
       function changeImg(image) {
          var imgs  = document.getElementsByTagName('img');
          for(i = 0; i < imgs.length; i++){
             if(imgs[i].className == 'immagine') { imgs[i].src = image};
          }
    }
    
      </script>
    </head>
    
    <body>
    
    <table width="500" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td>
      <p STYLE="page-break-before: always">RC 1069
    
        Pippo
    
        
    
        [img]wbresize.aspx?f=opere/mobili_05.jpg&s=5[/img]
    
        
    
      </p>
      
      <p STYLE="page-break-before: always">RC 1070
    
        Pietro
    
        
    
        [img]wbresize.aspx?f=opere/mobili_07.jpg&s=5[/img]
    
        
    
      </p>
      </td>
    <tr>
    <td></td>
    </tr>
    <tr>
    <td><div id="stampa">
    		Stampa
    Non visualizzare le immagini</div></td>
    </tr>
      </tr>
    </table>
    
    </body>
    </html>
    Con IE 7 ho l'unico problema che mi fa vedere tre pagine in ateprima di stampa (La prima vuota le altre due con irispettivi record) quando invece dovrebbero essere due. Ma già così sarei soddisfatto.

    Il problema è che con Mozilla Firefox non funziona. Io sinceramente credevo il contrario, cioè che mi dava problemi con IE 7.

    Provo a fare altri test per vedere cosa da fastidio a firefox.


  8. #8
    Ho fatto dei test e ho capito che a Mozilla danno fastidio i tag delle tabelle.

    Solo che anche qui ho notato che anziche di stampare due pagine me ne stampa tre di cui la prima vuota.

    Su IE 7 uguale solo che togliendo le tabelle ho notato che me ne stampa sempre tre ma nella prima pagina ci inserire la prima riga del primo record estratto. ("RC 1069")
    Le altre due pagine in entrambi i browser vengono visualizzate correttamente.

    Sapete cortesemente da cosa può dipendere??


  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    La pagina e` molto migliorata, ma ancora ci sono problemi.
    In particolare gli attributi di formattazione HTML possono andare in conflitto con i CSS, e vanno quindi tolti ed eventualmetne sostituiti con corrispondenti attributi CSS.
    Esempio: width="500" border="0" cellspacing="0" cellpadding="0"

    E comunque la tabella e` usata per la formattazione, e questo puo` dare fastidio, non solo ai motori di ricerca ed ai browser testuali, ma anche ad alcuni browser di nuova generazione.

    Ci sono anche altri elementi che andrebebro eliminati, tipo tutti i
    che servono solo per spaziare (la spaziatura si fa con i margini !! ).
    In pratica se vuoi usare bene i CSS, devi usare le regole della DTD XHTML 1.0 Strict (sono nati assieme, e assieme vanno molto d'accordo; con le DTD precedenti ci sono alcuni problemi)


    Il problema della pagina in piu`, e` dato proprio dal page-break-before.
    E` chiaro che il page-break-inside sarebbe la soluzione piu` logica e semantica, pero` si scontra con le implementazioni dei browser.
    Puoi spostare la pagina bianca alla fine, usando il page-break-after anziche` il -before
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  10. #10
    Per le regole hai ragione, ma questa pagina è una demo fatta molto velocemente per vedere se funzionava il page break in un'area ripetuta.

    Ora quando creo la pagina definitiva utilizzerò le regole corrette.

    Comunque alla fine credo credo che farò come dici te e sposterò la pagina vuota alla fine.

    Grazie per l'aiuto.

    Ciao e buona giornata.


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 © 2026 vBulletin Solutions, Inc. All rights reserved.