Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Paginazione dati

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    38

    Paginazione dati

    Ho un problema nella paginazione dei dati...ho trovato questo interessante articolo
    http://php.html.it/articoli/leggi/85...one-di-dati/3/
    mi sembrava tutto chiaro ma mi da questo errore

    codice:
    Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /home/mhd-01/www..........php on line 30
    la linea 30 corrisponde a
    codice:
    $count = mysql_query("SELECT COUNT(id) FROM nome_tabella");
    nella quale naturalmente ho inserito i miei dati
    Qualcuno mi può aiutare?

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    38
    Ho sbagliato a scrivere la linea di codice
    codice:
    $res_count = mysql_fetch_row($count);
    questa è quella giusta

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    38
    Sto provando e riprovando, ma niente....ora ho optato per quest'altra soluzione. Scrivo la pagina intera
    codice:
    <?php 
    $db_host="";
    $db_user="";
    $db_password="";
    $db_database="";
    
    $connessione=mysql_connect($db_host,$db_user,$db_password) or die ("Errore nella connessione al Mysql:" . mysql_error());
    mysql_select_db($db_database,$connessione) or die ("Errore nella selezione del db:" . mysql_error());
    $recordxpag = 5;
    
    $query=mysql_query("SELECT AnnoRipresa, Regione FROM fotoaereeverticali WHERE AnnoRipresa LIKE '%$_POST[AnnoRipresa]%'
    AND Regione LIKE '%$_POST[Regione]%'"); 
    
    $risultato=mysql_query($query,$connessione) or die ("Errore nella query:" . mysql_error()); 
    $righe = mysql_num_rows($risultato); 
    $numpag = ceil($righe/$recordxpag); 
    include 'paginazione.inc.php'; 
    if ($righe<1) 
      { 
       echo "non ci sono dati"; 
        } 
    else 
    { 
     $da = (($pag-1) * $recordxpag); 
      $a = $da + $recordxpag; 
      if ($a > $righe){$a=$righe;} 
     for ($i = $da; $i < $a; $i++) 
    {
    while($riga=mysql_fetch_array($risultato))
    {?>
    <tr>
    <td colspan="2">
    <?php
    print ("[img].$riga[Foto].[/img]");?>
    </tr>
    <tr>
    <td height="22" width="20%"><h4>Anno Ripresa</td>
    <td height="22" width="20%"><h4>Regione</td>
    </tr>
    <tr><?php print("<tr>");
    print ("<td>$riga[AnnoRipresa]</td>");
    print ("<td>$riga[Regione]</td>");
    print("</tr>");?>
    ?>
    Questa è la pagina paginazione.inc.php
    codice:
    <?php 
    	//numero di link da visualizzare nel menu.
    $num_link=5;
    $querystring = ""; 
    // Recupero il numero di pagina corrente.
    $pag = isset($_GET['pag'])? $_GET['pag'] : 1; 
    
    //se ho meno link di quanti ne voglio visualizzare li visualizzo tutti 
    if($numpag <= $num_links) 
      { 
       for ($pagina = 1; $pagina <= $numpag; $pagina++) 
         { 
          if ($pagina == $pag) 
            echo "<a class=\"pag_selected\" href\"=?pag={$pagina}{$querystring}\" title=\"Vai a pagina $pagina\"> $pagina </a> "; 
          else 
            echo "<a class=\"pag_link\" href=\"?pag={$pagina}{$querystring}\" title=\"Vai a pagina $pagina\"> $pagina </a> "; 
         } 
      } 
    //se la pag corrente è tra le prime $num_links/2 --> stampo i primi $nun_links link 
    else if($pag <= ceil($num_links/2)) 
      { 
       for ($pagina=1; $pagina<=$num_links; $pagina++) 
         { 
          if ($pagina == $pag) 
            echo "<a class=\"pag_selected\" href\"=?pag={$pagina}{$querystring}\" title=\"Vai a pagina $pagina\"> $pagina </a> "; 
          else 
            echo "<a class=\"pag_link\" href=\"?pag={$pagina}{$querystring}\" title=\"Vai a pagina $pagina\"> $pagina </a> "; 
         } 
       echo "<a class=\"pag_link\" href=\"?pag={$numpag}{$querystring}\" title=\"Vai all'ultima pagina\"> >> </a> "; 
      } 
    
    //se la pag corrente è tra le ultime $num_links/2 --> stampo gli ultimi $nun_links link 
    else if($pag > ($numpag-ceil($num_links/2))) 
      { 
       echo "<a class=\"pag_link\" href=\"?pag=1{$querystring}\" title=\"Vai alla prima pagina\"> << </a> "; 
       for ($pagina=$numpag-$num_links+1; $pagina<=$numpag; $pagina++) 
         { 
          if ($pagina == $pag) 
            echo "<a class=\"pag_selected\" href=\"?pag={$pagina}{$querystring}\" title=\"Vai a pagina $pagina\"> $pagina </a> "; 
          else 
            echo "<a class=\"pag_link\" href=\"?pag={$pagina}{$querystring}\" title=\"Vai a pagina $pagina\"> $pagina </a> "; 
         } 
      } 
    
    //Altrimenti la pagina corrente è una dell centrali --> stampo i $nun_links/2 link prima ed $nun_links/2 link dopo 
    else 
      { 
       echo "<a class=\"pag_link\" href=\"?pag=1{$querystring}\" title=\"Vai alla prima pagina\"> << </a> "; 
       for ($pagina = $pag-ceil($num_links/2-1); $pagina <= $pag+ceil($num_links/2-1); $pagina++) 
         { 
          if ($pagina == $pag) 
            echo "<a class=\"pag_selected\" href=\"?pag={$pagina}{$querystring}\" title=\"Vai a pagina $pagina\"> $pagina </a> "; 
          else 
             echo "<a class=\"pag_link\" href=\"?pag={$pagina}{$querystring}\" title=\"Vai a pagina $pagina\"> $pagina </a> "; 
         } 
       echo "<a class=\"pag_link\" href=\"?pag=$numpag\" title=\"Vai all'ultima pagina\"> >> </a> "; 
      } ?>
    E mi da questo errore
    codice:
    Parse error: syntax error, unexpected $end in /home/mhd-01/www.......php on line 137

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    38
    Avevo dimenticato di chiudere una }....comunque non funziona.
    Continuo a cercare da giorni su internet materiale su come paginare i risultati di una query...provo ad applicare i codici che trovo, adattandoli alle mie esigenze e non mi funziona nulla.....ora ho abbandonato il codice precedentemente postato e sto provando ad elaborarne un altro
    codice:
    <?php 
    $db_host="..."; 
    $db_user="..."; 
    $db_password="..."; 
    $db_database="..."; 
    $connessione=mysql_connect($db_host,$db_user,$db_password) or die ("Errore nella connessione al Mysql:" . mysql_error()); 
    mysql_select_db($db_database,$connessione) or die ("Errore nella selezione del db:" . mysql_error()); 
    
    $numero_record = 3; 
    if(!isset($GET["inizio"])){ 
        $inizio = 0; 
    }else{ 
        $inizio = $GET["inizio"]; 
    }   
    $query_limit="SELECT AnnoRipresa, Id,  Foto FROM nome_tabella WHERE AnnoRipresa LIKE '%$_POST[AnnoRipresa]%' 
    order by Id desc limit $inizio, $numero_record" or die ("Errore :" . mysql_error());; 
    
    $query = mysql_query($query_limit); 
    
    $select = "SELECT AnnoRipresa, Id, FROM nome_tabella WHERE AnnoRipresa LIKE '%$_POST[AnnoRipresa]%'"; 
    
    $query2 = mysql_query($select); 
    
    $numero_record_totali = mysql_numrows($query2);   
    
    $numero_pagine = ceil($numero_record_totali/$numero_record);   
    $risultato=mysql_query($query_limit,$connessione) or die ("Errore nella query:" . mysql_error()); 
    while($riga=mysql_fetch_array($risultato)) 
    {?> 
    <tr> 
    <td height="22" width="20%"><h4>Anno Ripresa</td> 
    <td height="22" width="20%"><h4>Id</td> 
    </tr> 
    <tr> 
    <?php echo "<tr>"; 
    echo "<td>". $riga['AnnoRipresa'] . "</td>"; 
    echo "<td>" . $riga['Id'] . "</td>"; 
    echo "</tr>"; 
    } 
    if($numero_pagine > 1){ 
         for($pagina = 1; $pagina <= $numero_pagine; $pagina++){ 
              if($pagina == $pagina_corrente){ 
                   echo"".$pagina.""; 
              }else{ 
                   echo"".$pagina.""; 
              } 
         } 
    } 
    ?>

    Il risultato? Mi fa vedere i primi 3 risultati in una pagina...quando clicco sulla successiva mi compaiono i primi 3 records del DB e così per le altre.....pensavo di esserci riuscita...ma niente anche stavolta.
    Vi prego.....c'è qualcuno che può aiutarmi?

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    38
    Ho finalmente risolto il problema......posto la pagina, forse a qualcuno potrebbe servire.
    Comunque grazie a tutti per i consigli
    codice:
    <?php 
    $db_host="..........";
    $db_user=".........";
    $db_password="...........";
    $db_database="...........";
    
    $connessione=mysql_connect($db_host,$db_user,$db_password) or die ("Errore nella connessione al Mysql:" . mysql_error());
    mysql_select_db($db_database,$connessione) or die ("Errore nella selezione del db:" . mysql_error());
    
    $numero_record = 3; 
    if(!isset($_GET["inizio"])){ 
        $inizio = 0; 
    }else{ 
        $inizio = $_GET["inizio"]; 
    }  
    $Foto = (isset($_POST["Foto"]) ? $_POST["Foto"] : base64_decode($_GET["Foto"]));
    $AnnoRipresa = (isset($_POST["AnnoRipresa"]) ? $_POST["AnnoRipresa"] : base64_decode($_GET["AnnoRipresa"]));
    $Id = (isset($_POST["Id"]) ? $_POST["Id"] : base64_decode($_GET["Id"]));
    
    $query_limit="SELECT AnnoRipresa, Id, Foto 
    FROM nome_tabella 
    WHERE AnnoRipresa LIKE '%".addslashes($AnnoRipresa)."%'
    order by Id limit $inizio, $numero_record"; 
    
    $query = mysql_query($query_limit) or die(mysql_error());
    
    $select="SELECT count(*) FROM nome_tabella 
    WHERE AnnoRipresa LIKE '%".addslashes($AnnoRipresa)."%'"; 
    
    $query2 = mysql_query($select); 
    
    $numero_record_totali = mysql_fetch_row($query2);
    $numero_record_totali = $numero_record_totali[0];
    $numero_pagine = ceil($numero_record_totali/$numero_record);  
    
    $pagina_corrente = ceil(($inizio/$numero_record) + 1);
    
    $this_Foto = "";
    $this_AnnoRipresa = "";
    $this_Id = "";
    
    while($riga=mysql_fetch_array($query))
    {
    $this_Foto=$riga['Foto'];
    $this_AnnoRipresa=$riga['AnnoRipresa'];
    $this_Id=$riga['Id'];
    ?>
    [img]ridimensiona.php?Foto=<?php print ([/img]">
    <?php 
    echo . $this_AnnoRipresa .;
    echo . $this_Id .;
    } 
    
     if($numero_pagine > 1){ 
         for($pagina = 1; $pagina <= $numero_pagine; $pagina++){ 
              if($pagina == $pagina_corrente){ ?>
                  <?echo $pagina;?> 
    
             <?php  }else{
    echo"<a href=\"pagina.php?inizio=".(($pagina - 1) * $numero_record)."&amp;AnnoRipresa=".base64_encode($AnnoRipresa).
    "&amp;Id=".base64_encode($Id).
    "&amp;Foto=".base64_encode($Foto)."\">".$pagina."</a>";
              
    } 
    } 
    } 
    
    ?>

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    38
    Recuperando il mio post precedente vorrei chiedere a qualcuno come fare per modificare la visualizzazione della paginazione....mi spiego meglio:
    con il codice da me postato io riesco a visualizzare il numero totale dei record e il numero delle pagine (1 2 3 4.....)
    è possibile sostituire questi ultimi con due < > che mi consentano di navigare avanti e indietro nei risultati?

  7. #7
    Utente di HTML.it L'avatar di zakros
    Registrato dal
    Oct 2000
    Messaggi
    509
    Io uso da anni questo codice, puoi vederlo da qui : http://www.mercatinoitaliano.com/

    <?

    $pag_count = mysql_query("SELECT COUNT(id) FROM tuatabella");
    $pag_res_count = mysql_fetch_row($pag_count);
    $pag_tot_records = $pag_res_count[0]; // numero totale di records
    $pag_per_page = 30; // risultati per pagina(secondo parametro di LIMIT)
    $pag_tot_pages = ceil($pag_tot_records / $pag_per_page); // numero totale di pagine
    $pag_current_page = (!$_GET[pgn]) ? 1 : (int)$_GET[pgn]; // pagina corrente
    if($_GET[pgn]<1 || $_GET[pgn]>$pag_tot_pages){$_GET[pgn]=1;$pag_current_page=1;}
    $pag_primo = ($pag_current_page - 1) * $pag_per_page; // primo parametro di LIMIT

    $pag_paginazione ="Page ($pag_tot_pages)[ ";
    $_GET[pgn]=(int)$_GET[pgn];
    $ini=$_GET[pgn];
    if($_GET[pgn]<3){$ini=3;}
    else if ($_GET[pgn]>($pag_tot_pages-2)){$ini=$pag_tot_pages-2;}
    if($_GET[pgn]>4 && $pag_tot_pages>6){$pag_paginazione .= "<<";}
    if($_GET[pgn]>3 && $pag_tot_pages>5){$pag_paginazione .= "<";}
    for($i = $ini-2; $i <= ($ini+2); $i++){

    if($i==$_GET[pgn]){$pag_paginazione .="".$_GET[pgn]."";}
    if ($i>0 && $i<=$pag_tot_pages && $i!=$_GET[pgn]){$pag_paginazione .= "$i";}
    }
    if($_GET[pgn]<($pag_tot_pages-2) && $pag_tot_pages>5){$pag_paginazione .= " >";}
    if($_GET[pgn]<($pag_tot_pages-3) && $pag_tot_pages>6){$pag_paginazione .= ">>";}
    $pag_paginazione .= " ]";


    $query_posts = "SELECT * FROM tuatabella ORDER BY user_id DESC LIMIT $pag_primo, $pag_per_page";
    $result_posts = mysql_query($query_posts) or die("Can't do query_posts: " . mysql_error());
    while ($row_posts = mysql_fetch_array($result_posts)) {

    //.....
    //pagina
    //.....


    }

    ?>

    <table width="100%" cellspacing="1" cellpadding="2" class="testo" align="center">
    <tr bgcolor="FFFFFF">
    <td height="28" width="26%" style="margin-left:1px;" align="left">
    <div align="left"><? echo "Pagina $pag_current_page di $pag_tot_pages"; ?></div>
    </td>
    <td height="28" width="1%" style="margin-left:1px;" align="left">
    <div align="right"></div>
    </td>
    <td height="28" width="73%" style="margin-right:1px;" align="right">
    <div align="right"><? echo $pag_paginazione.""; ?></div>
    </td>
    </tr>
    </table>



  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    38
    Grazie del consiglio, ho comunque risolto il problema in altro modo.....posto il codice modificato
    codice:
    if($numero_pagine > 1){ 
    
         if ($pagina_corrente > 1) 
        echo"<a href=\"pagina.php?inizio=".(($pagina_corrente - 2) * $numero_record)."&amp;AnnoRipresa=".base64_encode($AnnoRipresa). 
            "&amp;Id=".base64_encode($Id). 
            "&amp;Foto=".base64_encode($Foto)."\">&lt;&lt;</a>"; 
         
         if ($pagina_corrente < $numero_pagine)
        echo"<a href=\"pagina.php?inizio=".(($pagina_corrente) * $numero_record)."&amp;AnnoRipresa=".base64_encode($AnnoRipresa). 
                "&amp;Id=".base64_encode($Id). 
                "&amp;Foto=".base64_encode($Foto)."\">&gt;&gt;</a>"; 
      
    }

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.