Visualizzazione risultati 1 fino 8 di 8

Discussione: dividere in pagine i risultati

  1. #1
    Guest

    Predefinito dividere in pagine i risultati

    In pratica ho questo codice che mostra le informazioni di ogni singolo utente e le mostra su ogni riga:


    Codice PHP:
    for($i=0;$i<$c1;$i++)
    {
    //show each user
    $each = def($users[$i], "./db/users");



    echo
    "$each[id]-$each[email]";

    }
    $c1 contiene l'array di tutti i dati

    Il problema è che però tutto questo mi viene mostrato solo su una singola pagina, e potete immaginare come su 1400 risultati, un qualsiasi browser possa andare in crash.

    Come si fa a dividerle in pagine dove ogni pagina ne contiene solo 50 e cosi via?

    Del tipo view.php?pagina=2 e vedo gli altri 50 ecc.....

    Per quanto riguarda l'input cioè le caselle dei messaggi per girare pagina ce l'ho già, ma è il sistema che divide i risultati che mi manca.

    Ciao ;)

  2. #2
    L'avatar di silverseraph
    silverseraph non è connesso AlterGuru
    Data registrazione
    27-04-2005
    Residenza
    Localhost
    Messaggi
    1,104

  3. #3
    Guest

    Predefinito

    Citazione Originalmente inviato da silverseraph
    Non uso mysql però, uso un database di testo, quindi gli esempi mostrati sul sito sono moooolto differenti dal mio.

    Mi servirebbe un aiuto solo sul codice mostrato

  4. #4
    L'avatar di silverseraph
    silverseraph non è connesso AlterGuru
    Data registrazione
    27-04-2005
    Residenza
    Localhost
    Messaggi
    1,104

    Predefinito

    Il ragionamento è los tesso, solo che invece di fare la connessione al database, richiami il file con la funzione file(), il tutale dei record invece che con mysql_fetch_row() lo troverai con count() e poi invece di inserire le condizioni nel LIMIT della query, le inserirai nel ciclo for.

  5. #5
    Guest

    Predefinito

    Codice PHP:
    $users = listall("./db/users");
    $c1 = count($users);
    $posts_per_page = "1";

    if(!isset(
    $page)) {

    $page = 1;

    }

    $start = $page * $posts_per_page - $posts_per_page;



    if (
    $c1 <= $posts_per_page) {

    $num_pages = 1;

    } else if ((
    $c1 % $posts_per_page) == 0) {

    $num_pages = ($c1 / $posts_per_page);

    } else {

    $num_pages = ($c1 / $posts_per_page) + 1;

    }

    $num_pages = (int) $num_pages;
    $p = "";

    $x = +1;



    $y = 0;


    for(
    $i=$start;$i<$c1;$i++)

    {

    if(
    $y >= $posts_per_page) {



    break;

    }


    echo
    "$each[id]-$each[email]";

    }
    E adesso se sto su pagina.php?page=1

    Me li visualizza sempre tutti

    Se sto su page=2

    Me ne visualizza 2

    E se mi trovo su 3

    Me ne visualizza 1

    Secondo quanto ho scritto dovrebbe visualizzare un risultato ogni pagina

    Ho inoltre cercato di adattarmi il più possibile con un altra gestione pagine sempre dello stesso script, che sbaglio?

  6. #6
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    In questo script mancano dei pezzi. Da dove prendi $each, per esempio?
    Ultima modifica di funcool : 02-03-2007 alle ore 10.14.01
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  7. #7
    Guest

    Predefinito

    si dimenticavo $each si trova all'interno di:

    $each = def($users[$i], "./db/users");

    Prima di echo "";

    In pratica serve per trovare i record a seconda della richiesta che gli viene effettuata, tipo $each[nome_ute] o $each[nome_messaggio] che formano i record.

    Altri pezzi di codice che mancano non penso

    Codice PHP:
    $users = listall("./db/users");
    Questo si riferisce a due file db/users.dat e db/users.def, sono dove prende i dati dal database centrale.

    Se qualcos'altro trovi strano dimmi

    Codice PHP:
    $users = listall("./db/users");
    $c1 = count($users);
    $posts_per_page = "1";

    if(!isset(
    $page)) {

    $page = 1;

    }

    $start = $page * $posts_per_page - $posts_per_page;



    if (
    $c1 <= $posts_per_page) {

    $num_pages = 1;

    } else if ((
    $c1 % $posts_per_page) == 0) {

    $num_pages = ($c1 / $posts_per_page);

    } else {

    $num_pages = ($c1 / $posts_per_page) + 1;

    }

    $num_pages = (int) $num_pages;
    $p = "";

    $x = +1;



    $y = 0;


    for(
    $i=$start;$i<$c1;$i++)

    {

    if(
    $y >= $posts_per_page) {



    break;

    }
    $each = def($users[$i], "./db/users");

    echo
    "$each[id]-$each[email]";

    }
    Ultima modifica di automondiali : 02-03-2007 alle ore 14.52.45

  8. #8
    L'avatar di silverseraph
    silverseraph non è connesso AlterGuru
    Data registrazione
    27-04-2005
    Residenza
    Localhost
    Messaggi
    1,104

    Predefinito

    Allora, andiamo con ordine...
    Anzitutto, dichiariamo quanti record vorgliamo visualizzare in una pagina:
    Codice PHP:
    $record_for_page = 1;
    in questo caso, come dal tuo script ho impostato di visualizzare un record per pagina
    e poi, contiamo il totale dei records:
    Codice PHP:
    $counter = count($users):
    adesso, vediamo il numero di risultati per pagina con divisione intera:
    Codice PHP:
    $num_pages = ceil($counter / $record_for_page);
    ora, dobbiamo fare in modo che si trovi a pagina 1 se nell'url non c'è ?pagina=numero.
    faremo così:
    Codice PHP:
    $page = (isset($_GET['page'] != "") ? $_GET['page'] : 1;
    a questo punto, indichiamo da che numero deve partire:
    Codice PHP:
    $start_record = ($page - 1) * $record_for_page;
    e a che numero deve arrivare:
    Codice PHP:
    $end_record = min($page * $record_for_page, $counter);
    Adesso potremmos tampare i risultati semplicemente in questo modo:
    Codice PHP:
    for ($i = $start_record; $i < $end_record; $i++)
    {
    $each = def($users[$i], "./db/users");
    echo
    "$each[id]-$each[email]";
    }
    Spero di essere stato chiaro....
    ciao

Regole di scrittura

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