paginazione dati

  • Creatore Discussione Creatore Discussione claudia
  • Data di inizio Data di inizio

claudia

Utente Attivo
30 Gen 2006
39
0
0
Ho un problema nella paginazione dei dati...ho trovato questo interessante articolo
http://php.html.it/articoli/leggi/857/paginazione-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?
 
Scusate ho sbagliato a scrivere la linea di codice 30...
Codice:
$res_count = mysql_fetch_array($count);
questa è quella giusta
 
Ho provato a modificarla con
Codice:
$res_count = mysql_fetch_row($count);
ma niente
 
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 src=".$riga[Foto].">");?> 
</tr> 
<tr> 
<td height="22" width="20%"><h4><b>Anno Ripresa</b></td> 
<td height="22" width="20%"><h4><b>Regione</b></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> "; 
  } ?>
:


L'errore che mi da è
Codice:
:    Parse error: syntax error, unexpected $end in /home/mhd-01/www.......php on line 137
La linea 137 corrisponde all'ultima linea di codice della prima pagina che ho postato....(ho abbreviato la query, che in realtà coinvolgeva allo stesso modo più campi, per non annoiarvi troppo)
 
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><b>Anno Ripresa</b></td> 
<td height="22" width="20%"><h4><b>Id</b></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"<b>".$pagina."</b>"; 
          }else{ 
               echo"<a href='default.php?inizio=".(($pagina - 1) * $numero_record)."'>".$pagina."</a>"; 
          } 
     } 
} 
?>


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?
 
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 src="ridimensiona.php?Foto=<?php print ("$this_Foto");?>">
<?php 
echo . $this_AnnoRipresa .;
echo . $this_Id .;
} 

 if($numero_pagine > 1){ 
     for($pagina = 1; $pagina <= $numero_pagine; $pagina++){ 
          if($pagina == $pagina_corrente){ ?>
              <b><?echo $pagina;?></b> <br>
         <?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>";
          
} 
} 
} 

?>
 
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?
 
Ho risolto.....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>"; 
  
}
 

Discussioni simili