Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    777

    [PHP] paginazione quando variabile get manca

    salve questo è il codice
    Codice PHP:
    switch ($_GET['pag']) {
    case 
    'all':
    $query ="SELECT *, date_format(data_ora, 'in data <span class=\"nomeutente\">%d/%m/%Y</span> - <span class=\"nomeutente\">ore %H:%i:%s</span>') as data_formattata FROM commenti WHERE page=$pag order by data_ora DESC";
    break;
    case 
    'risptot' && isset($_GET['totrisp']):
    $totorisp=$_GET['totrisp'];
    $query"SELECT *, date_format(data_ora, 'in data <span class=\"nomeutente\">%d/%m/%Y</span> - <span class=\"nomeutente\">ore %H:%i:%s</span>') as data_formattata FROM commenti WHERE risp=$totorisp or id=$totorisp ORDER BY id ASC";
    break;
    default:

    include(
    "pagcommenti.php");
    $query ="SELECT *, date_format(data_ora, 'Pubblicato il: <span class=\"nomeutente\">%d/%m/%Y</span> - <span class=\"nomeutente\">%H:%i:%s</span>') as data_formattata FROM commenti WHERE page=$pag AND sezione='$sez' order by data_ora DESC LIMIT " . ( ( (int)$pgcomments ) * $messaggi ) . "," $messaggi;
    break;

    tramite switch dico al php cosa deve fare quando il pgcomments assume diversi valori.
    i casi sono questi
    case 1= mostra tutti i commenti
    case 2= mostra solo i commenti di risposta a un commento
    case 3= mostra i commenti con paginazione

    funziona quasi tutto alla perfezione ma quando io scrivo il link senza la variabile get pag non mi mostra più i commenti con paginazione.
    cioè la variabile get pag mi serve per fare paginazione ma quando il link si ferma omettendo &pag= non mi mostra i risultati impaginati.
    questa istruzione si trova in
    include(pagcommenti)
    questo il codice
    Codice PHP:
    $messaggi 10;
    $pagine ceil $n_commenti $messaggi );
    $num=1;
    // estraggo i record
    if ( empty($pgcomments) or (int)$pgcomments 1) {
    $pgcomments$num;
    }

    if ( isset ( 
    $pgcomments ) and (int)$pgcomments $pagine ) {
    $pgcomments $pagine;
    }

    $pagcommenti"<div class=\"tornasu noprint\">";

    $startpg$pgcomments-2;
    if(
    $startpg <= 0){
    $startpg1;
    }
    $endpg$pgcomments+2;
    if(
    $endpg >= $pagine){
    $endpg=$pagine;
    }

    if (
    $startpg and $startpg>$num){
    $pagcommenti .= "<a href=\"art.php?art=" $pag "&amp;pag="$num "#commentare\">Prima</a> | ";
    $pagcommenti .= "... ";
    }
    for ( 
    $i=$startpg$i <= $endpg$i++ ) {

    if((int)
    $pgcomments == $i or empty($pgcomments)) {
    $pagcommenti .= "<div class=\"pagebox1\">[b]" $i "[/b]</div> ";
    }
    else{
    $pagcommenti .="<div class=\"pagebox\"><a href=\"art.php?art=" $pag "&amp;pag=" $i "#commentare\">" $i "</a></div> ";
    }
    }
    if (
    $endpg and $endpg $pagine){
    $pagcommenti .= "...";
    $pagcommenti .= " | <a href=\"art.php?art=" $pag "&amp;pag=" $pagine "#commentare\">Ultima</a>";
    }
    if (
    $pagine 1){
    $pagcommenti .= " | <a href=\"http://www.atuttascienza.altervista.org/art/art.php?art=" $pag "&amp;pag=all#commentare\">Mostra tutti</a>";

    }
    $pagcommenti .="</div>"
    con questa riga
    Codice PHP:
    $num=1
    if ( empty($pgcomments) or (int)$pgcomments 1) {
    $pgcomments$num;

    io dicevo che se pgcomments non esiste o assume valori minori di 1 pgcomments forzatamente sarà 1
    questo influiva sulla query presente nel default.

    volevo aggiungere una cosa.
    prima che io modificassi il codice questo funzionava a dovere. sono passato da if else a switch perchè mi sembrava molto più pratico e ordinato

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    52
    Se esegui lo switch direttamente con $_GET['pag'] e questa non è assegnata (isset) o è vuota (strlen) è normale che i case all'interno dello switch non funzionino.

    Assegna $_GET['pag'] ad una variabile (es $p) poi esegui un controllo come

    Codice PHP:
    if ( !isset($p) ) {
       
    $p "all";

    Poi, successivamente fai lo switch, ma con $p

    Codice PHP:
    switch($p) ... 

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    777
    grazie

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    777
    .

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 © 2025 vBulletin Solutions, Inc. All rights reserved.