Newsgroup: it.comp.www.php
Titolo: problema con la paginazione

Salve, ho fatto una paginazione con php e mysql ma l'ultima pagina
risulta vuota.
Mi ci date un'occhiata:
<? $connection = mysql_connect('
www.sito.it
','userid','password') or die
("Non riesco a connettermi");
	mysql_select_db ("ufotusci", $connection);
 
	$sql= "SELECT count(*) as c from tbl_news";
	$count = (c);
	$records_per_page = 1;
	$total_pages = ceil( $count / $records_per_page );		
	if ( !isset($page) ) { $page = 1; }	
	$offset = ( $page - 1 ) * $total_pages;	
 
$sql = "select *,DATE_FORMAT(s_data,'%d %m %Y') as data from tbl_news
order by s_data desc";
$sql .=" LIMIT $offset,$records_per_page";
 
$result = mysql_query($sql, $connection);	
	while ($ris = mysql_fetch_array($result) )
	{
	$id = $ris["id"];
	$s_titolo = $ris["s_titolo"];
	$s_testo =  $ris["s_testo"];						
	$s_data = $ris["data"];
 
	$s_immagine = $ris["s_immagine"];
	?>
	<tr>
	    <td><font class="testo"><? echo "$s_data"?></font></td>	
	    <td>&nbsp;&nbsp;</td>	
	    <td><a class="testo" href="javascript:dettaglio(<? echo $id?>);"><?
echo "$s_titolo";?></a></td>
	</tr>	
 
 
	<tr>		
	    <td colspan="3">
	<?					
	}
 
	//************************ PAGINAZIONE ***********************
	# this will set up the "First | Prev | " part of our navigation.
	if ( $page == 1 ) {
	    # if we are on the first page then "First" and "Prev"
	    # should not be links.
	    $naviagation = "<font color=\"#666666\">First</font> | <font
color=\"#666666\">Prev</font> | ";
	} else {
	    # we are not on page one so "First" and "Prev" can
	    # be links
	    $prev_page = $page - 1;
	    $navigation = "<a href=\"$PHP_SELF?page=1\">First</a> | <a
href=\"$PHP_SELF?page=$prevpage\">Prev</a> | ";
	}
 
	# this part will set up the rest of our navigation "Next | Last"
	if ( $page == $total_pages ) {
	    # we are on the last page so "Next" and "Last"
	    # should not be links
	    $navigation .= "<font color=\"#666666\">Next</font> | <font
color=\"#666666\">Last</font>";
	} else	{
	    # we are not on the last page so "Next" and "Last"
	    # can be links
	    $next_page = $page + 1;
	    $navigation .= "<a href=\"$PHP_SELF?page=$next_page\">Next</a> | <a
href=\"$PHP_SELF?page=$total_pages\">Last</a>";
	}
	//************************ PAGINAZIONE ************************						
 
	?>
			<font class="testo">
				<?echo "$navigation"?>
			</font>
			</td>
		</tr>
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 $count = (c);
Qui mi pare che hai pasticciato qualcosa (e non avendo il count e' chiaro
che non si puo' controllare il prev/next) nel codice originale.

, jurgen@rm-
spam.schwietering.com
 says...

Confermo.
Andrea, ti sei dimenticato di valorizzare "c"
basta sostituire:
  $count = (c);
con:
  $result = mysql_query($sql, $connection);
  $count = mysql_result ($result, 'c');
visto che c'ero... mi sono permesso di modificarlo un pochino.
cosě funziona, (l'ho provato)
<? 
  $cfg_Host  = '
www.sito.it
';
  $cfg_User  = 'userid';
  $cfg_Pass  = 'password';
  $cfg_DB    = 'ufotusci';
  $cfg_Table = 'tbl_news';
  //Query per estrarre i dati che vogliamo visualizzare
  $cfg_Query = "select id, s_titolo, s_testo, s_immagine, DATE_FORMAT
(s_data,'%d %m %Y') as data from $cfg_Table order by s_data desc";
  //Testo che vogliamo mostrare nei titoli della tabella 
  $cfg_campi = array ('ID', 'Titolo', 'Testo', 'Data', 'Immagine'); 
  //Numero di record per Pagina
  $records_per_page = 1;
 
  $connection = mysql_connect($cfg_Host, $cfg_User, $cfg_Pass)  or die 
("Non riesco a connettermi al server [$cfg_Host]");
  mysql_select_db ($cfg_DB, $connection) or die ("Non riesco a trovare 
il DataBase [$cfg_DB]");
 
  $sql= "SELECT count(*) FROM $cfg_Table";
  $result = mysql_query($sql, $connection);
  $count = mysql_result ($result, 'c');
  $total_pages = ceil( $count / $records_per_page );
  if (!isset($page)) { $page = 1; }
  $offset = ( $page - 1 ) * $records_per_page;
  $cfg_Query .= " LIMIT $offset, $records_per_page";
 
  $result = mysql_query($cfg_Query, $connection);
  print "<table width='90%' border='1' cellspacing='1' cellpadding='1' 
align='center'>\n";
  foreach ($cfg_campi as $TitoloColonna) {
    print "  <td align='center'><b><font color=#008080>$TitoloColonna
</font></b></td>\n";
  };
  print "<tr>\n";
  while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
      print "  <tr>\n";
      foreach ($line as $col_value) {
        print "    <td>$col_value</td>\n";
      }
  }
//--Barra di Navigazione----------------inizio--
  $navigation = '';
  $FontTAG = "<font color='#666666'>";
  $HrefTAG = "<a href='$PHP_SELF?page=";
 
  // Costruiamo la prima parte della barra di Navigazione  First | Prev
  if ( $page == 1 ) { 
      $navigation = $FontTAG.'First</font> | '.$FontTAG.'Prev</font> | 
';
  } else {
      $prev_page = $page - 1;
      $navigation = $HrefTAG."1'>First</a> | ".$HrefTAG."$prev_page'>
Prev</a> | ";
  }
  // Costruiamo la seconda parte della barra di Navigazione  Next | Last
  if ( $page == $total_pages ) {
      $navigation .= $FontTAG.'Next</font> | '.$FontTAG.'Last</font>';
  } else  {
      $next_page = $page + 1;
      $navigation .= $HrefTAG."$next_page'>Next</a> | ".
$HrefTAG."$total_pages'>Last</a>";
  }
//--Barra di Navigazione------------------fine--
//  print "$navigation \n";
 
  print "  </tr>\n";
  print "</table>\n";
  print "<div align='center'>$navigation</div>\n";
?>


Qua c'e' ancora qualcosa che non quadra... :))))
mysql_result ($result, 0); oppure $sql= "SELECT count(*) as c FROM
$cfg_Table";
Se mi dai il permesso metto lo script in una FAQ (talmente spesso si chiede
questa cosa)...

, jurgen@rm-
spam.schwietering.com
 says...

Oppssss.... : )
si, nel riscriverlo mi sono perso una "as c" della query.
Comunque č meglio lasciare la query cosě com'č
e usare   mysql_result ($result, 0);
Per quanto riguarda il permesso, credo che piů che il mio.... serva 
quello di Andrea. (comunque per me, NoProblem)
Bye,
Luke650.

 quello di Andrea. (comunque per me, NoProblem)
Ovviamente non ho nulla in contrario!
Andrea



L'ho messo qui: 
http://www.dopoil.com/PHP-FAQ/faq.php?navigaMySQL