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

    Errore numerazione messaggi su guest book

    Sto cercando di creare un guest book (con database) e mi sono arenato su un punto:
    La numerazione dei messaggi quando questi vengono visualizzati su più pagine.

    Ho creato il guest e funziona, aggiunto anche il codice per visualizzare i messaggi su più pagine.
    a questo punto ho inserito anche la numerazione dei messaggi e quì sono cominciati i dolori, mi spiego meglio:

    Uso la variabile "$numero_record = 5; " per settare i record per pagina, ma quando le pagine sono maggiore di una, la numerazione dei messaggi non funziona.
    Ma solo la numerazione, i messaggi invece allo scorrere delle pagine funzionano.

    Ricapitolando se le pagine dei messaggi sono piu' di una, sfogliando le pagine del guest, i messaggi si leggono in modo corretto mentre la loro numerazione rimane fissa

    Posto il codice:
    Codice PHP:
    <?php
    include ("config.php");
    include(
    "config.inc.php");
    ?>

    <html>
    <head>

    <style>

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

    .MessSup {
    font-family:Arial, Helvetica, sans-serif;
    background-color: <? echo $sfondoCelSup?>;
    color: <? echo $colFontMeSu?>;
    font-size: <? echo $dimfontSu?>;
    font-weight:bold;
    }

    .MessInf {
    font-family:Arial, Helvetica, sans-serif;
    background-color: <? echo $sfondoCelInf?>;
    color: <? echo $colFontMeIn?>;
    font-size: <? echo $diFontIn?>;
    }

    .tabMess {
    font-family:Arial, Helvetica, sans-serif;
    background-color: <? echo $sfondoTabMes?>;
    }

    .tabFirma {
    font-family:Arial, Helvetica, sans-serif;
    background-color: <? echo $tabFirma?>;
    }

    </style>
    <title>MIO GUESTBOOK</title>

    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

    <link href="layout.css" rel="stylesheet" type="text/css" />
    </head>

    <body>
    <div id="guest_titolo" class="titolo"><? echo $titolo_guest ?></div>



    <div id="guest_sup" class="tabMess">

    <?php

    //mi connetto al database,user e password
    $db mysql_connect($db_host$db_user$db_password);
    //in caso di errore
    if ($db == FALSE)
    die (
    "Errore nella connessione. Verificare i parametri nel file config.inc.php");

    //mi connetto alla tabella
    mysql_select_db($db_name$db)
    //in caso di errore
    or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");

     
    $numero_record 5//numero record per pagina
    if(!isset($HTTP_GET_VARS["inizio"])){
    $inizio 0;
    }else{
    $inizio $HTTP_GET_VARS["inizio"];
    }
     
    //preparo la query per nome, citta, ecc.
    $query "SELECT id, nome, citta, messaggio, data FROM messaggi ORDER BY id DESC LIMIT $inizio,$numero_record";                                                                
    $result mysql_query($query$db);


    //query per contare record e numero pagine
    $query2 "select * from messaggi";
    $result2 mysql_query($query2$db);

    $numero_record_totali mysql_numrows($result2);
    $numero_pagine ceil($numero_record_totali/$numero_record);
    $pagina_corrente ceil(($inizio/$numero_record) + 1);

    $numero_record_totali2 = ($numero_record_totali+1); //altrimenti parte a scrivere da zero

    while ($row mysql_fetch_array($result))
    {
    //numerazione messaggi    
    $numero_record_totali2= ($numero_record_totali2-1);

    $nome1$row["nome"];
    $citta1$row["citta"];

    //  data
    $data1$row['data'];

    $messaggio1$row["messaggio"];

     
    ?>
     
     <table border="1" width="100%" height="100px" cellpadding="0" cellspacing="0">
      <tr>
         <td width="30%">
        
            <table width="100%" height="100%" border="0" cellspacing="0" cellpadding="2" class="MessSup">
             <tr>
                 <td><?=$numero_record_totali2?></td>
            </tr>
            <tr>
                <td><?=$nome1?> da <?=$citta1?></td>
            </tr>
           </table>
        </td>
      
        <td>
           <table width="100%" height="100%" border="0"  cellspacing="0" cellpadding="2" class="MessInf">
           <tr>
               <td><?=date("j/n/y H:i"$data1)?></td>
          </tr>
          <tr>
             <td><?=$messaggio1?></td>
          </tr>
           </table>
       </td>
      </tr>
    </table>



    <?php 
    }
    echo 
    "pagina"." ";

    if(
    $numero_pagine 1){
    for(
    $pagina 1$pagina <= $numero_pagine$pagina++){
    if(
    $pagina == $pagina_corrente){
    ?>

    [b]<?=$pagina?>[/b]

    <?php
    }else{
    ?>

    [url="guest.php?inizio=<?=(($pagina 1) * $numero_record)?>"]<?=$pagina?>[/url]

    <?php
    }
    }
    }

    ?>
        
    </div>

    </body>
    </html>
    P.s Ho inserito questa variabile "$numero_record_totali2 = ($numero_record_totali+1); " altrimenti la numerazione dei messaggi iniziava da zero.
    Provato anche a toglierla, ma l'anomalia rimane.
    Il codice mi sembra corretto, boh .
    chi mi da una mano?
    grazie

  2. #2
    Utente di HTML.it L'avatar di echoweb
    Registrato dal
    Sep 2008
    Messaggi
    419
    Ciao,

    prova a vedere che valori assume la varibile $pagina: penso che sia lì il problema, in quanto la variabile $inizio che invii via get vale (($pagina - 1) * $numero_record).

    prova a fare un echo delle variabili inizio e pagina, in modo da vadere che valori assumono quando cambi pagina.

  3. #3
    ciao echoweb, provo a spiegarti:

    variabile inizio:

    Mettiamo che, nel codice, la variabile sia impostata così, $numero_record = 3; , quindi tre record (o messaggi) per pagina.
    Ho 15 messaggi nel guest e il sistema mi genera, correttamente 5 pagine.
    Quindi la variabile inizio, sulla prima pagina ha valore zero, sulla seconda ha valore tre, sulla terza ha valore sei, sulla quarta ha valore nove e sulla quinta pagina ha valore dodici.

    La variabile pagina penso che funzioni correttamente, infatti scrive correttamente il numero delle pagine che necessitano per visualizzare i record (o messaggi).

    Ti allego uno screen del desktop, dove si visualizza il guest (prima pagina con tre messaggi).
    Spero di essere stato chiaro nella spiegazione.

    Ciao.


  4. #4
    Utente di HTML.it L'avatar di echoweb
    Registrato dal
    Sep 2008
    Messaggi
    419
    dove scrivi:

    Codice PHP:
    //numerazione messaggi    
    $numero_record_totali2= ($numero_record_totali2-1); 
    stai creando una varibiabile che è il numero di messaggio...

    stavo pensando: fai così:

    riga 77
    Codice PHP:
    $num_mess=$inizio
    riga 96 al posto di $numero_record_totali2= ($numero_record_totali2-1);
    Codice PHP:
    $num_mess++; 
    riga 114 al posto di <td><?=$numero_record_totali2?></td>
    Codice PHP:
    <td><?=$num_mess?></td>
    ovvero, se ci pensiamo un attimo, la variabile inizio che usi nel LIMIT, non è nient'altro che il numero di messaggio al quale vai a puntare


    "Non soffocare la tua ispirazione e la tua immaginazione,
    non diventare lo schiavo del tuo modello"

    Vincent van Gogh

  5. #5
    Intanto grazie,

    così funziona, ma i messaggi vengono numerati in modo crescente (il messaggio nuovo ha il numero 1, mentre è il messaggio più vecchio che dovrebbe avere il numero 1 e gli altri a salire) Ho provato la tua soluzione mettendo la variabile così: $num_mess=$numero_record_totali;
    spostandola sotto la query dove conto i record totali (logicamente nel ciclo while l'ho decrementata), ma non funziona.

  6. #6
    Utente di HTML.it L'avatar di echoweb
    Registrato dal
    Sep 2008
    Messaggi
    419
    ok. prova a fare così:

    riga 92
    Codice PHP:
    $num_mess=$numero_record_totali2
    riga 96 al posto di $numero_record_totali2= ($numero_record_totali2-1);
    Codice PHP:
    $num_mess--; 
    riga 114 al posto di <td><?=$numero_record_totali2?></td>
    Codice PHP:
    <td><?=$num_mess?></td>
    se ho ben capito, in $numero_record_totali2; hai il numero di messaggi, giusto? prova a fare un echo della variabile per vedere se è così.


    "Non soffocare la tua ispirazione e la tua immaginazione,
    non diventare lo schiavo del tuo modello"

    Vincent van Gogh

  7. #7
    E' quello che avevo già provato, ma non funziona.

    Mettiamo che ho 18 messaggi e ne visualizzo tre per pagina.
    La prima pagina visualizza corettamente il numero di messaggi:

    18 .......

    17.......

    16.......

    Le altre pagine visualizzano tutte anche loro 18.., 17..., 16.....ma i messaggi sono corretti.

    ricapitolando i messaggi ruotano correttamente nel ciclo while, infatti si visualizzano correttamente nelle pagine.
    Mentre la numerazione dei messaggi è corretta solo sulla prima pagina (infatti sulle altre pagine si ripetono) :master:

    se ho ben capito, in $numero_record_totali2; hai il numero di messaggi, giusto? prova a fare un echo della variabile per vedere se è così.
    Si certo la variabile $numero_record_totali2 contiene il numero totale dei messaggi.

  8. #8
    Utente di HTML.it L'avatar di echoweb
    Registrato dal
    Sep 2008
    Messaggi
    419
    ok. dovremmo esserci

    ok. prova a fare così:

    riga 92
    Codice PHP:
    $num_mess=$numero_record_totali2 $inizio
    riga 96 al posto di $numero_record_totali2= ($numero_record_totali2-1);
    Codice PHP:
    $num_mess--; 
    riga 114 al posto di <td><?=$numero_record_totali2?></td>
    Codice PHP:
    <td><?=$num_mess?></td>
    Ovvero facciamo finta che hai selezionato pagina 2:

    $inizio = 3
    $numero_record_totali2 = 18
    $num_mess = $numero_record_totali2 - $inizio; --> 18 - 3 = 16

    dentro il while, in teoria, dovrebbe partire da 15, e quindi dovresti vedere
    15
    14
    13

    Prova e vedi se funziona



    "Non soffocare la tua ispirazione e la tua immaginazione,
    non diventare lo schiavo del tuo modello"

    Vincent van Gogh

  9. #9
    Funzionaaaaaa.....

    Però ho mica capito :berto: perchè dobbiamo fare così:
    $num_mess=$numero_record_totali2 - $inizio;

    doveva funzionare anche con:
    $num_mess=$numero_record_totali2;

    comunque grazie, sei un grande

  10. #10
    Utente di HTML.it L'avatar di echoweb
    Registrato dal
    Sep 2008
    Messaggi
    419
    Mi fa piacere esser riuscito a darti una mano.

    Allora, il primo giro tu hai i seguenti dati con questi valori:

    $inizio vale 0 perchè non hai selezionato nessuna pagina
    $numero_record_totali2 vale sempre 18
    $num_mess = $numero_record_totali2 - $inizio; --> 18 - 0 = 18

    Quindi nel while avrai

    18
    17
    16

    Poi selezioni la pagina 2, quindi i valori assumo i seguenti dati

    $inizio vale 3, ovvero (($pagina - 1) * $numero_record), cioè ((2-1)*3)
    $numero_record_totali2 vale sempre 18
    $num_mess = $numero_record_totali2 - $inizio; --> 18 - 3 = 15

    Quindi nel while avrai

    16
    15
    14

    e via dicendo.

    Ciao




    "Non soffocare la tua ispirazione e la tua immaginazione,
    non diventare lo schiavo del tuo modello"

    Vincent van Gogh

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.