Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    684

    Paginazione per singola categoria

    Ciao a tutti,
    sto utilizzando questo script per la paginazione

    http://php.html.it/articoli/leggi/85...zione-di-dati/

    all'interno di un codice che mi permette di inserire immagini e testi (una sorta di gallery).

    Ho realizzato un menu a tendina che visualizza le immagini per singola categoria.

    Il menu a tendina ha una voce "Visualizza tutte le categorie" che mi permette di vedere tutti i records del database.

    Il problema è che quando vedo tutto la paginazione funziona correttamente mentre quando seleziono una singola categoria, la paginazione, invece di ridurre o aumentare il numero di pagine in base ai records presenti, mi visualizza sempre tutto.

    Come impostare la query in modo tale da visualizzare solo le pagine realmente esistenti per ciascuna categoria?

    Spero di non essere stano troppo contorto, non sono molto pratico della cosa.

    Grazie

  2. #2
    Utente di HTML.it L'avatar di marco80
    Registrato dal
    May 2005
    Messaggi
    1,357
    Nel codice c'e' un totale preso con la prima query senza nessunca clausola sul tipo di categoria e quindi il tot page e' sempre lo stesso
    Aggiungi la clausola anche li e verifica le varie operazioni dove viene usato il totale

    Codice PHP:
    // esecuzione prima query
    $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); 
    penso sia solo qui il problemino
    La vita e' uno switch();

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    684
    Intendi questo totale?

    $tot_records = $res_count[0];


    Che clausola dovrei inserire?

    Nel menu a tendina ho questa query:

    $query = mysql_query("select * from categoria where parent='0' order by nome");


    Grazie

  4. #4
    Utente di HTML.it L'avatar di marco80
    Registrato dal
    May 2005
    Messaggi
    1,357
    si ... diciamo che se usi where parent lo devi fare anche nel totale ovviamente
    La vita e' uno switch();

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    684
    Mi puoi fare un esempio per favore? Ho fatto delle prove ma ho errori di sintassi.
    Non sono molto ferrato

  6. #6
    Utente di HTML.it L'avatar di marco80
    Registrato dal
    May 2005
    Messaggi
    1,357
    Se hai aggiunto/modificato :
    $query = mysql_query("select * from categoria where parent='0' order by nome");
    nella query del totale avendo selezionato la categoria dovrai fare :
    Codice PHP:
    // esecuzione prima query
    $count mysql_query("SELECT COUNT(1) FROM nome_tabella where parent='0' ");
    $res_count mysql_fetch_row($count);
    // numero totale di records
    $tot_records $res_count[0]; 
    cosi' da filtrare anche per il totale
    La vita e' uno switch();

  7. #7
    Scusate se mi intrometto ma credo ci sia una soluzione più semplice.

    Suppongo che quando si seleziona una categoria di foto dal menù a tendina, alla query si aggiunga una clausola di WHERE.
    Clausola che nell'ipotesi "Tutte le Categorie" non esiste.
    Correggetemi se sbaglio.

    Se così è, basta fare come segue.

    Codice PHP:
    /*
    $where lo compili in base alla categoria selezionata
    mediante il menù a tendina.
    Se nulla è selezionato $where = "";
    */

    $sql "SELECT * FROM tabella "$where;
    $query mysql_query($query);
    $num mysql_num_rows($query);
    mysql_free_result($query); 
    Con questo metodo, $num contiene il numero di record che ritorna la query... senza arzigogoli di nessun tipo!

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    684
    Questo è il codice del menu a tendina:

    <form action="" method="post" enctype="multipart/form-data" >

    <select name="categoria">
    <option value="categ">Visualizza le categorie</option>
    <?php
    $query = mysql_query("select * from categoria where parent='0' order by nome");
    while($riga = @mysql_fetch_assoc($query)) {
    $parent = $riga['id'];
    $parent_nome = $riga['nome'];
    ?>
    <option value="<?php echo $parent ?>" <?php if ( $categoria == $parent ) echo "selected"; ?>><?php echo $parent_nome ?></option><?php

    $query2 = mysql_query("select *
    from categoria where parent='$parent' order by nome");
    while($subriga = @mysql_fetch_assoc($query2)) {
    $child = $subriga['id'];
    $child_nome = $subriga['nome'];
    ?>

    <option value="<?php echo $child ?>" <?php if ( $categoria == $child ) echo "selected"; ?>> - <?php echo $child_nome ?></option>
    <?php
    }
    }
    ?>
    </select>
    <input type="submit" name="Submit" value="Invia">
    </form>


    Coem devo modificare il tutto?

    Grazie

  9. #9
    :master: Non pensavo ti servisse la pappa pronta.

    Vabè... faccio uno strappo, anche perché noto tutta una serie di cose "strane" nel tuo script" e dubito che così com'è possa funzionare.

    Codice PHP:
    <form action="search.php" method="post" enctype="multipart/form-data" >

    <select name="categoria">
    <option value=NULL>Tutte le categorie</option>
    <?php
    $sql 
    "select * from categoria order by nome";
    $query mysql_query($sql);

    while(
    $riga mysql_fetch_array($query)) {
    $rif $riga['id'];
    $cat $riga['nome'];
    echo 
    "<option value=$rif>$cat</option>";
    }
    mysql_free_result($query);
    ?>
    </select>
    <input type="submit" name="Submit" value="Invia">
    </form>
    La pagina search.php cui punta la form, invece, avrà il seguente codice:
    Codice PHP:
    <?php
    $categoria 
    $_POST['categoria'];

    if (
    $categoria == NULL) {
       
    $where "";
    } else {
       
    $where " WHERE nome_colonna = '$categoria' ";
    }

    $sql "SELECT * FROM tabella "$where
    $query mysql_query($query); 
    $num mysql_num_rows($query); 
    mysql_free_result($query);

    ?>
    Spero di essere stato chiaro.
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    684
    Grazie della dritta, proverò a fare dei test con il codice che mi hai postato.

    Cmq lo script attuale funziona a meraviglia solo che non visualizza le pagine all'interno delle singole categorie come voglio io. Magari non vedendo tutto il codice ti son venuti dei dubbi!



    Ciao e grazie

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.