Visualizzazione risultati 1 fino 9 di 9

Discussione: Passare alla pagina successiva

  1. #1
    Guest

    Question Passare alla pagina successiva

    Salve vado subito al punto...
    sto creando una pagina dei commenti utilizzando fopen.... file di testo
    come si fa quando la pagina è troppo piena di messaggi passare alla pagina successiva e mettere il link sotto 1 - 2

    Un esempio molto chiaro è un Forum ma anche un guestbook oppure nel mio caso una pagina dei commenti...

    pagina dei commenti

    ho fatto delle ricerche su google e si parla di alcuni comandi che ti forniscono le informazioni inerente al numero di righe di un file di testo ma non ho idea di come strutturare il programma per voi dovrebbe essere una cosa molto semplice.



    riassumendo:

    Form html ----> messaggi.php ----> pagina1.php

    quando pagina1.php supera le 10 righe

    Form html ----> messaggi.php ----> pagina2.php

    e di nuovo... quando pagina2.php supera le 10 righe

    Form html ----> messaggi.php ----> pagina3.php

    Spero di averlo spiegato chiaramente...



    Vi metto a disposizione lo script
    Codice:
    <?
    if(isset($_POST['messaggio'])){
    $messaggio=htmlspecialchars($_POST['messaggio']);
    
    $var=fopen("pagina1.php","a+");
    fwrite($var, "<tr><td><img src=' ' width=100 height=100></td><td valign=top><div style='width:200px; text-align:justify'> $messaggio </div></td></tr>");
    fclose($var);
    }
    
    ?>
    
    <form  action="<?php echo $_SERVER['PHP_SELF'];?>" method="POST">
    <input type="text" name="messaggio" size="30">
    <input type="submit" value="scrivi commento">
    </form><br>
    
    <font color=red><h1>Commenti</h1></font><br>
    
    <font color=blue>
    <? include "pagina1.php"; ?>
    </font>
    </table><br>
    <a href="pagina1.php">vai alla pagina dei commenti</a>
    Grazie in anticipo...
    by max_400
    Ultima modifica di max400scuola : 22-06-2011 alle ore 22.37.21

  2. #2
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,769

    Predefinito

    Dovresti modificare la pagina che visualizza i risultati, non occorre modificare lo script che inserisce i dati.

    Non dovresti creare una nuova pagina per i risultati da 1 a 10 e un'altra pagina per i risultati da 11 a 10, ma un'unica pagina dinamica, che legge i risultati a seconda di alcuni parametri impostato dallo script, ad esempio se si trova nella pagina 1, legge dal 1 risultato, mentre se sei alla pagina 2, la stessa pagina regge dal risultato 11 a 20.

    Qui puoi vedere un'esempio di paginazione con dati recuperati da mysql:

    http://www.webmasterpoint.org/php/tu...ginazione.html

    Se i dati dei commenti li recuperi mettendoli in un'array sarebbe più facile adattare il tuo script.

    Ma se vuoi una mano in più dovresti postare lo script che visualizza i risultati.
    Ultima modifica di sevenjeak : 23-06-2011 alle ore 09.45.03

    Sevenjeak
    Software developer and much more

  3. #3
    Guest

    Predefinito

    ho visto l'esempio ho preso i 3 spezzoni di script e li ho messi tutti insieme ma è comparso un errore... bò..

    Comunque io la tabella ce l'ho pronta ho 7 record e
    desidero che vengano visualizzati i primi 5 record

    Mi serve uno script già testato.... breve.... il più breve possibile e funzionante.

    Ho la versione 4 di php penso che si possa fare benissimo.

    Già ho provato questo script che stava per funzionare...

    http://www.mrwebmaster.it/php/artico...mysql_455.html

    Codice PHP:
    <?
    // Creo una variabile dove imposto il numero di record
    // da mostrare in ogni pagina
    $x_pag = 5;

    // 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","utente","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 id FROM agenda"));

    // 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 agenda LIMIT $first, $x_pag");
    $nr = mysql_num_rows($rs);
    if (
    $nr != 0){
    for(
    $x = 0; $x < $nr; $x++){
    $row = mysql_fetch_assoc($rs);
    echo
    "<table><tr>";
    echo
    "<td>" . $row['id'] . "</td>";
    echo
    "<td>" . $row['nome'] . "</td>";
    echo
    "<td>" . $row['telefono'] . "</td>";
    echo
    "</tr></table>";
    }
    }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>";
    }
    }

    // Chiudo la connessione ad DB
    mysql_close($conn);
    ?>
    mi visualizza i primi 5 record ma il link non funziona...
    ecco il risultato....



    e questo lo script che ho usato...
    Codice PHP:
    <?
    // Creo una variabile dove imposto il numero di record
    // da mostrare in ogni pagina
    $x_pag = 5;

    // Recupero il numero di pagina corrente.
    // Generalmente si utilizza una querystring
    $pag = htmlspecialchars($_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","","");
    mysql_select_db("nome_database", $conn);

    // Uso mysql_num_rows per contare le righe presenti
    // all'interno della tabella agenda
    $all_rows = mysql_num_rows(mysql_query("SELECT id FROM nome_tabella"));

    // 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 nome_tabella LIMIT $first, $x_pag");
    $nr = mysql_num_rows($rs);
    if (
    $nr != 0){
    for(
    $x = 0; $x < $nr; $x++){
    $row = mysql_fetch_assoc($rs);
    echo
    "<table border=1 width=700><tr>";
    echo
    "<td width=650>" . $row['id'] . "</td>";
    echo
    "<td width=650>" . $row['user'] . "</td>";
    echo
    "<td width=650>" . $row['pass'] . "</td>";
    echo
    "<td width=650>" . $row['citta'] . "</td>";
    echo
    "<td width=650>" . $row['data'] . "</td>";
    echo
    "<td width=650>" . $row['ip'] . "</td>";
    echo
    "</tr></table>";
    }
    }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>";
    }
    }

    // Chiudo la connessione ad DB
    mysql_close($conn);
    ?>
    dov'è sbaglio? - Perchè il link non mi spunta? - E'un problema di virgolette?
    Ho provato a toglierle o a sistemarle un po meglio..

    Questo script è l'ideale... semplice semplice... alì mortè!!

  4. #4
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,769

    Predefinito

    A me sembra tutto corretto, credo, hai provato a stampare tutte le variabili e a vedere il loro valore prima di if ($all_page > 1)?

    Scusa la domanda, ma non avevi detto che utilizzavi un file di testo come archivio?

    EDIT:

    Altrimenti prova a modificare la if cosi:

    Codice PHP:
    if ($all_pages > 1){
    if (
    $pag > 1){
    echo
    "<a href='" . $_SERVER['PHP_SELF'] . "?pag=" . $pag - 1 . "'>Pagina Indietro</a>&nbsp;";
    }
    if (
    $all_pages > $pag){
    echo
    "<a href='" . $_SERVER['PHP_SELF'] . "?pag=" . $pag + 1 . "'>Pagina Avanti</a>";
    }
    }
    Ma non credo che cambi molto.
    Ultima modifica di sevenjeak : 24-06-2011 alle ore 10.37.07

    Sevenjeak
    Software developer and much more

  5. #5
    Guest

    Predefinito

    ho provato infatti il problema rimane

    vedi un po tu:
    http://max400scuola.altervista.org/a...gine_seven.php

  6. #6
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,769

    Predefinito

    Il problema sembra, credo, nel stampare la paginazione, in realtà te la stampa, sotto la tabella, vedi?

    Prova a modificare cosi l'ultima if:

    Codice PHP:
    if ($all_pages > 1){
    if (
    $pag > 1){
    echo
    "<a href='" . $_SERVER['PHP_SELF'] . "?pag=" . ($pag - 1) . "'>Pagina Indietro</a>&nbsp;";
    }
    if (
    $all_pages > $pag){
    echo
    "<a href='" . $_SERVER['PHP_SELF'] . "?pag=" . ($pag + 1) . "'>Pagina Avanti</a>";
    }
    }
    Ultima modifica di sevenjeak : 24-06-2011 alle ore 11.34.07

    Sevenjeak
    Software developer and much more

  7. #7
    Guest

    Predefinito

    Perfetto!! ...... Adesso funziona!

    Bravo Sevenjeak i miei complimenti...

    http://max400scuola.altervista.org/a...gine_seven.php

    ma non ho capito dov'era il problema?

    ----
    adesso mi sono accorto... le parentesi tonde...
    un ultima cosa...

    per ordinare i numeri ...



    Codice PHP:
    $all_rows = mysql_num_rows(mysql_query("SELECT id FROM indirizzo_ip ORDER BY id ASC"));
    ho provato ad aggiungere ORDER BY id ASC ma non và
    dov'è sbaglo?
    Ultima modifica di max400scuola : 25-06-2011 alle ore 02.28.05

  8. #8
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,769

    Predefinito

    Non saprei, la query e corretta.

    Cmq, ho semplicemente inserito il calcolo della variabile page tra parentesi tonte, lo considerava come testo, non so perché

    Sevenjeak
    Software developer and much more

  9. #9
    Guest

    Predefinito

    ho risolto!
    ho fatto l'ordinamento dal programma phpAdministrator
    adesso la query è a posto.

    Grazie Sevenjeak

Tags for this Thread

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •