Newsgroup: it.comp.www.php
Titolo: SELECT che va e non va

 
Ciao a tutti,
ho questo script:
require ('connect.php');
$sql="SELECT * FROM utenti WHERE name='Antonio'";
$risultati_mysql=mysql_query($sql,$connessione);
$num_righe=mysql_num_rows($risultati_mysql);
if ($num_righe == 0)
{
echo "";
}
else
{
while ($riga=mysql_fetch_array($risultati_mysql))
{
$id=$riga["id"];
$name=$riga["name"];
$surname=$riga["surname"];
echo "$name $surname";
}
}
require ('connect.php');
 $query_hours = "SELECT sec_to_time(sum(time_to_sec(ore_acc + t_ore + ))) AS 
somma FROM utenti WHERE surname='Antonio' ";
      $result_hours = mysql_query($query_hours);
      if (mysql_numrows($result_hours) > 0)
   $to = mysql_result($result_hours,0,"somma");
   echo "$to";
il primo select funziona, infatti mi viene visualizzato il nome, il secondo 
non funziona e solo con due utenti, con tutti gli altri funziona benissimo 
anche il secondo che fa la somma.
Cosa può essere?
Grazie
ciao

 anche il secondo che fa la somma.
Innanzitutto un consiglio: indenta il codice, cosi renderai la vita piu 
facile per tutti, te per primo.
Adesso un paio di domande:
1) perché fai due require di connect.php? se quel file si occupa 
solamente di connettersi al database basta una chiamata all'inizio, 
infatti il collegamento non viene interotto con una query.
2) La seconda select quando non funziona ti restituisce qualche errore 
con mysql_error? hai provato ad eseguire la query con phpmyadmin per 
esempio? in che cosa si differenziano le due righe che non producono i 
risultati dalle altre righe?

 dalle altre righe?
Ho provato,ma niente errori, non visualizza niente, pagina bianca.
Apparentemente le righe del db sono uguali, cambiano solo i valori numerici 
e altri dati. 

 numerici e altri dati.
ho notato che nel primo la condizione in WHERE e' relativa al campo 'name' e
nella seconda query a 'surname', sicuro che corrisponda a quello che vuoi
fare?..
-- 
www.iuz-lab.info


Si, non cambia niente, nello script che ho riportato qui ho inserito surname 
='Antonio', per errore mio, però anche se imposto name  non cambia 

    echo "$to";
conoco poco mysql (direi niente) cmq questo comportamento e classico 
quando c'e' qualche *null* in giro
--
a.cara

 quando c'e' qualche *null* in giro
...o qualche spazio di troppo
--
a.cara

 somma FROM utenti WHERE surname='Antonio' ";
il secondo + è normale?
Ciao

 ha scritto nel messaggio 
news:X%tye.2220$b93...@tornado.fastwebnet.it...

Non c'è nessuno spazio strano o comunque di troppo e neppure nessun null 

somma FROM utenti WHERE surname='Antonio' ";
La variabile Antonio come arriva alla query? La scrivi tu nel codice o
arriva tramite form? 
-- 
Per rispondermi togli il cappello

 arriva tramite form?
 E' presente nel db 

 $result_hours = mysql_query($query_hours);
non manca un pezzo?
Ciao Gianfranzo



Si, ma come ci arriva là dentro? Cioè, il "FROM utenti WHERE
surname='Antonio'"  chi lo scrive proprio così? Con Antonio intendo.


 surname='Antonio'"  chi lo scrive proprio così? Con Antonio intendo.
Arriva tramite form. Ma anche altri arrivano tramite form e funzionano 
benissimo. A me qui non funziona solo il conteggio delle ore, il select 
invece mi trova il nome. 

 non manca un pezzo?
E perchè allora per altri utenti funziona benissimo? 

Marco ha scritto:

credo lui si riferisse al fatto che nella seconda query non è 
specificato l'id della connessione.
Ma dalle mie letture del manuale, mi pare di ricordare che quando c'è 
già una connessione attiva e non ci sono rischi di equivoci, è possibile 
anche omettere il parametro $id_conn, in quanto php si occuperà 
automaticamente di individuare la connessione aperta e di utilizzarla 
per interrogare il database.
sbaglio io, o è così?
Ad ogni modo, meglio sempre essere rigorosi (questo è giusto un 
consiglio su come scrivere il codice, non su come risolvere il tuo 
problema) e avere sempre una certa coerenza nello scrivere (=> specifica 
sempre l'id di connessione :D ).
Ciao

 
Ho notato che il problema è la somma, cioè se io metto:
$query_hours = "SELECT sec_to_time(sum(time_to_sec(t_ore))) AS somma FROM
.....
da solo, il valore me lo riporta,
se metto:
$query_hours = "SELECT sec_to_time(sum(time_to_sec(t_ore + time))) AS somma
FROM
Allora non fa la somma 

Marco ha scritto:

e se fai
"SELECT sec_to_time(SUM(time_to_sec(t_ore))+SUM(time_to_sec(time))) AS 
somma...."
come va? funziona?

 come va? funziona?
Funziona tutto, risolto
Grazie 

Marco ha scritto:

come ti ho detto io?

 come ti ho detto io?
si 

Marco ha scritto:

grande! sono contento :D
Ciao