• User

    come estrarre pochi record da tabella di un database

    Ciao a tutti.

    Apro questa discussione per chiedervi come estrarre da una tabella di un database pochi record e non tutti.

    Per esempio come estrarre dal record numero 15 al record numero 30 su un totale di 100.

    Ciao.


  • User Attivo

    Ciao
    potresti inserire una colonna id ed estrarre solo le righe in un certo range, oppure in base ad altri parametri. Comunque il tutto è con una clausola WHERE


  • User

    Ciao PietroR. Mi potresti fare un esempio?

    Ti spiego: il mio scopo è quello di realizzare un grafico "Google chart" ed inizialmente inserire tutti i record presenti nella tabella. Ma nella pagina web vorrei anche inserire due caselle di testo (valore minimo e valore massimo da visualizzare) ed un pulsante in modo tale da dare la possibilità a chi visualizza il grafico di scegliere il "range" dell'asse x del grafico.

    Questo è il codice che ho scritto per visualizzare tutti i record sul grafico

    <?php$con=mysql_connect("******","*******","*********") or die("Errore di connessione con il database!!!!");
    mysql_select_db("topolino", $con);
    
    
    $sql="SELECT *, COUNT(temperatura1) AS 'count' FROM grafico GROUP BY lettura";
    $sth = mysql_query($sql) or die('Query fallita: ' . mysql_error());
     
    $rows = array();
    //flag is not needed
    $flag = true;
    $table = array();
    
    
    $table['cols'] = array(
        
        array('label' => 'Ora', 'type' => 'string'),
        array('label' => 'Temp DHT11', 'type' => 'number'),
        array('label' => 'Temp LM35', 'type' => 'number')
    );
     
    $rows = array();
    if ($sth) {
    while($r = mysql_fetch_assoc($sth)) {
        $temp = array();
    
    
        $temp[] = array('v' => (string) $r['ora']); 
     
        $temp[] = array('v' => (int) $r['temperatura1']);
        $temp[] = array('v' => (int) $r['temperatura2']);
        $rows[] = array('c' => $temp);
    }
    }
     
    $table['rows'] = $rows;
    $jsonTable = json_encode($table);
    
    
    ?>
    
    
    
    

    Secondo te come dovrei modificare il codice?


  • User Attivo

    Ciao,
    per quanto riguarda il valore minimo ed il valore massimo io lo farei con altre due query separate che estraggono i due valori.
    Per quanto riguarda il range, potresti fare un check box, se è abilitato recuperi i valori delle due caselle e li inserisci nella query.
    Ad esempio la parte della query potrebbe diventare così

    [CODE]
    $sql="";
    if($checkBoxPressed)
    {
    $sql="SELECT *, COUNT(temperatura1) AS 'count' FROM grafico WHERE campox>=$valoreMinimo AND campox<=$valoreMassimo GROUP BY lettura";
    }
    else
    {
    $sql="SELECT *, COUNT(temperatura1) AS 'count' FROM grafico GROUP BY lettura";
    }
    [/CODE

    ho usato 3 variabili:
    -$checkBoxPressed è una variabile in cui inserisci true se hai schiacciato il check o false
    -$valoreMinimo e $valoreMassimo sono i valori che userai per il range

    nella query ho chiamato il campo campox poiché non so quale è il campo di riferimento nella tua tabella.


  • User

    Ciao PietroR. Hai centrato in pieno quello che volevo fare!!!

    Ma ho preferito non inserire il checkBox, non mi sembrava indispensabile.

    Grazie mille, sei stato gentilissimo 🙂


  • User Attivo

    Figurati. Mi fa piacere che tu abbia risolto.