Back to top

Autore Topic: RISOLTO:aiuto per query  (Letto 12961 volte)

Offline opsosa

  • Appassionato
  • ***
  • Post: 475
  • Sesso: Maschio
  • operatore socio sanitario oss
    • Mostra profilo
RISOLTO:aiuto per query
« il: 07 Dic 2013, 19:22:21 »
ciao, chiedo il vostro prezioso aiuto per riuscire ad estrarre dei dati dal mio database.
vorrei estrarre il valore massimo registrato indicando anche la data ed ora in cui è stato registrato.

la tabella ha i campi dataora valore1 a me interessa che restituisca il valore1 massimo ed a fianco la dataora
« Ultima modifica: 14 Dic 2013, 15:37:07 da opsosa »

Offline opsosa

  • Appassionato
  • ***
  • Post: 475
  • Sesso: Maschio
  • operatore socio sanitario oss
    • Mostra profilo
Re:aiuto per query
« Risposta #1 il: 08 Dic 2013, 13:50:26 »
attualmente sono riuscito con questa query:
Codice: [Seleziona]
SELECT TEMP, TIMESTAMP_LOCAL FROM METEO WHERE TIMESTAMP_LOCAL >= '2013-12-08 00:00:00' AND TIMESTAMP_LOCAL <= '2013-12-08 23:59:59' ORDER BY TEMP  DESC limit 1[code]

il problema è che vorrei cercasse da solo la data corrente...qualche suggerimento?

mau_develop

  • Visitatore
Re:aiuto per query
« Risposta #2 il: 08 Dic 2013, 20:12:58 »
https://www.google.it/search?q=mysql+data+corrente

banale no? anche mysql ha funzioni

Offline opsosa

  • Appassionato
  • ***
  • Post: 475
  • Sesso: Maschio
  • operatore socio sanitario oss
    • Mostra profilo
Re:aiuto per query
« Risposta #3 il: 09 Dic 2013, 07:26:06 »
SELECT HUM, TIMESTAMP_LOCAL FROM METEO WHERE `TIMESTAMP_LOCAL` >= CURDATE()  ORDER BY HUM  DESC limit 1


al momento sono arrivato a questa soluzione...

il risultato sembra giusto, ora vorrei che invece di mettere la data e l'ora mi visualizzasse solo l'ora

Offline davidepc

  • Esploratore
  • **
  • Post: 144
    • Mostra profilo
Re:aiuto per query
« Risposta #4 il: 09 Dic 2013, 11:11:43 »
Davide Granata
Web developer PHP
www.davidepc.com

Offline opsosa

  • Appassionato
  • ***
  • Post: 475
  • Sesso: Maschio
  • operatore socio sanitario oss
    • Mostra profilo
Re:aiuto per query
« Risposta #5 il: 09 Dic 2013, 14:29:33 »
SELECT TEMP, DATE_FORMAT(TIMESTAMP_LOCAL, '%H:%i') FROM METEO WHERE `TIMESTAMP_LOCAL` >= CURDATE()  ORDER BY  TEMP  ASC limit 1


ho fatto cosi e sembra andare che ne dici?

Offline opsosa

  • Appassionato
  • ***
  • Post: 475
  • Sesso: Maschio
  • operatore socio sanitario oss
    • Mostra profilo
Re:aiuto per query
« Risposta #6 il: 10 Dic 2013, 12:51:18 »
ora ho un problema,,,vorrei che i dati che ho recuperato con le query, venissero riportate in una tabellina
avete altri suggerimenti?

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:aiuto per query
« Risposta #7 il: 11 Dic 2013, 18:25:28 »
ciao, scusa ma non ho capito che fa quella query  :o

sicuramente è uno dei modi più fantasiosi mai visti per evitare una funzione di aggregazione  ;D ;D

Codice: [Seleziona]
SELECT MAX(`TEMP`) AS `MAXTEMP`, TIME(`TIMESTAMP_LOCAL`) AS `LOCALTIME`
FROM `METEO`
WHERE DATE(`TIMESTAMP_LOCAL`) = CURDATE()
GROUP BY DATE(`TIMESTAMP_LOCAL`)

l'ultima riga in mysql è facoltativa... mah!

