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

    Dividere I Messaggi In Un File Di Testo

    Ho creato un guestbook, dove i messaggi vengono salvati su un file di testo.
    Per visualizzare i messaggi, leggo tutti i messaggi (riga per riga) nel file di testo e li stampo a video.
    Tutto questo va bene se ci sono pochi messaggi, ma quando i messaggi cominciano a diventare tanti si crea confusione (anche perchè i messaggi li faccio ruotare).
    Mi chiedevo se esistesse la possilità di inserire un "qualcosa" (tipo un contatore di messaggi o di righe) che mi dia la possibilità di impostare un tot di messaggi per pagina. :master:
    Per capirci, come quello che ho creato con il database, imposto una variabile con il numero max di messaggi e lo script me li divide per un tot di pagine.
    Questo l'ho voluto fare con un file di testo per dare la possibilità, a chi non ha un database, di poterlo usare ugualmente.
    Posto il codice della pagina principale:

    Codice PHP:
    <?php include ("config.php");
    ?>
    <style>
    .titolo {
    font:"Courier New", Courier, monospace;
    font-size: <? echo $dimensfont?>;
    color: <? echo $colorT?>
    }
    .tabMess {
    background-color: <? echo $sfondoTab?>;
    font-family:Arial, Helvetica, sans-serif;
    color: <? echo $colorFont?>;
    font-size: <? echo $dimensionefont?>;
    }
    </style>

    <table width="100%" border="0">
      <tr>
        <td align="center" class="titolo"><? echo $titolo_guest?></td>
      </tr>
    </table>





    <table width="40%" height="250" border="1" align="center" cellpadding="0" cellspacing="0">
      <tr>
        <td width="65%" class="tabMess" ><Marquee Behavior="Scroll" Direction="up" Height="200" width="100%" ScrollAmount="2" ScrollDelay="30" onmouseover="this.stop()" onmouseout="this.start()">
        
    <?php
    // parametri di configurazione
        
    $filename="messaggi.txt";  // file delle frasi
        
    $delim="<";             // delimitatore di frase

        // apri il file delle frasi
        
    $fd=fopen($filename,"r");

        
    //conta il totale delle righe, quindi dei messaggi
        //$totMex=count(file($filename));

        // legge il file
        
    $contents fread ($fdfilesize ($filename));

        
    //estrae per riga
        
    $fraseexplode($delim,$contents);

        
    //in ordine inverso i messaggi
        
    $frase_reversearray_reverse($frase);
        
        
    if (
    sizeof($frase) <= "1")
    {
    echo 
    "$PHP_SELF: Errore, nessun array, sto uscendo...";
    exit;
    }
     
    for(
    $i=0;$i<count($frase)-1;$i++)
    {
    $val[$i]=explode('#'$frase_reverse[$i]);


    $nome[$i]=ucfirst ($val[$i][0]);
    $citta[$i]=ucfirst ($val[$i][1]);
    $messaggio[$i]=ucfirst ($val[$i][2]);
    $data [$i]= ($val[$i][3]);

    $table='<table width="100%" cellpadding="0" cellspacing="0" class="tabMess">
    <tr>
    <td  bgcolor="#999999">'
    $nome[$i]. $citta[$i].  $data[$i].'</td>
    </tr>
    </table>

    <table width="100%" height="40" cellpadding="0" cellspacing="0">
    <tr>
    <td bgcolor="#CCCCCC">'
    $messaggio[$i].'</td>
    </tr>
    </table>

    '
    ;

      echo 
    $table;
    }

    // chiude il file
    fclose ($fd);

    ?>
       </Marquee></td>
              </tr>

    <tr>
     <td align="center" height="85">
       <table width="35%" height="85" border="0">
         <tr>
          <td width="35%">

          <form action="scrivi.php" method="post" name="form1">
           <table width="0" border="0" align="center">
            <tr>
              <td>*Nome:</td>
              <td width="82"><input name="Nome" type="text" size="10" style="font-size: 10px; font-family:Verdana"></td>
              <td>*Citt&agrave;:</td>
              <td><input name="Citta" type="text" id="Citta"  onFocus="controllaNo()" size="10" style="font-size: 10px; font-family:Verdana"></td>
                      <td>*Messaggio:</td>
              <td><textarea name="Mex" cols="20" id="Mex" style="font-size: 10px; font-family:Verdana" onFocus="controlla()"></textarea>          </td> 
            </tr>
       <tr>
       <td>                        </td>
       <td colspan="2">*=campi obbligatori  </td>
       </tr>
          </table>
          <div align="center">
            <input type="submit" value="Firma" name="invia" onfocus="y" style="font-size: 10px; font-family:Verdana" />
          </div>
           </form></td>
          </tr>
             </table>    
         
             </td>
         </tr>
    </table>
    Magari non si può neanche fare.
    Se non mi sono spiegato bene, chiedete pure.

    Grazie in anticipo

  2. #2
    La paginazione dei dati la puoi fare come quellla dei dati che prelevi dal database e li distribuisci per le varie pagine..
    in una varuabile imposti i tot messaggi per pagina
    esempio:
    $mess_per_pag=5;
    calcoli il numero di messaggi contenuti nel file:
    $tot_messaggi=count($frase);
    Calcoli il numero di pagine:
    $tot_pagine=ceil($tot_messaggi/$mess_per_pag);
    poi avvii la paginazione:
    if(isset($_GET['pagina']))
    {
    $pagina=$_GET['pagina'];
    }
    else{
    $pagina=1;
    }
    poi imposti una variabile $start:
    $start=($pagina-1)*$mess_per_pag;
    a questo punto se già lo hai fatto con i database stampi messaggi in base alla pagina e coi vari link avnti o indietro.....

  3. #3
    grazie per la risposta.

    ci provo e ti faccio sapere

  4. #4
    Ho inserito la parte che mi hai detto:

    Codice PHP:
    $mess_per_pag=2;
    $tot_messaggi=count($frase);
    $tot_pagine=ceil($tot_messaggi/$mess_per_pag);
        
    if(isset(
    $_GET['pagina']))
    {
    $pagina=$_GET['pagina'];
    }
    else{
    $pagina=1;

    e alla fine l'ho completato con il mio codice:
    Codice PHP:
        <?php 
    echo "pagina"." ";
    if(
    $tot_pagine 1){
    for(
    $pagina 1$pagina <= $tot_pagine$pagina++){
    if(
    $pagina == $pagina_corrente){
    ?>
    [b]<?php echo $pagina?>[/b]
    <?php
    }else{
    ?>

    [url="guest.php?inizio=<?php echo(($pagina 1) * $mess_per_pag)?>"]<?php echo $pagina?>[/url]
    <?php
    }
    }
    }
    ?>
    Risultato:
    I link che puntano alle pagine si vedono e le pagine vengono divise correttamente, in funzione del numero dei messaggi che contiene la variabile "$mess_per_pag".
    Ma i messaggi sono sempre tutti visibili.
    Qualche idea?
    :master:

  5. #5
    prova in questo modo:
    Codice PHP:
     $start=($pagina-1)*$mess_per_pag;
         for(
    $i=$start;$i<=($start+$mess_per_pag);$i++)
         {
         if(!isset(
    $mess[$i]))
         {
         
    $mess[$i]="";
         }
           echo 
    $mess[$i]."
    "
    ;
         }
         
    $link="";
        if((
    $pagina!=1)&&($pagina<=$num_pag))
                     {
                      
    $pag=$pagina-1;
                  
    $link.="[url='guest.php?pagina=$pag']Indietro[/url]";
                      }
                         if((
    $pagina>0)&&($pagina<$num_pag))
                 {
                    
    $pag=$pagina+1;
                  
    $link.="[url='guest.php?pagina=$pag']Avanti[/url]";
                 }
                 echo 
    $link

  6. #6
    Inserendo il tue codice, nella ultima parte, peggiora.
    Non si vedono più meanche le pagine linkabili che dovrebbero portare ai vari messaggi.
    Posto il codice della pagina principale (senza l'ultima modifica segnalata)

    Codice PHP:
    <?php include ("config.php");
    ?>

    <style>

    .titolo {
    font:"Courier New", Courier, monospace;
    font-size: <? echo $dimensfont?>;
    color: <? echo $colorT?>
    }
    .tabMess {

    background-color: <? echo $sfondoTab?>;
    font-family:Arial, Helvetica, sans-serif;
    color: <? echo $colorFont?>;
    font-size: <? echo $dimensionefont?>;
    }
    </style>


    <table width="100%" border="0">
      <tr>
        <td align="center" class="titolo"><? echo $titolo_guest?></td>
      </tr>
    </table>






    <table width="40%" height="250" border="1" align="center" cellpadding="0" cellspacing="0">
      <tr>
        <td width="65%" class="tabMess" >
        
    <?php
    // parametri di configurazione
        
    $filename="messaggi.txt";  // file delle frasi
        
    $delim="<";             // delimitatore di frase

        // apri il file delle frasi
        
    $fd=fopen($filename,"r");

        
    //conta il totale delle righe, quindi dei messaggi
        //$totMex=count(file($filename));

        // legge il file
        
    $contents fread ($fdfilesize ($filename));

        
    //estrae per riga
        
    $fraseexplode($delim,$contents);

        
    //in ordine inverso i messaggi
        
    $frase_reversearray_reverse($frase);
        
        
    $mess_per_pag=2;
    $tot_messaggi=count($frase);
    $tot_pagine=ceil($tot_messaggi/$mess_per_pag);
    $pagina_corrente ceil(($pagina/$mess_per_pag) + 1);
        
    if(isset(
    $_GET['pagina']))
    {
    $pagina=$_GET['pagina'];
    }
    else{
    $pagina=1;
    }

        


    if (
    sizeof($frase) <= "1")
    {
    echo 
    "$PHP_SELF: Errore, nessun array, sto uscendo...";
    exit;
    }
     
    for(
    $i=0;$i<count($frase)-1;$i++)
    {

    $val[$i]=explode('#'$frase_reverse[$i]);


    $nome[$i]=ucfirst ($val[$i][0]);
    $citta[$i]=ucfirst ($val[$i][1]);
    $messaggio[$i]=ucfirst ($val[$i][2]);
    $data [$i]= ($val[$i][3]);

    $table='<table width="100%" cellpadding="0" cellspacing="0" class="tabMess">
    <tr>
    <td  bgcolor="#999999">'
    $nome[$i]. $citta[$i].  $data[$i].'</td>
    </tr>
    </table>

    <table width="100%" height="40" cellpadding="0" cellspacing="0">
    <tr>
    <td bgcolor="#CCCCCC">'
    $messaggio[$i].'</td>
    </tr>
    </table>

    '
    ;

      echo 
    $table;
    }

    // chiude il file
    fclose ($fd);

    ?>

       </td>
              </tr>

    <tr>
     <td align="center" height="85">
       <table width="35%" height="85" border="0">
         <tr>
          <td width="35%">

          <form action="scrivi.php" method="post" name="form1">
           <table width="0" border="0" align="center">
            <tr>
              <td>*Nome:</td>
              <td width="82"><input name="Nome" type="text" size="10" style="font-size: 10px; font-family:Verdana"></td>
              <td>*Citt&agrave;:</td>
              <td><input name="Citta" type="text" id="Citta"  onFocus="controllaNo()" size="10" style="font-size: 10px; font-family:Verdana"></td>
                      <td>*Messaggio:</td>
              <td><textarea name="Mex" cols="20" id="Mex" style="font-size: 10px; font-family:Verdana" onFocus="controlla()"></textarea>          </td> 
            </tr>
       <tr>
       <td>                        </td>
       <td colspan="2">*=campi obbligatori  </td>
       </tr>
          </table>
          <div align="center">
            <input type="submit" value="Firma" name="invia" onfocus="y" style="font-size: 10px; font-family:Verdana" />
          </div>
           </form></td>
          </tr>
             </table>    
         
             </td>
         </tr>
    </table>
    <table width="200" border="0" align="center">
      <tr>
        <td>
        <?php 
    echo "pagina"." ";
    if(
    $tot_pagine 1){
    for(
    $pagina 1$pagina <= $tot_pagine$pagina++){
    if(
    $pagina == $pagina_corrente){
    ?>
    [b]<?php echo $pagina?>[/b]
    <?php
    }else{
    ?>

    [url="guest.php?inizio=<?php echo(($pagina 1) * $mess_per_pag)?>"]<?php echo $pagina?>[/url]
    <?php
    }
    }
    }
    ?>
      
        </td>
      </tr>
    </table>
    altre idee? :master:


  7. #7

  8. #8
    t'ho modificato l'ultima parte,ti consiglio di scrivere il codice un pò più pulito magari spezzarlo in piu file e poi utilizzare un require alla pagina,di solito con la paginazione dei dati non ho problemi vedi se va....
    Codice PHP:
    <?php
    include ("config.php");
    ?>

    <style>

    .titolo {
    font:"Courier New", Courier, monospace;
    font-size: <? echo $dimensfont;?>;
    color: <? echo $colorT;?>;
    }
    .tabMess {

    background-color: <? echo $sfondoTab;?>;
    font-family:Arial, Helvetica, sans-serif;
    color: <? echo $colorFont;?>;
    font-size: <? echo $dimensionefont;?>;
    }
    </style>


    <table width="100%" border="0">
      <tr>
        <td align="center" class="titolo"><? echo $titolo_guest;?></td>
      </tr>
    </table>






    <table width="40%" height="250" border="1" align="center" cellpadding="0" cellspacing="0">
      <tr>
        <td width="65%" class="tabMess" >

    <?php
    // parametri di configurazione
        
    $filename="messaggi.txt";  // file delle frasi
        
    $delim="<";             // delimitatore di frase

        // apri il file delle frasi
        
    $fd=fopen($filename,"r");

        
    //conta il totale delle righe, quindi dei messaggi
        //$totMex=count(file($filename));

        // legge il file
        
    $contents fread ($fdfilesize ($filename));

        
    //estrae per riga
        
    $fraseexplode($delim,$contents);

        
    //in ordine inverso i messaggi
        
    $frase_reversearray_reverse($frase);


    $mess_per_pag=2;
    $tot_messaggi=count($frase);
    $tot_pagine=ceil($tot_messaggi/$mess_per_pag);
    $pagina_corrente ceil(($pagina/$mess_per_pag) + 1);

    if(isset(
    $_GET['pagina']))
    {
    $pagina=$_GET['pagina'];
    }
    else{
    $pagina=1;
    }




    if (
    sizeof($frase) <= "1")
    {
    echo 
    "$PHP_SELF: Errore, nessun array, sto uscendo...";
    exit;
    }

    for(
    $i=0;$i<count($frase)-1;$i++)
    {

    $val[$i]=explode('#'$frase_reverse[$i]);


    $nome[$i]=ucfirst ($val[$i][0]);
    $citta[$i]=ucfirst ($val[$i][1]);
    $messaggio[$i]=ucfirst ($val[$i][2]);
    $data [$i]= ($val[$i][3]);

    $table='<table width="100%" cellpadding="0" cellspacing="0" class="tabMess">
    <tr>
    <td  bgcolor="#999999">'
    $nome[$i]. $citta[$i].  $data[$i].'</td>
    </tr>
    </table>

    <table width="100%" height="40" cellpadding="0" cellspacing="0">
    <tr>
    <td bgcolor="#CCCCCC">'
    $messaggio[$i].'</td>
    </tr>
    </table>

    '
    ;

      echo 
    $table;
    }

    // chiude il file
    fclose ($fd);

    ?>

       </td>
              </tr>

    <tr>
    <td align="center" height="85">
       <table width="35%" height="85" border="0">
         <tr>
          <td width="35%">

          <form action="scrivi.php" method="post" name="form1">
           <table width="0" border="0" align="center">
            <tr>
              <td>*Nome:</td>
              <td width="82"><input name="Nome" type="text" size="10" style="font-size: 10px; font-family:Verdana"></td>
              <td>*Citt&agrave;:</td>
              <td><input name="Citta" type="text" id="Citta"  onFocus="controllaNo()" size="10" style="font-size: 10px; font-family:Verdana"></td>
                      <td>*Messaggio:</td>
              <td><textarea name="Mex" cols="20" id="Mex" style="font-size: 10px; font-family:Verdana" onFocus="controlla()"></textarea>          </td>
            </tr>
       <tr>
       <td>                        </td>
       <td colspan="2">*=campi obbligatori  </td>
       </tr>
          </table>
          <div align="center">
            <input type="submit" value="Firma" name="invia" onfocus="y" style="font-size: 10px; font-family:Verdana" />
          </div>
           </form></td>
          </tr>
             </table>

             </td>
         </tr>
    </table>
    <table width="200" border="0" align="center">
      <tr>
        <td>
        <?php
    echo "pagina ";
    $link="";
    if((
    $pagina!=1)&&($pagina<=$tot_pagine))
                     {
                      
    $pag=$pagina-1;
                  
    $link.="[url='guest.php?pagina=$pag']Indietro[/url]";
                      }
                    if((
    $pagina>0)&&($pagina<$tot_pagine))
                 {
                    
    $pag=$pagina+1;
                  
    $link.="[url='guest.php?pagina=$pag']Avanti[/url]";
                 }
                echo 
    $link;
                
    ?>
        </td>
      </tr>
    </table>

  9. #9
    Non funziona, ancora come prima. :master:
    Imposto la variabile con il numero dei messaggi che voglio vedere per pagina, ma poi si visualizzano tutti.
    Si visualizzano anche le scritte "indietro" e "avanti".

  10. #10
    Ti ho creato al volo un esempio con un file di testo chiamato messaggi.txt dove inserisco un po di messaggi con delimitatore: "/".esempio
    messaggio uno/messaggio due /messaggio tre /messaggio quattro e così via....
    questo script che ti ho creato è funzionante!!in base a questo trovi il modo per adattarlo al tuo script!!spero di essere stato chiaro....
    Codice PHP:
    <?php
    $file
    ="messaggi.txt";
    $fd=fopen($file,"r");
    $read=fread($fd,filesize($file));
    fclose($fd);
    $messaggi=explode("/",$read);
    $messaggi=array_reverse($messaggi);
    $mess_per_pag=2;

    $tot_messaggi=count($messaggi);

    $tot_pagine=ceil($tot_messaggi/$mess_per_pag);

    if(isset(
    $_GET['pagina']))
    {
    $pagina=$_GET['pagina'];
    }
    else{
    $pagina=1;
    }

    $start=($pagina-1)*$mess_per_pag;
    for(
    $i=$start;$i<($start+$mess_per_pag);$i++)
    {
    if(!isset(
    $messaggi[$i]))
    {
      
    $messaggi[$i]="";
    }
    echo 
    $messaggi[$i]."
    "
    ;
    }
    $link="";
    if((
    $pagina!=1)&&($pagina<=$tot_pagine))
                     {
                      
    $pag=$pagina-1;
                  
    $link.=" [url='guest.php?pagina=$pag']INDIETRO[/url]";
                      }
                    if((
    $pagina>0)&&($pagina<$tot_pagine))
                 {
                    
    $pag=$pagina+1;
                  
    $link.=" [url='guest.php?pagina=$pag']AVANTI[/url]";
                 }
                echo 
    $link;
    ?>

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.