Visualizzazione risultati 1 fino 11 di 11

Discussione: Menù di navigazione in pagina con query sql

  1. #1
    Guest

    Post Menù di navigazione in pagina con query sql

    Codice PHP:
    <?php
    $da
    =$_GET['da'];
    if(!
    $da){$da=0;}
    $indietro="$da"-"5";
    $avanti="$da"+"5";
    if(
    $indietro == "-5"){$indietro=0;}
    $user = "";
    $pwd = ""; // qui la tua password
    $host = "localhost";
    $dbase = "";

    $db = mysql_connect ($host, $user, $pwd) or die ("Impossibile connettersi al database!");

    mysql_select_db ($dbase) or die(mysql_error());
    $query = mysql_query("SELECT * FROM sl_user ORDER BY id ASC LIMIT $da,5", $db) or die(mysql_error());
    echo
    "<table border=\"1\"><tr><td>Nome Utente</td><td>Email</td><td>data</td><td>";
    while(
    $arr_risultati=mysql_fetch_assoc($query)){
    echo
    "<tr><td>".$arr_risultati['username'] ."</td><td>". $arr_risultati['mail'] ."</td><td>". $arr_risultati['data'] ."</td><td>";
    }
    echo
    "<a href=?da=$avanti>Avanti</a> - <a href=?da=$indietro>Indietro</a>";
    echo
    "</table>";

    mysql_close($db);
    Questo è quello che sono riuscito a fare,non c'è un modo migliore per avere un'ottimo menù di navigazione.
    Tipo così,
    Pag. 1|2|3|4|5|6|...eccc
    Inizio Indietro | Avanti Fine
    Grazie anticipatamente


    FunCool: Quando scrivi del codice inseriscilo tra i tag appositi.
    Ultima modifica di funcool : 24-06-2006 alle ore 15.59.27

  2. #2
    Guest

    Predefinito

    Beh... dovresti innanzitutto settare quanti contenuti mettere per pagina, poi calcolare quante pagine fare in tutto usando ceil($numerocontenuti/$contenutiperpagina) e solo allora fare il menù di navigazione...

    PS: inserisci i codici tra i tag!

    EDIT: Per le cose delle pagine fai: inizio-> 1; precedente -> $paginacorrente-1; successivo -> $paginacorrente+1; fine -> $numeropagine.
    Ultima modifica di tryphpnuke : 24-06-2006 alle ore 16.01.28

  3. #3
    Guest

    Predefinito

    Non è così semplice tryphpnuke, infatti se ti trovassi alla prima pagina, quella precedente sarebbe pagina 0? Stesso problema all'ultima.

    Ti posto una funzione abbastanza completa per la paginazione dinamica:
    Codice PHP:
    function paginazione($record_tot,$record_per_pag,$max_link,$url_link){
    global
    $pag;
    if(
    $record_tot<=$record_per_pag){
    $pagine=" <b>1</b> ";
    }else{
    $pagine_totali=@ceil($record_tot/$record_per_pag);
    $i_start=floor(($max_link-1)/2);
    $i_end=ceil(($max_link-1)/2);
    if(
    $pag<($max_link-$i_end)){
    $page_end=$max_link;
    }else{
    $page_end=$pag+$i_end;
    }
    if(
    $page_end>$pagine_totali){
    $page_start=($pagine_totali-$max_link)+1;
    }else{
    $page_start=$pag-$i_start;
    }
    if(
    $pag>1 && $page_start>1){
    $pagine="<a href=\"$url_link&amp;pag=1\" title=\"Vai a pagina 1\">[&laquo;]</a> ... ";
    }else{
    $pagine=" ";
    }
    for(
    $p=$page_start;$p<=$page_end;$p++){
    if(
    $p<=0 || $p>$pagine_totali){
    }else{
    if(
    $p==$pag){
    $pagine.="<b>$pag</b> ";
    }else{
    $pagine.="<a href=\"$url_link&amp;pag=$p\" title=\"Vai a pagina $p\">$p</a> ";
    }
    }
    }
    if(
    $pag==$pagine_totali || $page_end>($pagine_totali-1)){
    $pagine.="";
    }else{
    $pagine.="... <a href=\"$url_link&amp;pag=$pagine_totali\" title=\"Vai a pagina $pagine_totali\">[&raquo;]</a>";
    }
    }
    return
    $pagine;
    }
    Spiego velocemente gli argomenti:
    $record_tot: gli elementi totali da paginare;
    $record_per_pag: quanti elementi visualizzare per pagina;
    $max_link: quanti link alle singole pagine visualizzare (dopo di che visualizza ...[&raquo;]);
    $url_link: l'url della pagina php in cui sta avvenendo la paginazione.


    Ciaooooo!!!!!!

  4. #4
    Guest

    Predefinito

    Nun c'è l'ho fatta,sbaglio qualcosa?

    paginazione($record_tot,$record_per_pag,$max_link, $url_link);

    Così ho richiamato la funzione,dichiarandola prima e dando un valore alle variabili prima del richiamo alla funzione.
    Cosa sbaglio?
    ps.Non appare niente

  5. #5
    Guest

    Predefinito

    Posta sia la dichirazione che il richiamo.
    Assicurati poi che la funzione prenda esattamente i valori passati (ti basta inserire tali variabili nel return al posto di $pagine).


    Ciaoo!!!

  6. #6
    Guest

    Predefinito

    Questa è la prova che ho fatto.
    Guarda
    Codice PHP:
    <?
    $record_tot
    = 20;
    $record_per_pag="20";
    $max_link="5";
    $url_link="verli.php?id=$id&op=$showusr";
    function
    paginazione($record_tot,$record_per_pag,$max_link, $url_link){
    global
    $pag;
    if(
    $record_tot<=$record_per_pag){
    $pagine=" <b>1</b> ";
    }else{
    $pagine_totali=@ceil($record_tot/$record_per_pag);
    $i_start=floor(($max_link-1)/2);
    $i_end=ceil(($max_link-1)/2);
    if(
    $pag<($max_link-$i_end)){
    $page_end=$max_link;
    }else{
    $page_end=$pag+$i_end;
    }
    if(
    $page_end>$pagine_totali){
    $page_start=($pagine_totali-$max_link)+1;
    }else{
    $page_start=$pag-$i_start;
    }
    if(
    $pag>1 && $page_start>1){
    $pagine="<a href=\"$url_link&amp;pag=1\" title=\"Vai a pagina 1\">[&laquo;]</a> ... ";
    }else{
    $pagine=" ";
    }
    for(
    $p=$page_start;$p<=$page_end;$p++){
    if(
    $p<=0 || $p>$pagine_totali){
    }else{
    if(
    $p==$pag){
    $pagine.="<b>$pag</b> ";
    }else{
    $pagine.="<a href=\"$url_link&amp;pag=$p\" title=\"Vai a pagina $p\">$p</a> ";
    }
    }
    }
    if(
    $pag==$pagine_totali || $page_end>($pagine_totali-1)){
    $pagine.="";
    }else{
    $pagine.="... <a href=\"$url_link&amp;pag=$pagine_totali\" title=\"Vai a pagina $pagine_totali\">[&raquo;]</a>";
    }
    }
    return
    $pagine;
    }

    //paginazione($record_tot,$record_per_pag,$max_link,$url_link);
    paginazione(20,5,20,lol);
    ?>

  7. #7
    Guest

    Predefinito

    Hai fatto un po' di confusione, hai valorizzato le variabili al di fuori della funzione, poi hai richiamato quest'ultima dando altri valori, ma senza usare echo...

    Pova con questo:
    Codice PHP:
    function paginazione ($record_tot, $record_per_pag, $max_link, $url_link){
    global
    $pag;
    if(
    $record_tot<=$record_per_pag){
    $pagine=" <b>1</b> ";
    }else{
    $pagine_totali=@ceil($record_tot/$record_per_pag);
    $i_start=floor(($max_link-1)/2);
    $i_end=ceil(($max_link-1)/2);
    if(
    $pag<($max_link-$i_end)){
    $page_end=$max_link;
    }else{
    $page_end=$pag+$i_end;
    }
    if(
    $page_end>$pagine_totali){
    $page_start=($pagine_totali-$max_link)+1;
    }else{
    $page_start=$pag-$i_start;
    }
    if(
    $pag>1 && $page_start>1){
    $pagine="<a href=\"$url_link&amp;pag=1\" title=\"Vai a pagina 1\">[&laquo;]</a> ... ";
    }else{
    $pagine=" ";
    }
    for(
    $p=$page_start;$p<=$page_end;$p++){
    if(
    $p<=0 || $p>$pagine_totali){
    }else{
    if(
    $p==$pag){
    $pagine.="<b>$pag</b> ";
    }else{
    $pagine.="<a href=\"$url_link&amp;pag=$p\" title=\"Vai a pagina $p\">$p</a> ";
    }
    }
    }
    if(
    $pag==$pagine_totali || $page_end>($pagine_totali-1)){
    $pagine.="";
    }else{
    $pagine.="... <a href=\"$url_link&amp;pag=$pagine_totali\" title=\"Vai a pagina $pagine_totali\">[&raquo;]</a>";
    }
    }
    return
    $pagine;
    }

    echo
    paginazione ("20", "10", 5, "ciao.php");
    Ciaoooooooo!!!!!!!!!

  8. #8
    Guest

    Predefinito

    Funge.
    Però se io faccio così
    echo paginazione ("$variabile", "10", 5, "ciao.php");
    Non funge più...che devo fare per fargli prendere la variabile?

    Non capisco come mandare il valore alla query sql
    $query2 = "SELECT * FROM reglist ORDER BY ".$type." ".$order." LIMIT $da,20";

    Questa è la query sql,adesso questa query ha bisogno della variabile $da,che si deve incrementare automaticamente di 20 alla volta(le altre variabili $type e $order sono apposto),in modo da darmi 20 risultati ad ogni pagina,e ho bisogno di questo benedetto menù di navigazione.

    $sql = mysql_query("SELECT * FROM reglist");
    $record_tot = mysql_num_rows($sql);
    Questa è la query che mi conta quanti record ci stanno,poi deve dividere sti record in modo d'avere un tot di pagine con 20 risultati di dentro.
    Come lo dovrei fare in automatico?

    Edit:
    Chi fà da sè fà per tre,cmq questo non toglie i ringraziamenti. ;)

    Posto il codice per chi viene dopo di me

    Codice PHP:
    <?
    $totale
    =99;
    $tot_per_pag=4;
    $da=$_GET['da'];
    if(!
    $da){$da=50;}
    $pagine="$totale" / "$tot_per_pag";
    $a = 1;
    while (
    $a <= $pagine) {
    $tot_pag="$tot_per_pag"*"$a";
    echo
    "<a href=prova.php?da=$tot_pag>"; print $a++; echo"</a> ";
    }
    ?>
    Spiegazione facile
    $totale è il numero de i record di una tabella,ottenibile con una query

    Esempio query.
    $sql = mysql_query("SELECT * FROM nometabella");
    $totale= mysql_num_rows($sql);
    Darà il risultato in numero puro dei record in tabella.

    $tot_per_pag sono i record che vogliamo per pagina,

    Query di esempio
    $query2 = "SELECT * FROM reglist LIMIT $da,$tot_per_pag";
    Prenderà i record da al valore impostato per il totale di pagina.

    $da il valore get che cambia in automatico è viene dettato da $tot_pag

    $tot_pag è la moltiplicazione di $a per il numero di risultati che vogliamo per pagina,quindi $tot_per_pag

    Questo è tutto,sicuramente è migliorabile però il concetto è questo :D byez thx
    Ultima modifica di svacant : 25-06-2006 alle ore 17.32.31

  9. #9
    Guest

    Predefinito

    In genere per applicare la paginazione devi effettuare due queries quasi identiche, l'unica differenza è il limit:

    $q_estrai_tot=mysql_query("SELECT * FROM tabella");
    $q_estrai=mysql_query("SELECT * FROM tabella LIMIT $da,$a");

    $totali_estratti=mysql_fetch_row($q_estrai_tot);

    a questo punto la funzione da richiamare diventerà:

    echo paginazione ($totali_estratti, $a, 5, "ciao.php");
    dove $a, visto che lo hai usato nella query, è sempre quello.


    Ciaoo!!!

  10. #10
    Guest

    Predefinito

    Okiz,debug ;),grazie mille.
    E anche questo è risolto,si può chiudere :D.
    Lasciamo qualche key per chi fà le ricerche ;).

    Key : Impaginazione,Risultati sql in pagine,Menù di navigazione,Risultati per pagina,Dividere in pagine i risultati sql,Query sql con risultati suddivisi per pagina.

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

    Predefinito

    Chiudo!
    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

Regole di scrittura

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