MAXTEMP e LOCALTIME  contengono i valori cercati.

parte 2
come li recuperi? in php?
dove sono? nel DB di joomla?
dove li vuoi stampare? in un modulo?

ciao,
marco
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline opsosa

  • Appassionato
  • ***
  • Post: 475
  • Sesso: Maschio
  • operatore socio sanitario oss
    • Mostra profilo
Re:aiuto per query
« Risposta #8 il: 11 Dic 2013, 19:08:14 »
allora si devo recuperarli in php.
il database non è quello di joomla
e li vorrei visualizzare in un modulo joomla
io attualmente faccio le prove con il modulo wrapper collegandolo al file php..

ora il problema è che
dovrei vedere una roba del genere
tabella db di esempio:
nome tabella :DATI
campi tabella DATI: datetime, valore1, valore2, valore3

quello che vorrei ottenere è una tabella del genere:

_____________MINIMO________ORA DEL GIORNO____
valore1       |                           |                                         |
_______________________________________ _______
valore2       |                           |                                          |
_______________________________________ _______
valore3       |                           |                                          |
_______________________________________ _______



Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:aiuto per query
« Risposta #9 il: 12 Dic 2013, 21:49:28 »
tanto per orientarci, vuoi sviluppare un modulo per joomla o vuoi usare continuare ad usare il modulo wrapper?

nel wrapper immagino tu abbia già il codice di collegamento al db e di esecuzione della query; ora, sai come recuperare il recorset (i dati recuperati) o devi ancora capirlo?

ciao
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline opsosa

  • Appassionato
  • ***
  • Post: 475
  • Sesso: Maschio
  • operatore socio sanitario oss
    • Mostra profilo
Re:aiuto per query
« Risposta #10 il: 12 Dic 2013, 22:00:29 »
Mi sembra più comodo richiamare il file usando il modulo wrapper,
ho fatto qualcosa ma molto macchinoso

Codice: [Seleziona]
<html>
 <body>
<?php

$myconn 
mysql_connect('''''') or die('Errore...');

mysql_select_db(''$myconn) or die('Errore...');


$query="SELECT valore1, DATE_FORMAT(dataora, '%H:%i')  FROM DATI WHERE `dataora` >= CURDATE()  ORDER BY valore1  ASC limit 1";

$result mysql_query($query$myconn) or die('Errore...');
 

$numrows mysql_num_rows($result);


if (
$numrows==0){
  echo 
"Database vuoto!";
}

else
{
  
  for(
$x=0$x<$numrows$x++){
    
    
$resrow mysql_fetch_row($result);
    
$valore1$resrow[0];
    
$dataora $resrow[1];

    
  }
}
?>

<table border="1" cellspacing="8" cellpadding="6">


 <tr>

 <th><font face="Arial, Helvetica, sans-serif">VALORE MAX</font></th>
 <th><font face="Arial, Helvetica, sans-serif">ORA</font></th>
 </tr>
 
  <tr>
     <td><font face="Arial, Helvetica, sans-serif"><?php echo $valore1;?> %</font></td>
     <td><font face="Arial, Helvetica, sans-serif"><?php echo $dataora;?></font></td>

  </tr>


 </body>
</html>

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:aiuto per query
« Risposta #11 il: 12 Dic 2013, 22:32:54 »
ti suggerisco due varianti

questa è meno specifica ma più chiara ed espandibile
Codice: [Seleziona]
<html>
<body>
<?php

$myconn 
mysql_connect('''''') or die('Errore...');
mysql_select_db(''$myconn) or die('Errore...');
$query="
SELECT MAX(`TEMP`) AS `MAXTEMP`, TIME(`TIMESTAMP_LOCAL`) AS `LOCALTIME` 
FROM `METEO` 
WHERE DATE(`TIMESTAMP_LOCAL`) = CURDATE()
GROUP BY DATE(`TIMESTAMP_LOCAL`)
"
;

$result mysql_query($query$myconn) or die('Errore...');
$numrows mysql_num_rows($result);

if (!
$numrows){
  echo 
"Database vuoto!";
}

?>

<table>
<tr>
    <th>VALORE MAX</th>
    <th>ORA</th>
