integrare paginazione

  • Creatore Discussione Creatore Discussione rada
  • Data di inizio Data di inizio

rada

Nuovo Utente
25 Feb 2012
18
0
1
Buon giorno a tutti sono nuovo sia di forum che di php,ho un problema sicuramente per alcuni banale,vorrei capire come inserire la paginazione nel codice dell'articolo "creare un blog".
Di seguito posto il codice dell'articolo,mi piacerebbe capire come creare la paginazione.
Grazie anticipatamente Claudio

PHP:
<?

// includiamo il file di configurazione
@include "config.php";

// includiamo la pagina contenente il codice per la creazione delle anteprime
@require "anteprima.php";

// estraiamo i dati relativi agli articoli dalla tabella
$sql = "SELECT * FROM articoli ORDER BY art_data DESC";
$query = @mysql_query($sql) or die (mysql_error());

//verifichiamo che siano presenti records
if(mysql_num_rows($query) > 0){
  // se la tabella contiene records mostriamo tutti gli articoli attraverso un ciclo
  while($row = mysql_fetch_array($query)){
    $art_id = $row['art_id'];
    $autore = stripslashes($row['art_autore']);
    $titolo = stripslashes($row['art_titolo']);
    $data = $row['art_data'];
    $articolo = stripslashes($row['art_articolo']);
   
    //valorizziamo una variabili con il link all'intero articolo
    $link = " ..<br><a href=\"articolo.php?id=$art_id\">Leggi tutto</a>";

    echo "<h2>".$titolo."</h2>";
   
    // creaimo l'anteprima che mostra le prime 30 parole di ogni singolo articolo
    // per farlo utilizzo una funzione che vi presenterò più avanti
    echo @anteprima($articolo, 5, $link); 
    echo "<br><br>";
   
    // formattiamo la data nel formato europeo
    $data = preg_replace('/^(.{4})-(.{2})-(.{2})$/','$3-$2-$1', $data);

    // stampiamo una serie di informazioni
    echo  "Scritto da <b>". $autore . "</b>";
    echo  "| Articolo postato il <b>" . $data . "</b>";
    echo  "| Commenti: "; 
  
    // mostriamo il numero di commenti relativi ad ogni articolo
    $conta = "SELECT COUNT(com_id) as conta from commenti WHERE com_art = '$art_id'";
    $conto = @mysql_query ($conta);
    $tot = @mysql_fetch_array ($conto);
    echo $sum2 = $tot['conta'];
    echo "<hr>";
  } 
}else{
  // se in tabella non ci sono records...
  echo "Nessun articolo presente.";
}


?>
 
Potresti utilizzare questa classe.


Grazie per la risposta,ma ho un problemino,ho capito che in questo modo creo la classe paginazione,po scrivo il codice per richiamarla,ma continuo a vedere tutti gli articoli,con l'aggiunta delle pagine.
Scusa ancora ma sono proprio tarello in php :boxing:
 
Vediamo di adattare al tuo codice:
PHP:
<?php
// includiamo il file di configurazione
@include "config.php";
// includiamo la pagina contenente il codice per la creazione delle anteprime
@require "anteprima.php"; 
//includiamo il file della classe
@require("paginazione.php");
// istanziamo la classe per l'impaginazione
$p = new Paging;
// numero massimo di risultati per pagina
$max = 5;
// identifichiamo la pagina da cui iniziare la numerazione
$inizio = $p->paginaIniziale($max);
// contiamo i records nel database
$query_count = @mysql_query("SELECT * FROM articoli") or die (mysql_error());
$count = @mysql_num_rows($query_count) or die (mysql_error());

// troviamo il numero delle pagine che dovrà essere contato
$pagine = $p->contaPagine($count, $max);

// limitiamo la SELECT al numero di risultati per pagina
$query = @mysql_query("SELECT * FROM articoli ORDER BY art_data DESC LIMIT ".$inizio.",".$max) or die (mysql_error());

/* qui metti il contenuto del while
*/

//mostriamo le pagine
$lista = $p->listaPagine($_GET['p'], $pagine);
echo $lista . "<br>";
//mostriamo il navigatore Precedente/Successiva
$navigatore = $p->precedenteSuccessiva($_GET['p'], $pagine);
echo $navigatore;
?>
 
Grazie grazie grazie Eliox,perfetto ho scoperto pure l'errore che facevo,posto il codice corretto nel caso.
Grazie infinite saluto Claudio.
PHP:
<?

// includiamo il file di configurazione
@include "config.php";

// includiamo la pagina contenente il codice per la creazione delle anteprime
@require "anteprima.php";

// estraiamo i dati relativi agli articoli dalla tabella
$sql = "SELECT * FROM articoli ORDER BY art_data DESC";
$query = @mysql_query($sql) or die (mysql_error());

