Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Tabella troppo lunga

  1. #1

    Tabella troppo lunga

    Ciao ragazzi,

    vorrei chiedere un'informazione che non ho trovato nei vecchi messaggi del forum.

    Ho una tabella che legge i dati dal database DB2 AS/400.

    Funziona tutto correttamente, ma essendoci molte righe inserite nella tabella del db interrogata,
    la tabella si allunga troppo e finische fuori dalla dalla pagina web.

    Cosa vorrei che si facesse?

    1) Limitare il numero di righe nella tabella

    2) Creare dei collegamenti ipertestuali (a fondo pagina) che mi rimandano alla stessa pagina (es: Pagina: 1 -2 -3 -4, .. ) e che mi permettano di leggere le righe rimanenti.



    Inserisco il codice:




    <table id="tabella_stato">
    <tr>
    <td class="intestazione_zero"></td>
    <td class="intestazione_uno">Stato</td>
    <td class="intestazione_due">Osservazioni</td>
    <td class="intestazione_tre"></td>
    </tr>

    <?php

    PRINT("
    ");

    include('Connessione/Include_connessione_server_standard.php');

    $Sql_stato_select= "SELECT * FROM ST ORDER BY ST_ID";

    $Result_stato_select =odbc_exec($conn, $Sql_stato_select);

    $Incremento = 1;

    while(odbc_fetch_row($Result_stato_select))

    {

    for($i=1; $i<=odbc_num_fields($Result_stato_select); $i++)

    Print("<tr>");

    {

    $Risultato_id[$i]= odbc_result($Result_stato_select,1);

    $Risultato_desc[$i]= odbc_result($Result_stato_select,2);

    Print("<td class=\"colonna_zero\">$Incremento</td>");

    Print("<td class=\"colonna_due\">$Risultato_desc[$i]</td>");

    $Risultato_oss[$i]= odbc_result($Result_stato_select,3);

    Print("<td class=\"colonna_tre\">$Risultato_oss[$i]</td>");

    Print("<td class=\"colonna_uno\">

    <a href=\"Stato_aggiornamento.php?id=$Risultato_id[$i]\"><img src=\"Immagini/Aggiornamento.jpg\"></a>



    <a href=\"Stato_eliminazione.php?id=$Risultato_id[$i]\"><img src=\"Immagini/Eliminazione.jpg\"></a>
    </td>");

    ++$Incremento;

    }

    Print("</tr>");

    }

    Print("</table>");

    //Scarico il risultato della query
    odbc_free_result($Result_stato_select);

    //Chiudo la connessione al db
    odbc_close($conn);




    Chi mi aiuta?

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    270
    il tuo è un problema di query sql.

    basta che alla fine nella query metti "limit".

    limit permette di estrapolare solo il numero di righe che tu vuoi

    quindi con degli esempi:

    limit 5 //estrapola le prime 5 righe
    limit 5,10 //estrapola le righe dalla 5 alla 10

  3. #3
    come ha detto, lui sta usando AS400, ergo non c'è il limit

    c'è una forma un pò più complessa che gli da la possibilità di estrarre solo le prime N righe

    Ad esempio
    FETCH FIRST 10 ROWS ONLY

    Alternativamente, anche se comunque è abbastanza pesante e non conviene più di tanto su tabelle grandi qui suggeriscono di usare le funzioni ROW_NUMBER e OVER per ottenere il numero della riga corrente cosi utilizzi una tabella pivot mettendoci dentro la query che etrae tutto più un campo con il numero della riga e poi fai una query che utilizza la pivot e mette un where sul numero della riga

    In realtà potresti utilizzare anche il fetch first xx rows only in modo da limitare il numero di righe da filtrare con la query che usa la pivot ottenendo cosi il numero di righe che devi estrarre più quelle da visualizzare e poi usi la where sul row_number

    fai qualche prova, putroppo non ti posso dare ulteriori suggerimenti, non ho tutta questa esperienza con l'sql degli as400

  4. #4
    Ti ringrazio,

    ho aggiustato la query con nel seguente modo:

    $Sql_stato_select=
    "SELECT * FROM ST WHERE ST_ID BETWEEN ".$Id_minimo." AND ".$Id_massimo." ORDER BY ST_ID ";


    In seguito tramite il passaggio dei valori con i collegamenti ipertestuali sono riusico ad ottenere il risultato richiesto.

    Grazie molto del consiglio (il sito che sto progettando vale per il mio lavoro di diploma ... quindi grazie ancora del consiglio).

    Ora funziona tutto perfettamente.

    Ciao ciao.

  5. #5
    mmm, immagino ST_ID sia l'id della riga ... ma se cancelli una riga ti sfasa la visualizzazione :\

    ti conviene di più giocare con ROW_NUMBER e le tabelle pivot

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.