Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[PHP/MySQL]Paginazione dati

Problemi di HTML? Di PHP, ASP, .NET, JSP, Perl, SQL, JavaScript, Visual Basic..?
Vuoi realizzare programmi in C, C++, Java, Ruby o Smalltalk, e non sai da che parte cominciare?
Entra qui e troverai le risposte!

Moderatori: Triumph Of Steel, archimede

[PHP/MySQL]Paginazione dati

Postdi alice1 » 23/10/06 10:19

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

Codice: Seleziona tutto
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: Seleziona tutto
$count = mysql_query("SELECT COUNT(id) FROM nome_tabella");

nella quale naturalmente ho inserito i miei dati
Qualcuno mi può aiutare?
alice1
Utente Junior
 
Post: 28
Iscritto il: 29/03/06 12:51

Sponsor
 

Postdi alice1 » 23/10/06 10:41

Scusate ho sbagliato a scrivere la linea di codice 30...
Codice: Seleziona tutto
$res_count = mysql_fetch_array($count);

questa è quella giusta
alice1
Utente Junior
 
Post: 28
Iscritto il: 29/03/06 12:51

Postdi alice1 » 23/10/06 10:50

Ho provato a modificarla con
Codice: Seleziona tutto
$res_count = mysql_fetch_row($count);

ma niente
alice1
Utente Junior
 
Post: 28
Iscritto il: 29/03/06 12:51

Postdi 12 » 23/10/06 10:59

Codice: Seleziona tutto
$count = mysql_query("SELECT COUNT(id) FROM nome_tabella", $connessione);


dove $connessione sarebbe la variabile che hai valorizzato con i parametri usati da mysql_connect.

ciao ciao
12
Utente Senior
 
Post: 1413
Iscritto il: 12/01/04 19:45
Località: Milèn

Postdi 12 » 23/10/06 10:59

mi sono espresso male.. $connessione sarebbe la variabile che hai valorizzato con mysql_connect, non con i dati che usa :P
12
Utente Senior
 
Post: 1413
Iscritto il: 12/01/04 19:45
Località: Milèn

Postdi alice1 » 23/10/06 13:08

Sto provando e riprovando, ma niente....ora ho optato per quest'altra soluzione. Scrivo la pagina intera
Codice: Seleziona tutto
<?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: Seleziona tutto
<?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> ";
  } ?>
alice1
Utente Junior
 
Post: 28
Iscritto il: 29/03/06 12:51

Postdi archimede » 23/10/06 13:55

Che tipo di dati sono AnnoRipresa e Regione?

Alessandro
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Postdi alice1 » 23/10/06 14:02

Sono entrambi campi di testo
alice1
Utente Junior
 
Post: 28
Iscritto il: 29/03/06 12:51

Postdi archimede » 23/10/06 15:13

Allora rivedrei (uso il condizionale perché non sono esperto di MySQL né di PHP) questa istruzione:
Codice: Seleziona tutto
$query=mysql_query("SELECT AnnoRipresa, Regione FROM fotoaereeverticali WHERE AnnoRipresa LIKE '%$_POST[AnnoRipresa]%' AND Regione LIKE '%$_POST[Regione]%'");
Forse ci vuole qualcosa tipo:
Codice: Seleziona tutto
$query=mysql_query("SELECT AnnoRipresa, Regione FROM fotoaereeverticali WHERE AnnoRipresa LIKE '%" . $_POST[AnnoRipresa] . "%' AND Regione LIKE '%" . $_POST[Regione] . "%'");
HTH.

Alessandro
Ultima modifica di archimede su 24/10/06 07:35, modificato 1 volte in totale.
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Postdi alice1 » 23/10/06 15:30

Vedi, prima di inserire la paginazione la query funzionava benissimo così come l'ho postata...l'errtore deve essere nel nuovo codice
alice1
Utente Junior
 
Post: 28
Iscritto il: 29/03/06 12:51

Postdi 12 » 23/10/06 22:54

Codice: Seleziona tutto

$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);



m a perchè dai mysql_query due volte?

Codice: Seleziona tutto
$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);



.... di solito io faccio una cosa del genere :eeh:
12
Utente Senior
 
Post: 1413
Iscritto il: 12/01/04 19:45
Località: Milèn

Postdi alice1 » 15/11/06 08:53

Ho finalmente risolto il problema......posto la pagina, forse a qualcuno potrebbe servire.
Comunque grazie a tutti per i consigli
Codice: Seleziona tutto
<?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>";
         
}
}
}

?>


alice1
Utente Junior
 
Post: 28
Iscritto il: 29/03/06 12:51

Postdi alice1 » 09/01/07 12:43

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?
alice1
Utente Junior
 
Post: 28
Iscritto il: 29/03/06 12:51

Postdi alice1 » 09/01/07 14:49

Ho risolto.....posto il codice modificato
Codice: Seleziona tutto
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>";
 
}
alice1
Utente Junior
 
Post: 28
Iscritto il: 29/03/06 12:51


Torna a Programmazione


Topic correlati a "[PHP/MySQL]Paginazione dati":


Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti

cron