</tr>
<?php  while ($r mysql_fetch_assoc($result)) : ?>
<tr>
    <td><?php echo $r['MAXTEMP'];?> %</td>
    <td><?php echo $r['LOCALTIME'];?></td>
</tr>
<?php endwhile; ?>
<table>
</body>
</html>

questa è più specifica, ma meno chiara da espandere
Codice: [Seleziona]
<html>
<body>
<?php

$myconn 
mysql_connect('''''') or die('Errore...');
mysql_select_db(''$myconn) or die('Errore...');
$query="
SELECT MAX(`TEMP`) AS `MAXTEMP`, TIME(`TIMESTAMP_LOCAL`) AS `LOCALTIME` 
FROM `METEO` 
WHERE DATE(`TIMESTAMP_LOCAL`) = CURDATE()
GROUP BY DATE(`TIMESTAMP_LOCAL`)
"
;

$result mysql_query($query$myconn) or die('Errore...');
$numrows mysql_num_rows($result);
?>


<table>
<tr>
    <th>VALORE MAX</th>
    <th>ORA</th>
</tr>
<?php if (!$numrows): ?>
<tr>
    <td colspan="2">Database vuoto!</td>
</tr> 
<?php else ?>
<tr>
    <?php list($temp$time) = mysql_fetch_row($result); ?>
    <td><?php echo $temp;?> %</td>
    <td><?php echo $time;?></td>
</tr>
<?php endif; ?>
<table>
</body>
</html>

nota che in ambo i casi ho scritto senza verificare, quindi magari qualche errorino mi può essere scappato  ::)

ciao

mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline opsosa

  • Appassionato
  • ***
  • Post: 475
  • Sesso: Maschio
  • operatore socio sanitario oss
    • Mostra profilo
Re:aiuto per query
« Risposta #12 il: 13 Dic 2013, 00:21:42 »
ok domani le provo, ma mi sembra che comunque che sia come avevo fatto io, il mio problema è riportare nella stessa tabella i risultati di query diverse fatte ...non so se mi sono spiegato bene...
grazie per l'aiuto...

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:aiuto per query
« Risposta #13 il: 13 Dic 2013, 14:37:30 »
ma mi sembra che comunque che sia come avevo fatto io

senza offesa, ma mica tanto.


il mio problema è riportare nella stessa tabella i risultati di query diverse fatte

ripeti le queries in serie recuperando il risultato di ciascuna prima di effettuare la successiva, od usando diversi nomi per l'handler del recordset (= il valore restituito da mysql_query).
il secondo esempio dovrebbe essere quello che calza meglio.



mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline opsosa

  • Appassionato
  • ***
  • Post: 475
  • Sesso: Maschio
  • operatore socio sanitario oss
    • Mostra profilo
Re:aiuto per query
« Risposta #14 il: 13 Dic 2013, 17:03:06 »
spe fammi capire per metterlein serie io ricopio da:
$query=".............


if (!$numrows){
  echo "Database vuoto!";
}

fino a qui? cioè prima della tabella?
e poi mi basta cambiare il nome qui? $result 
cambiandolo per ogni query?
ma poi nella tabella come faccio?
 io ho ore diverse per ogni valore della query...

comunque farò dei tentativi in serata e ti faccio sapere ciao

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:aiuto per query
« Risposta #15 il: 13 Dic 2013, 17:13:50 »
Codice: [Seleziona]
<html>
<body>
<?php
$myconn 
mysql_connect('''''') or die('Errore...');
mysql_select_db(''$myconn) or die('Errore...');
?>


<table>
<tr>
    <th>VALORE MAX</th>
    <th>ORA</th>
</tr>
<!--- ripeti da qui (copia e incolla)--->
<?php 
$query
="SELECT 1 AS `C1`, NOW() AS `C2`";
$result mysql_query($query$myconn) or die('Errore...');
if (!
mysql_num_rows($result)): 
?>

<tr>
    <td colspan="2">Non pervenuto!</td>
</tr> 
<?php else: ?>
<tr>
    <?php 
    
list($value$time) = mysql_fetch_row($result); 
    
?>

    <td><?php echo $value;?> %</td>
    <td><?php echo $time;?></td>
</tr>
<?php endif; ?>
<!--- fino a qui --->
<table>
</body>
</html>

