Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    select impostare un limite e il next page

    Ciao,
    sto utilizzando questa select scritta in php per estrarre dei dati da un database. I dati da estrarre sono circa 1000 record e ci impiega molto tempo. La query funziona perchè con pochi dati estrae immediatamente. Come posso impostare un limite nel php ogni 50 records e visualizzare next page? quindi distribuire i records su più pagine, ogniuna costituita da 50 records?

    Codice PHP:
    <?php
    $con 
    mysql_connect("localhost","peter","abc123");
    if (!
    $con)
      {
      die(
    'Could not connect: ' mysql_error());
      }

    mysql_select_db("my_db"$con);

    $result mysql_query("SELECT * FROM Persons");

    echo 
    "<table border='1'>
    <tr>
    <th>Firstname</th>
    <th>Lastname</th>
    </tr>"
    ;

    while(
    $row mysql_fetch_array($result))
      {
      echo 
    "<tr>";
      echo 
    "<td>" $row['FirstName'] . "</td>";
      echo 
    "<td>" $row['LastName'] . "</td>";
      echo 
    "</tr>";
      }
    echo 
    "</table>";

    mysql_close($con);
    ?>
    come posso risolvere il problema?

    Grazie

  2. #2
    Semplicemente dovrai usare la clausola LIMIT e costruirla dinamicamente in base alla pagina che si vuole caricare.

    Questa problematica io di solito la affronto così:

    uso 1 parametro che contiene il numero di record da visualizzare per pagina;
    nella clausola LIMIT sai che dovrai indicare la prima cifra come il contatore del record da cui partire (base 0) , il numero di record da visualizzare (che sarà il nostro primo parametro)

    la prima cifra la costruirai così

    (numero_pagina-1)*record_per_pagina

    Codice PHP:
    <?php
    $rowPerPage 
    25;
    $pageNumber = isset($_GET['p'])?$_GET['p']:1;
    $con mysql_connect("localhost","peter","abc123");
    if (!
    $con)
      {
      die(
    'Could not connect: ' mysql_error());
      }

    mysql_select_db("my_db"$con);

    $result mysql_query("SELECT * FROM Persons LIMIT ".($pageNumber-1)*$rowPerPage.",".$rowPerPage);

    echo 
    "<table border='1'>
    <tr>
    <th>Firstname</th>
    <th>Lastname</th>
    </tr>"
    ;

    while(
    $row mysql_fetch_array($result))
      {
      echo 
    "<tr>";
      echo 
    "<td>" $row['FirstName'] . "</td>";
      echo 
    "<td>" $row['LastName'] . "</td>";
      echo 
    "</tr>";
      }
    echo 
    "</table>";
    if(
    $pageNumber>1)
      echo 
    "<a href=\"?p=".$pageNumber-1."\">&lt;</a>;

    echo "
    <a href=\"?p=".$pageNumber+1."\">&gt;</a>;

    mysql_close(
    $con);
    ?>
    Ubuntu rulez!! :P

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    148
    Ciao a tutti,
    mi riallaccio a questa discussione sperando in un aiuto..
    ho scritto questo per la paginazione dei record:
    Codice PHP:
    if (get_magic_quotes_gpc()) 

        
    $tipo stripslaches($tipo); 

    $tipo mysql_real_escape_string($tipo); 
    ////////////////|******************************************************************************************** 
    $ris_conteggio mysql_query("SELECT count(*) as tot FROM Immobili WHERE Tipo LIKE '%$tipo%'") or die( mysql_error() ); 
    $righe mysql_fetch_array$ris_conteggio ); 
    $messaggi 20
    $current_page = (!$_GET['pag']) ? : (int)$_GET['pag']; 
    $pagine ceil $righe['tot'] / $messaggi ); 
    echo 
    "Pagine: "
    for ( 
    $i 1$i <= $pagine$i++ ) { 
      if(
    $i == $current_page) { 
    $paginazione .= $i " "
    } else { 
    $paginazione .= "<a href=\"risultato.php?pagina=" $i "&Invia=true\">" $i "</a>"


    echo 
    $paginazione 
    // estraggo i record 
    if (! isset ($_GET['pag']) || (int)$_GET['pag'] < 1) { 
      
    $_GET['pag'] = 1


    if (isset (
    $_GET['pag']) && (int)$_GET['pag'] > $pagine) { 
      
    $_GET['pag'] = $pagine

    if(isset (
    $_GET['Invia']) && $_GET['Invia'] == "true") { 
    $query "SELECT Immobili.Tipo, Immobili.Comune, Immobili.Acquisto, Immobili.Prezzo, Immobili.Descrizione, Immobili.ID, Immagini.Id_Immobili, Immagini.Percorso, Immagini.Flag FROM Immobili JOIN Immagini ON Immobili.ID = Immagini.Id_Immobili  WHERE Immobili.Tipo LIKE '%$tipo%' LIMIT " . ( ( (int)$_GET['pag'] - ) * $messaggi ) . "," $messaggi
    $risultato mysql_query($query); 
    // qui il codice che stampa i messaggi 

    if(mysql_num_rows($ris_conteggio) == 0) { 
    echo (
    "<div id=\"contenutorecord\">Non ci sono immobili al momento per questa sezione.</div>"); 
    }else{ 
    while (
    $ris_array mysql_fetch_assoc($risultato)) { 
        echo 
    "<div id=\"contenutorecord\">"
        if (
    $ris_array['Flag'] == 1) { 
            echo 
    "<div id=\"sfondoimgsmall\"><img src=\"" $ris_array['Percorso'] . "\" height=\"99\" width=\"150\" /></div>"
        } else { 
            echo 
    "<div id=\"sfondoimgsmall\"><img src=\"../Img/scheda-casa.jpg\" height=\"99\" width=\"150\" /></div>"
        } 
        echo 
    "<div id=\"contenutoimmobile\">"
        
    $Acquisto strtoupper($ris_array['Acquisto']); 
        
    $Tipo strtoupper($ris_array['Tipo']); 
        
    $Comune strtoupper($ris_array['Comune']); 
        
    $Descrizione tagliastringa($ris_array['Descrizione'],150); 
        
    $Prezzo "€ " $ris_array['Prezzo']; 
        echo 
    "<h2>" $Acquisto " - " $Tipo " - " $Comune "   -   " $Prezzo "</h2>"
        echo 
    "

    $Descrizione "</p></div></div>"




    solo che ora non mi visualizza più i record...
    Prima della scrittura del codice per la paginazione funzionava bene.
    Ora mi visualizza quante pagine crea, ma non mi visualizza più i record!
    Chiedo gentilmente un aiuto...non so più come andare avanti!
    Grazie

  4. #4
    $tipo = stripslaches($tipo);

    cambialo in

    $tipo = stripslashes($tipo);

    avevi sbagliato il nome della funzione.....poi non so....il resto del codice non l'ho guardato ma a prima vista è molto confuso...
    V.I.S.T.A. --> Virus Inside, Switch To Apple

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    148
    Ti ringrazio, era un errore che mi portavo dietro da un po'....
    ma purtroppo non è quello che non mi fa visualizzare i record.
    Grazie comunque

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