Paginazione dati

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

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

$count = mysql_query("SELECT COUNT(id) FROM nome_tabella");

nella quale naturalmente ho inserito i miei dati

Qualcuno mi può aiutare?

inviato 10 anni fa
alice1
X 0 X

Ho sbagliato a scrivere la linea di codice $res_count = mysql_fetch_row($count);  

questa è quella giusta

risposto 10 anni fa
alice1
X 0 X

Sembrerebbe che la query non ha restituito risultati, prova a verificarlo prima di usare il fetch row

risposto 10 anni fa
LonelyWolf
X 0 X

Sto provando e riprovando, ma niente....ora ho optato per quest'altra soluzione. Scrivo la pagina intera <?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

<?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 Parse error: syntax error, unexpected $end in /home/mhd-01/www.......php on line 137

risposto 10 anni fa
alice1
X 0 X

ma dov'è la pagina che ti dà questo secondo errore? le due postate sono di 44 e 57 righe!

risposto 10 anni fa
LonelyWolf
X 0 X

La pagina che mi da l'errore è la prima...in realtà la query di ricerca è più lunga di quella che ho postato (si ripete uguale su più campi), l'ho abbreviata perchè mi sembrava opportuno non annoiare il lettore più di tanto. La linea 137 corrispondeva all'ultima linea di codice della pagina e (ugualmente) nel caso di quella postata a

?>
risposto 10 anni fa
alice1
X 0 X

e cioè sarebbe questa:

echo "<a class=\"pag_link\" href=\"?pag=$numpag\" title=\"Vai all'ultima pagina\"> >> </a> ";

  } ?>

L'errore è dovuto a una mancata chiusura di qualche cosa, forse si confonde con la sintassi heredoc:

prova a cambiare << e >> con qualcosa di diverso

risposto 10 anni fa
LonelyWolf
X 0 X

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

<?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?

risposto 10 anni fa
alice1
X 0 X

allora vuol dire che questo funziona; l'errore è altrove ed eccolo:

tuo codice:

if(!isset($GET["inizio"])){ 
    $inizio = 0; 
}else{ 
    $inizio = $GET["inizio"]; 
}   

corretto:

if(!isset($_GET["inizio"])){ 
    $inizio = 0; 
}else{ 
    $inizio = $_GET["inizio"]; 
}   

Fatta questa correzione dovrebbe essere a posto.

risposto 10 anni fa
LonelyWolf
X 0 X

Ho provato a modificare il codice ma mi da sempre lo stesso errore...la prima pagina con i 3 risultati è ok le altre mi visualizzano i primi 3 records del DB

risposto 10 anni fa
alice1
X 0 X

hai controllato che i valori passati siano corretti?

Andiamo per esclusione, prova a mttere un echo $query_limit così verifichi che la query sia formata correttamente, ovviamente visualizzala anche per le pagine successive!

risposto 10 anni fa
LonelyWolf
X 0 X

Si, i valori passati sono corretti

risposto 10 anni fa
alice1
X 0 X

Ho finalmente risolto il problema......posto la pagina, forse a qualcuno potrebbe servire.

Comunque grazie a tutti per i consigli

<?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>";

          

} 

} 

} 

?>
risposto 10 anni fa
alice1
X 0 X

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?

risposto 9 anni fa
alice1
X 0 X

Ho risolto.....posto il codice modificatoif($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>";   }

risposto 9 anni fa
alice1
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda