Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    impaginare risultati query in php

    Ho la necessita di impaginare i risultati delle query presenti in questo file, in sostanza vorrei che venissero mostrati una quindicina di record a video e poi ci sia la possibilitā di andare alla pagina successiva o precedente.
    ho ptovato cosi ma non va' mi mostra tutti i numeri di pagina e basta...
    ho provato solo sul primo if...
    Codice PHP:
    <h1>Risultati della ricerca</h1>

    <?php
    error_reporting
    (E_ALL);
    include(
    "config.inc.php");
    include(
    "connect.inc.php");

    if(
    $_POST) {
       if(
    $_POST['azione'] == "cerca"){
       
    $chiave $_POST['chiave']; 
    $keys   =   explode   (",",   $chiave);
    $query   =   "";
    reset   ($keys);
    while   (list(,
    $parola)   =   each   ($keys))
    {   
    $parola   =   trim($parola);
    if   (
    $parola   !=   "")
    $query   .=   "titolo   LIKE   '%$parola%'   OR   ingredienti   LIKE   '%$parola%' OR   tipopiatto   LIKE   '%$parola%' OR   ingredienteprincipale   LIKE   '%$parola%' OR   regione   LIKE   '%$parola%' OR   note   LIKE   '%$parola%'    OR   ";
    }
    $query   .=   "0";
    $query   =   "SELECT   id,   titolo, ingredienteprincipale, regione   FROM   DBRicette   WHERE   "   .   $query;
    $count mysql_query("SELECT COUNT(*) FROM DBRicette");
    $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);

    // pagina corrente
    $current_page = (!$_GET['page']) ? : (int)$_GET['page'];

    // primo parametro di LIMIT
    $primo = ($current_page 1) * $per_page;

    $query   =   "SELECT   id,   titolo, ingredienteprincipale, regione   FROM   DBRicette LIMIT $primo$per_page   WHERE   "   .   $query;

    $result   =   mysql_query($query,   $db);
    //echo $query;  dopo l'esecuzione di una query ne mostra il risultato a video
    while   ($row   =   mysql_fetch_array($result))
    {   echo   
    "<a   href=\"index.php?pag=15&id=$row[id]\">"     .   "      $row[titolo]"       </a>
    "
    ;   }
    // includiamo uno dei files contenenti la paginazione
    include("paginazione.php");
    // in questa cella inseriamo la paginazione
    echo " <tr>\n <td height=\"50\" valign=\"bottom\" align=\"center\">$paginazione</td>\n";

    echo 
    " </tr>\n</table>\n</div>";
    }
       elseif(
    $_POST['azione'] == "principale"){
    $chiave $_POST['chiave']; 
    $keys   =   explode   (",",   $chiave);
    $query   =   "";
    reset   ($keys);
    while   (list(,
    $parola)   =   each   ($keys))
    {   
    $parola   =   trim($parola);
    if   (
    $parola   !=   "")
    $query   .=   " ingredienteprincipale   LIKE   '%$parola%'   OR   ";
    }
    $query   .=   "0";
    $query   =   "SELECT   id,   titolo, ingredienteprincipale   FROM   DBRicette   WHERE   "   .   $query;
    $result   =   mysql_query($query,   $db);
    //echo $query;  dopo l'esecuzione di una query ne mostra il risultato a video
    while   ($row   =   mysql_fetch_array($result))
    {   echo   
    "<a   href=\"index.php?pag=15&id=$row[id]\">"     .   "      $row[titolo]"      $row[ingredienteprincipale]</a>
    "
    ;   }
    }
       elseif(
    $_POST['azione'] == "portata"){
    $chiave $_POST['chiave']; 
    $keys   =   explode   (",",   $chiave);
    $query   =   "";
    reset   ($keys);
    while   (list(,
    $parola)   =   each   ($keys))
    {   
    $parola   =   trim($parola);
    if   (
    $parola   !=   "")
    $query   .=   "tipopiatto   LIKE   '%$parola%'   OR   ";
    }
    $query   .=   "0";
    $query   =   "SELECT   id,   titolo, tipopiatto   FROM   DBRicette   WHERE   "   .   $query;
    $result   =   mysql_query($query,   $db);
    //echo $query;  dopo l'esecuzione di una query ne mostra il risultato a video
    while   ($row   =   mysql_fetch_array($result))
    {   echo   
    "<a   href=\"index.php?pag=15&id=$row[id]\">"     .   "      $row[titolo]"      $row[tipopiatto]</a>
    "
    ;   }

    }
      };
    ?>
    questo č il file di paginazione
    Codice PHP:
    <?php

    $paginazione 
    "Pagine totali: " $tot_pages "
    ["
    ;
    for(
    $i 1$i <= $tot_pages$i++) {
    if(
    $i == $current_page) {
    $paginazione .= $i " ";
    } else {
    $paginazione .= "<a href=\"?page=$i\" title=\"Vai alla pagina $i\">$i</a> ";
    }
    }
    $paginazione .= "]";

    ?>

  2. #2
    nessun suggrimento?

  3. #3
    ho provato anche a leggere la pillola sull'impaginazione ma non riesco ad adattarla al mio script

  4. #4
    Allora per sviluppare un sistema di impaginazione, ci sono alcuni dati di cui avrei bisogno:

    1. Il numero totale degli elementi della lista
    2. Il numero di elementi o voci da inserire in ogni pagina
    3. Il numero della pagina che deve essere mostrato

    Nello script riportato la prima query estrae i dati in base alla parola presente nel campo cerca, successivamente vengono selezionati solo gli elementi che mi occorrono. Il problema č che il numero dei record della query cambia col variare della parola ricercata. A questo punto come estraggo il numero dei record dalla query?
    Pensavo di ovviare con $count = mysql_query("SELECT COUNT(*) FROM DBRicette"); subito dopo il select ma non vā...

  5. #5
    Ho fatto un passo indietro, dallo script funzionante, senza la parte relativa alla paginazione , ho varie prove cambiando il select da
    $query = "SELECT id, titolo, ingredienteprincipale, regione FROM DBRicette WHERE " . $query;
    a cosi

    $query = "SELECT id, titolo, ingredienteprincipale, regione FROM DBRicette WHERE LIMIT 0,15 " . $query;

    e cosi
    $query = "SELECT id, titolo, ingredienteprincipale, regione FROM DBRicette ORDER BY RAND() DESC LIMIT 0,15 " . $query;

    ma facendo eseguire le query non viene visualizzato nessun dato.
    A questo punto mi viene il dubbio che mi sfugga qualche cosa legato alla teoria... Il limit e l'eventuale offset vā definito nel select e non nella prima query ossia quella giusto?
    Perche' qualsiasi cambiamento del select non mi visualizza i dati?

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    22
    Dovresti fare una cosa del genere..

    if (!isset($start) OR $start<0)
    $start=0;
    $step = 20;

    $query = "SELECT id,data,titolo FROM news ORDER BY data DESC LIMIT $start,$step";

    a questo punto impagini i risultati..

    poi crei contando i record, tanti link quanti te ne servono...

    a ogni link passi due parametri $start e $step per le query successive

    Spero di essere stato chiaro :-)

  7. #7
    grazie ora provo

  8. #8
    ho inserito questa dicitura

    $query = "SELECT id, titolo, ingredienteprincipale, regione FROM DBRicette WHERE " . $query . "LIMIT 15 OFFSET 0";
    ma ricevo sempre la pagina bianca sembra non estrarre alcun dato...

    la stessa cosa accade rettificando cosi

    $query = "SELECT id, titolo, ingredienteprincipale, regione FROM DBRicette ORDER BY RAND() DESC " . $query ."LIMIT 10 OFFSET 0";

    il select va' solo cosi
    $query = "SELECT id, titolo, ingredienteprincipale, regione FROM DBRicette WHERE " . $query;
    come mai?

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    22
    inserisci a inizio pagina

    if (!isset($start) OR $start<0)
    $start=0;
    $step = 20;

    ed esegui

    $query = "SELECT id, titolo, ingredienteprincipale, regione FROM DBRicette ORDER BY RAND() DESC " . $query ."LIMIT $start, $step";

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    22
    dovrebbe farti vedere i primi 20 risultati

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.