Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Impaginazione php

  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2014
    Messaggi
    53

    Impaginazione php

    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>&nbsp;";
    }
    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>

  2. #2

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2014
    Messaggi
    53
    Ho provato ma non mi funziona ... potreste aiutarmi con il codice?

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Che vuol dire che non funziona? Sicuro di aver fatto tutto bene? Gli altri utenti che hanno chiesto hanno avuto successo seguendo quella guida.

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2014
    Messaggi
    53
    mi chiedo:
    1.la prima funzione del codice dovrebbe restituirmi il numero di righe della mia tabella e al posto di "id" posso scrivere un qualsiasi campo della mia tabella ... giusto?
    2.la seconda funzione mette al primo posto dell' array res_count il risultato della prima funzione e non ho capito perchè bisogna farlo!
    3.
    urrent_page = (!$_GET['page']) ? 1 : (int)$_GET['page'] ..cosa significa??
    4. sulla seconda query ho qualche dubbio ma spero di riuscirci da sola dopo il vostro aiuto su queste prime cose.



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

    $res_count = mysql_fetch_row($count);

    // numero totale di records
    $tot_records = $res_count[0];

    // risultati per pagina(secondo parametro di LIMIT)
    $per_page = 10;

    // numero totale di pagine
    $tot_pages = ceil($tot_records / $per_page);

    // pagina corrente
    $current_page = (!$_GET['page']) ? 1 : (int)$_GET['page'];

    // primo parametro di LIMIT
    $primo = ($current_page – 1) * $per_page;

    echo “<div align=\”center\”>\n<table>\n”;

    // esecuzione seconda query con LIMIT
    $query_limit = mysql_query(“SELECT id, nome FROM nome_tabella LIMIT $primo, $per_page”);
    while($results = mysql_fetch_array($query_limit)) {
    echo ” <tr>\n <td>”;
    echo “<a href=\”page.php?id=” . $results['id'] . “\”>” . $results['nome'] . “</a>
    “;
    echo “</td>\n </tr>\n”;
    }

    // includiamo uno dei files contenenti la paginazione, commentate l’altro ovviamente
    include(“paginazione_1.php”);
    //include(“paginazione_2.php”);

    // in questa cella inseriamo la paginazione
    echo ” <tr>\n <td height=\”50\” valign=\”bottom\” align=\”center\”>$paginazione</td>\n”;

    echo ” </tr>\n</table>\n</div>”

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.