CIAO RAGAZZI ... MI AIUTATE AD IMPAGINARE LE PAGINE IN PHP?
NEL MIO BLOG VORREI MOSTRARE AL MAX 3 ARTICOLI E POI ANDARE NELLE ALTRE PAGINE PER VEDERE GLI ALTRI ARTICOLI!
PAGINA INIZIALE DEL MIO BLOG è COSTITUITA DA QUESTO CODICE:
<html>
<head>
<title>Il mio Blog</title>
</head>
<body background="bchiaro.gif">
<h1>Un blog in PHP</h1>
<?php
include('core.php');
if(isset($_SESSION['username'])) {//-> se l utente ha effettuato loggin
$userid = $_SESSION['userid'];
$last_login = mysql_result(mysql_query("SELECT last_login FROM users WHERE id='$userid'"), 0);
echo 'Bentornato, '.$_SESSION['username'].'.<br />Il tuo ultimo login risale al giorno '.date('d-m-Y', $last_login).' alle ore '.date('H:i', $last_login);
} else {// se non ha effettuato loggin rimandiamo la pagina del login
header('Location: login.php');
}
?>
<?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, 30, $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.";
}
?>
//imPAGINAZIONE
<?php
$x_pag =3;
// Recupero il numero di pagina corrente.
// Generalmente si utilizza una querystring
$pag = $_GET['pag'];
// Controllo se $pag è valorizzato...
// ...in caso contrario gli assegno valore 1
if (!$pag) $pag = 1;
// Mi connetto al database
//$conn = mysql_connect("localhost","","password");
//mysql_select_db("nome_db", $conn);
// Uso mysql_num_rows per contare le righe presenti
// all'interno della tabella agenda
$all_rows = mysql_num_rows(mysql_query("SELECT art_id FROM articoli"));
// Tramite una semplice operazione matematica definisco
// il numero totale di pagine
$all_pages = ceil($all_rows / $x_pag);
// Calcolo da quale record iniziare
$first = ($pag - 1) * $x_pag;
// Recupero i record per la pagina corrente...
// utilizzando LIMIT per partire da $first e contare fino a $x_pag
$rs = mysql_query("SELECT * FROM articoli LIMIT $first, $x_pag");
$nr = mysql_num_rows($rs);
if ($nr != 0){
for($x = 0; $x < $nr; $x++){
$row = mysql_fetch_assoc($rs);
$art_id = $row['art_id'];
$autore = stripslashes($row['art_autore']);
$titolo = stripslashes($row['art_titolo']);
$data = $row['art_data'];
$articolo = stripslashes($row['art_articolo']); }
}else{
echo "Nessun record trovato!";
}
// Se le pagine totali sono più di 1...
// stampo i link per andare avanti e indietro tra le diverse pagine!
if ($all_pages > 1){
if ($pag > 1){
echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?pag=" . ($pag - 1) . "\">";
echo "Pagina Indietro</a> ";
}
if ($all_pages > $pag){
echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?pag=" . ($pag + 1) . "\">";
echo "Pagina Avanti</a>";
}
}
?>
</body>
</html>
L'impaginazione non mi funziona e penso sia per il primo metodo get ! ma come potrebbe funzionare?
per completezza mi posto anche il codice per inserire l articolo e quello per mostrarlo ..
<html>
<head>
<title>Blog: inserimento news</title>
</head>
<body>
<h1>Inserisci un articolo</h1>
<?php
//includiamo il file di configurazione
@include "config.php";
//valorizziamo le variabili con i dati ricevuti dal form
if(isset($_POST['submit'])){
if(isset($_POST['autore'])){
$autore = addslashes($_POST['autore']);
}
if(isset($_POST['titolo'])){
$titolo = addslashes($_POST['titolo']);
}
if(isset($_POST['articolo'])){
$articolo = addslashes($_POST['articolo']);
}
// popoliamo i campi della tabella articoli con i dati ricevuti dal form
$sql = "INSERT INTO articoli (art_autore, art_titolo, art_articolo, art_data) VALUES ('$autore', '$titolo', '$articolo', now())";
// se l'inserimento ha avuto successo inviamo una notifica
if (mysql_query($sql) or die (mysql_error())){
echo "Articolo inserito con successo.";
}
}else{
// se non sono stati inviati dati dal form mostriamo il modulo per l'inserimento
?>
<form action="insert_post.php" method="post">
Autore:<br>
<input name="autore" type="text" size="20"><br>
Titolo:<br>
<input name="titolo" type="text" size="30"><br>
Articolo:<br>
<textarea name="articolo" cols="40" rows="10"></textarea><br>
<input name="submit" type="submit" value="Invia">
</form>
<?php
}
?>
</body>
</html>
<html>
<head>
<title>Il mio Blog</title>
</head>
<body background="io6.jpg">
<?php
// controlliamo che sia stato inviato un id numerico alla pagina
if(isset($_GET['id'])&&(is_numeric($_GET['id']))){
// valorizziamo la variabile relativa all'id dell'articolo e includiamo il file di configurazione
$art_id = $_GET['id'];
@include "config.php";
// selezioniamo dalla tabella i dati relativi all'articolo
$sql = "SELECT art_autore,art_titolo,art_data,art_articolo FROM articoli WHERE art_id='$art_id'";
$query = @mysql_query($sql) or die (mysql_error());
// se per quell'id esiste un articolo..
if(mysql_num_rows($query) > 0){
// ...estraiamo i dati e mostriamoli a video
$row = mysql_fetch_array($query) or die (mysql_error());
$autore = stripslashes($row['art_autore']);
$titolo = stripslashes($row['art_titolo']);
$data = $row['art_data'];
$articolo = stripslashes($row['art_articolo']);
echo "<h2>".$titolo."</h2>" . $articolo . "<br><br>";
$data = preg_replace('/^(.{4})-(.{2})-(.{2})$/','$3-$2-$1', $data);
echo "Scritto da <b>". $autore . "</b>";
echo "| Articolo postato il <b>" . $data . "</b>";
// link alla pagina dei commenti
echo "<br><a href=\"insert_comment.php?id=$art_id\">Invia un commento</a><br><br>";
// visualizzianmo tutti i commenti
$sql_com = "SELECT com_autore, com_testo FROM commenti WHERE com_art='$art_id'";
$query_com = @mysql_query($sql_com) or die (mysql_error());
if(mysql_num_rows($query_com) > 0){
echo "Commenti:<br>";
while($row_com = mysql_fetch_array($query_com)){
$com_autore = stripslashes($row_com['com_autore']);
$com_testo = stripslashes($row_com['com_testo']);
echo $com_testo . "<br>";
echo "Inserito da <b>". $com_autore . "</b>";
echo "<hr>";
}
}
}
}else{
// se per l'id non esiste un articolo..
echo "Nessun articolo trovato.";
}
?>
</body>
</html>