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

    Sistemare risultati di query in tabelle con PHP

    Salve a tutti,
    io sto scrivendo pagine in php che si collegano ad un db oracle.
    Ho fatto una query di prova e ho fatto visualizzare i risultati in una tabella, utilizzando il seguente codice:

    <html>
    <body>
    <h1>Prima Query</h1>
    <?php
    $c=oci_connect("xxx", "xxx", "xxx");
    if($c) {
    $query=null;
    $query=oci_parse($c,"select * from cons_esami_assegnare");
    oci_execute($query);
    echo "<table border=1 width='100%'>\n<tr><font color='#6666CC'>";
    echo "<tr><font color='#6666CC'><td align='center'>Laboratorio</td><td align='center'>Richiesta</td><td align='center'>Esame</td><td align='center'>Campioni</td><td align='center'>Data Accettazione</td><td align='center'>Giorni Passati Accettazione</td><td align='center'>Giorni Carta Servizi</td></font></tr>\n";
    echo "<tr><font color='#6666CC'>";
    while (($riga=oci_fetch_array($query, OCI_ASSOC+OCI_RETURN_NULLS))){
    foreach ($riga as $item){
    echo " <td align='center'>". ($item !== null ? htmlentities($item, ENT_QUOTES) :""). "</td>\n";
    }
    echo "</font></tr>\n";
    }
    echo "</font></tr></table>\n";
    oci_free_statement($query);
    oci_close($c);
    } else {
    $err = oci_error();
    echo "Oracle Connect Error " . $err[text];
    }
    ?>
    </body>
    </html>

    Il problema adesso è che nella tabella compaiono tanti risultati più di 118 quindi diventa difficoltoso leggere la tabella.
    Io vorrei mettere un tot di righe in questa tabella, in questa pagina e le altre in un'altra tabella in un'altra pagina.
    Sapete dirmi come posso fare???
    Help
    Grazie mille a chiunque mi saprà essere di aiuto.

  2. #2
    purtroppo oracle non ha una funzione tipo mysql con il limit o come sqlserver con il top.
    Devi contare prima i risultati e poi crearti un'impaginazione a seconda del numero dei risultati e dei
    records da visualizzare a schermo.

    Meglio fare delle store procedure apposta che chiami ogni volta per il conteggio

  3. #3
    Grazie mille....
    pensi che utilizzando oci_num_rows() possa riuscire a contare i record che restituisce la query?
    E soprattutto cosa devo mettere tra parentesi in questa funzione?

  4. #4
    si, ti restituisce le righe però php le conterebbe tutte e quindi perderesti molto tempo.
    meglio far fare ad oracle quello che sa fare meglio.

    quindi fai un semplice

    SELECT COUNT(*) FROM XXXX

    con tutti i relativi where ecc che ti servono , così da ottenere il numero di righe che ti restituirà la select che effettui immediatamente dopo.

  5. #5
    Ho fatto come mi hai detto...ho inserito una nuova query:

    $queryprima=oci_parse($c,"select count(*) from cons_esami_assegnare");
    $ris=oci_execute($queryprima);

    e poi ho fatto visualizzare il risultato

    echo "<h1>".$ris."</h1>\n";

    per vedere se funziona ma mi restituisce il valore 1 quando poi sulla tabella mi mette 118 record.
    Non capisco veramente perchè

  6. #6
    ciao, dopo che esegui la query devi comunque effettuare

    $riga=oci_fetch_array

    come fai con la stampa della tabella per prendere il valore del count.

  7. #7
    Ci sono riuscita...ho contato le righe, mi visualizza il numero ed è quello giusto...ma adesso come faccio a dirgli visualizza fino alla riga tot???

  8. #8
    fai un ciclo for

    $totrighe = XXX;

    $riga_di_partenza = 0;
    $righe_per_pagina = 10;

    for($i = 0; $i < $totrighe; $i++)
    {
    //qui metti il codice per visualizzare le righe interessate
    if($i > ($riga_di_partenza + $righe_per_pagina)) continue;

    ecc

    }

    Se posso comunque darti un consiglio, utilizza un'istanza di mysql per effettuare queste operazioni perché è molto più semplice, ossia, tutti i risultati li metti in una tabella temporanea di mysql dove puoi fare le interrogazioni con le clausole "limit $record_di_partenza, $risultati" vedrai che sarà la soluzione giusta. Diversamente con oracle ti conviene affrontare delle strade diverse, tipo inserire le ricerche già intabellate in delle viste o con delle routines già fatte tramite il database stesso.

  9. #9
    CIAO....io provo e riprovo ma proprio non c'è verso...ho provato ad inserire il ciclo for come mi hai suggerito ma non funziona, mi restituisce una sola riga.
    Non so veramente dove sbattere la testa....mi suggerivi anche: "con oracle ti conviene affrontare delle strade diverse, tipo inserire le ricerche già intabellate in delle viste o con delle routines già fatte tramite il database stesso." ma non riesco a capire cosa vuoi dire...
    Cmq non posso intervenire sulle tabelle del db.
    Ti spiego meglio...io devo creare un "sito" al quale possano accedere dei "medici" e controllare lo stato degli esami che devono fare (più o meno è così). Quindi il medico X accede e vede solo i suoi esami...ne può avere 100 o anche 0, però nel caso in cui ne ha 100, dovrebbe poterli vedere in pagine diverse in modo che siano più leggibili!!
    Ti prego help me!!!!

  10. #10
    Scusa ma io credevo che conoscessi bene oracle...mmm allora le cose si complicano se devi farlo da sola...

    Quello che ti consiglio io è di usare innanzi tutto un framework tipo Codeigniter per lo sviluppo, questo infatti ha delle
    librerie per il collegamento a molteplici database tra i quali oracle..

    Questo è un link che ti spiega come configurarlo.
    http://web.archive.org/web/200804211...d-codeigniter/

    Codeigniter ha una semplice libreria che ti permette di gestire le impaginazioni in modo da metterti da solo
    pagina 1 - 2 - 3 ecc.

    Diversamente se vuoi fare da sola prova una cosa del genere ovviamente modificandola in base alle tue esigenze:

    codice:
    <html>
        <head>
            <title>PAGING</title>
        </head>
        <body>
            <?
            session_start();
            $session_check = $orcl->oracle_select("SESSION_ID", "*");
            $Per_Page = 10; // Per Page
            $Num_Rows = $orcl->numberrows;
            if (!isset($_GET["Page"])) {
                $Page = 1;
            } else {
                $Page = $_GET["Page"];
            }
            $Prev_Page = $Page - 1;
            $Next_Page = $Page + 1;
            $Page_Start = ( ( $Per_Page * $Page ) - $Per_Page );
            if ($Num_Rows <= $Per_Page) {
                $Num_Pages = 1;
            } else if (( $Num_Rows % $Per_Page ) == 0) {
                $Num_Pages = ( $Num_Rows / $Per_Page );
            } else {
                $Num_Pages = ( $Num_Rows / $Per_Page ) + 1;
                $Num_Pages = (int) $Num_Pages;
            }
            $Page_End = $Per_Page * $Page;
            if ($Page_End > $Num_Rows) {
                $Page_End = $Num_Rows;
            }
            ?>
            <table width="800" border="1" cellpadding="0" cellspacing="0" style="">
                <tr>
                    <th width="400" align="center">CUSTOMER</th>
                    <th width="400" align="center">Name</th>
                </tr>
            <?
            for ($i = $Page_Start; $i < $Page_End; $i++) {
                ?>
                    <tr>
                        <td width="400" align="center">
                            <?= $session_check["ID"][$i]; ?>
                        </td>
                        <td width="400" align="center"><?= $session_check["USER_ID"][$i]; ?></td>
                    </tr>
                    <?
                }
                ?>
            </table>
            <table width="800" border="0" cellpadding="0" cellspacing="0" style="">
                <tr>
                    <td align="center"> </td>
                </tr>
                <tr>
                    <td align="center">Total <?= $Num_Rows; ?> Record : <?= $Num_Pages; ?> Page :</td>
                </tr>
                <tr>
                    <td align="center">
                        <?
                        if ($Prev_Page) {
                            echo " << Back ";
                        }
    
                        for ($i = 1; $i <= $Num_Pages; $i++) {
                            if ($i != $Page) {
                                echo "[ $i ]";
                            } else {
                                echo " $i ";
                            }
                        }
                        if ($Page != $Num_Pages) {
                            echo " <a href ='$_SERVER[SCRIPT_NAME]?Page=$Next_Page'>Next>></a> ";
                        }
                        ?>
                    </td>
                </tr>
                <tr>
                    <td align="center"> </td>
                </tr>
            </table>
        </body>
    </html>
    Vi aspetto sul mio sito
    creato per tutti coloro che necessitano di aiuto, scripts ecc.
    http://www.dbpersister.com
    http://principeorazio.wordpress.com/

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.