//includiamo il file della classe 
@require("paginazione.php"); 
// istanziamo la classe per l'impaginazione 
$p = new Paging; 
// numero massimo di risultati per pagina 
$max = 8; 
// identifichiamo la pagina da cui iniziare la numerazione 
$inizio = $p->paginaIniziale($max); 
// contiamo i records nel database 
$query_count = @mysql_query("SELECT * FROM articoli") or die (mysql_error()); 
$count = @mysql_num_rows($query_count) or die (mysql_error()); 

// troviamo il numero delle pagine che dovrà essere contato 
$pagine = $p->contaPagine($count, $max); 

// limitiamo la SELECT al numero di risultati per pagina 
$query = @mysql_query("SELECT * FROM articoli ORDER BY art_data DESC LIMIT ".$inizio.",".$max) or die (mysql_error()); 


//verifichiamo che siano presenti records
if(mysql_num_rows($query) > 0){
  // se la tabella contiene records mostriamo tutti gli articoli attraverso un ciclo
  while($row = mysql_fetch_array($query)){
    $art_id = $row['art_id'];
    $autore = stripslashes($row['art_autore']);
    $titolo = stripslashes($row['art_titolo']);
    $data = $row['art_data'];
    $articolo = stripslashes($row['art_articolo']);
   
    //valorizziamo una variabili con il link all'intero articolo
    $link = " ..<br><a href=\"articolo.php?id=$art_id\">Leggi tutto</a>";
	 // creaimo l'anteprima che mostra le prime 30 parole di ogni singolo articolo
    // per farlo utilizzo una funzione che vi presenterò più avanti
?>
  <div id="titolo"><? echo "<h2>".$titolo."</h2>";?></div>  

   
 <div id="anteprima"> <?  echo @anteprima($articolo, 5, $link); 
    echo "<br><br>";?></div>
 <?   
    // formattiamo la data nel formato europeo
    $data = preg_replace('/^(.{4})-(.{2})-(.{2})$/','$3-$2-$1', $data);
?>

 <div id="tagecc"> <?    // stampiamo una serie di informazioni
    echo  "Tag <b>". $autore . "</b>";
    echo  "|  <b>" . $data . "</b>";
    echo  "| Commenti: "; 
   // mostriamo il numero di commenti relativi ad ogni articolo
    $conta = "SELECT COUNT(com_id) as conta from commenti WHERE com_art = '$art_id'";
    $conto = @mysql_query ($conta);
    $tot = @mysql_fetch_array ($conto);
    echo $sum2 = $tot['conta'];
    echo "<br>";
	?> </div>
 <div id="pag"><?   
  } 
}else{
  // se in tabella non ci sono records...
  echo "Nessun articolo presente.";
}

//mostriamo le pagine 
$lista = $p->listaPagine($_GET['p'], $pagine); 
echo $lista . "<br>"; 


//mostriamo il navigatore Precedente/Successiva 
$navigatore = $p->precedenteSuccessiva($_GET['p'], $pagine); 
echo $navigatore; 

?>
 
Figurati, felice di esserti stato utile, inoltre grazie per aver postato la tua soluzione.
Solo una cosa, non utilizzare "<?" come delimitatore, è deprecato, utilizza invece "<?php".
 
@ Eliox grazie.

E non usare la chiocciola per non mostrare gli errori.
In produzione puoi mettere questo all'inizio dello script:
PHP:
error_reporting(0);
E in sviluppo lo sostituisci con questo:
PHP:
error_reporting(E_ALL);

Perchè Ale? potresti spiegare la situazione e di preciso cove dovrei agire.
Grazie Claudio
 
Sono d'accordo solo in parte con Alex, secondo me si poò usare l'operatore di silence una volta che si è debuggato il sorgente; l'utilizzo di direttive nel codice è invece a mio parere totalmente da sconsigliare, gli errori non vanno nascosti ma corretti.
Comunque ognuno ha il suo stile di sviluppo.
 
In produzione non si devono mostrare errori, anche quando ci sono. Molto meglio una pagina bianca.
In sviluppo, invece, bisogna visualizzare tutti gli errori, in modo che il programmatore (o chi per lui) possa correggerli.

Questa soluzione si può attuare o rimuovendo/aggiungendo gli operatori di silence ogni volta, oppure semplicemente impostando il livello di visualizzazione degli errori.
 
In produzione non si devono mostrare errori, anche quando ci sono. Molto meglio una pagina bianca.
In sviluppo, invece, bisogna visualizzare tutti gli errori, in modo che il programmatore (o chi per lui) possa correggerli.

Questa soluzione si può attuare o rimuovendo/aggiungendo gli operatori di silence ogni volta, oppure semplicemente impostando il livello di visualizzazione degli errori.

In produzione gli errori non ci dovrebbero essere:)
 
Non so Alex, secondo me l'error_reporting(0) stimola troppo la pigrizia dello sviluppatore, è chiaro che ciò non vale per quelli più coscienziosi.
 

Discussioni simili