copia ed incolla cambiando solo il codice della query...
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline opsosa

  • Appassionato
  • ***
  • Post: 475
  • Sesso: Maschio
  • operatore socio sanitario oss
    • Mostra profilo
Re:aiuto per query
« Risposta #16 il: 13 Dic 2013, 18:08:05 »
ahhhh spe che sei troppo avanti per me...
mi fai capire cosa hai fatto, altrimenti copio ma non capisco a che serve,,

ho copiato tutto quello che hai messo nel codice e messo la query
ora il risultato è questo:


VALORE MAXORA
9 %00:02:01


Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:aiuto per query
« Risposta #17 il: 13 Dic 2013, 19:02:40 »
allora, il codice è diviso in tre parti

la prima, fino a <!--- ripeti da qui (copia e incolla)--->,  contiene l'inizializzazione del codice e l'apertura della tabella. la connessione al server db e la selezione del db debbono essere fatte una volta sola, così come basta una sola tabella. pertanto creiamo la tabella e stampiamo la riga di intestazione. a proposito della tabella: non è che manca la colonna con la tipologia del valore stampato?

la seconda da <!--- ripeti da qui (copia e incolla)---> a <!--- fino a qui --->, recupera i dati dal db e li stampa in una riga. devi copiare questa parte di codice tante volte quante sono le queries che vuoi eseguire, cambiando solo il codice sql. è però necessario che ciascuna query restituisca sempre e solo due valori e nel preciso ordine parametro meteo, tempo.

Codice: [Seleziona]
list($value, $time) = mysql_fetch_row($result);
list() prende i due valori selezionati dalla query e contenuti nell'array restituito da mysql_fetch_row() e li salva nelle due variabili $value, $time, nell'ordine in cui sono; ed ecco perchè è importante l'ordine dei valori nella query.

la terza parte da <!--- fino a qui ---> alla fine, beh, dai questo è banale  ;)
poi, a voler proprio essere pignoli, un
Codice: [Seleziona]
<?php mysql_close($myconn);  ?>subito dopo la citata demarcazione non ci starebbe neanche malissimo...

ora, manuale php e mysql a portata di mano e buon divertimento!

ciao,
marco


mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline opsosa

  • Appassionato
  • ***
  • Post: 475
  • Sesso: Maschio
  • operatore socio sanitario oss
    • Mostra profilo
Re:aiuto per query
« Risposta #18 il: 13 Dic 2013, 19:43:14 »
ok grazie per la spiegazione molto chiara.
ho provato con la tua query ma mi restituisce sempre la stessa ora..mentre con quelle che usavo prima funziona correttamente...
comunque mo sistemo la tabela e ci siamo...

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:aiuto per query
« Risposta #19 il: 14 Dic 2013, 09:21:36 »
mentre con quelle che usavo prima funziona correttamente...

se funziona usala  ;D ;D

ciao,
marco
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline opsosa

  • Appassionato
  • ***
  • Post: 475
  • Sesso: Maschio
  • operatore socio sanitario oss
    • Mostra profilo
Re:aiuto per query
« Risposta #20 il: 14 Dic 2013, 09:37:00 »
si
ult'imissima cosa...se un valore viene riportato cosi: 1015,3435436786 ed io volessi visualizzarlo cosi:1015,3 come devo fare ? agire sempre sulla query?

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:aiuto per query
« Risposta #21 il: 14 Dic 2013, 12:11:30 »
secondo me è sbagliato usare le funzioni di formattazione del sql, a meno che non debba essere il sql a gestire l'output formattato; in tutti gli altri casi conviene lasciare che sia restituito il tipo specifico del dato, anziché una stringa, che poi sarà formattato come meglio si ritiene:

Codice: [Seleziona]
<?php printf("%01.1f"$value); ?>

analogo discorso si applica alle date....

mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline opsosa

  • Appassionato
  • ***
  • Post: 475
  • Sesso: Maschio
  • operatore socio sanitario oss
    • Mostra profilo
Re:aiuto per query
« Risposta #22 il: 14 Dic 2013, 15:36:35 »
grazie mille sei stato di un aiuto incredibile...intanto metto risolto.


 



Web Design Bolzano Kreatif