Newsgroup: it.comp.www.php
Titolo: Discriminare tra più risultati di una select

Ciao a tutti,
scusate se sono di nuovo qui ma non ho trovato risposta da nessuna altra 
parte.
 
Ho una select inserita in un ciclo while. Il problema è che questa 
select può dare più risultati e io nell'output, giustamente, vedo sempre 
e solo il primo. Come posso fare per risolvere?
L'unica cosa che mi viene in mente è proprio cambiare la struttura della 
select ed, eventualmente, del ciclo.
 
Incollo parte del codice e del risultato:
 
 
<?php
   $device = mysql_query("SELECT idDevice, idSim, idUser, imei, tipo, 
marca, modello, serialnumber, macaddress, ssid, numpinbb FROM device;");
   while($query = mysql_fetch_array($device)) {
   $tipo = mysql_fetch_array(mysql_query("SELECT descr FROM transcode 
WHERE idtranscode=4 and cod='$query[tipo]'"));
   $user1 = mysql_fetch_array(mysql_query("SELECT username, numtel FROM 
user LEFT OUTER JOIN sim ON user.idUser = sim.idUser LEFT OUTER JOIN
device ON user.idUser = device.idUser WHERE 
device.idDevice='$query[idDevice]'"));
   echo "<tr>
          <td>{$user1['username']}</td>
          <td>{$user1['numtel']}</td>
          <td>{$query['imei']}</td>
          <td>{$tipo['descr']}</td>
          <td>{$query['marca']}</td>
          <td>{$query['modello']}</td>
          <td>{$query['serialnumber']}</td>
          <td>{$query['macaddress']}</td>
          <td>{$query['ssid']}</td>
          <td>{$query['numpinbb']}</td>
         </tr>
         ";
         }
 
 
risultato via mysql:
mysql> SELECT username, numtel FROM user LEFT OUTER JOIN sim ON 
user.idUser = sim.idUser LEFT OUTER JOIN device ON user.idUser = 
device.idUser WHERE device.idDevice=3;
+----------+------------+
| username | numtel     |
+----------+------------+
| furzi    | XXXXXX0221 |
| furzi    | XXXXXX8246 |
+----------+------------+
 
 
Spero mantenga la formattazione altrimenti ci viene fuori un bailamme
Grazie per ogni suggerimento
Rizio

 device.idDevice='$query[idDevice]'"));
 
E $user1 conterra` il primo risultato di una terza select.
 
Se vuoi tutti i risultati di questa select devi fare un altro while come 
quello sopra
 
Bye.

 quello sopra
 
Hummm... sinceramente stavo provando a lavorare sulla query cercando di 
farla su dati diversi.
A me quello che interessa è associare il numero di telefono all'utente e 
al device perciò stavo pensando di provare a dare la query in maniera 
diversa.
Non avevo pensato ad un altro ciclo while..... devo ragionarci su come 
metterlo giù perchè così su 2 piedi non saprei come farlo.
 
Intanto grazie mille del suggerimento, ci ragiono.
Rizio

 Facendo un altro ciclo while
 
Alla fine l'ho risolta ottimizzando la query con diverse JOIN e ciclando solo 
quella.
In pratica ora è così:
$device = mysql_query("SELECT user.username, sim.numtel, device.idDevice, 
device.idSim, device.idUser, device.imei, transcode.descr, device.marca, 
device.modello, device.serialnumber, device.macaddress,device.ssid, 
device.numpinbb from device LEFT JOIN sim ON device.idSim= sim.idSim LEFT JOIN 
user ON device.idUser=user.idUser LEFT JOIN transcode ON 
device.tipo=transcode.cod AND '4'=transcode.idtranscode;");
 
   while($query=mysql_fetch_array($device)) {
    echo "<tr>
          <td>{$query['username']}</td>
          <td>{$query['numtel']}</td>
          <td>{$query['imei']}</td>
          <td>{$query['descr']}</td>
          <td>{$query['marca']}</td>
          <td>{$query['modello']}</td>
          <td>{$query['serialnumber']}</td>
          <td>{$query['macaddress']}</td>
          <td>{$query['ssid']}</td>
          <td>{$query['numpinbb']}</td>
         </tr>";
    }
 
E così mi dà tutti i risultati corretti, ed è anche più veloce.
 
Ciao
Rizio