Ancora problemi con while in...while.

Come avevo già detto in una mia precedente discussione ho problemi a gestire

cicli dentro altri cicli (ammesso che la soluzione qui di seguito sia valida almeno teoricamente). Non vogliono

proprio entrami in testa :P ::) ::) ::) >:(

Stampo dati in una pagina ,ordinati in righe e colonne di una tabella, che richiamo dal db.

Nella prima metà di questa tabella richiamo alcuni dati dell'utente che sono inseriti in una tabella mysql;

Nella seconda metà richiamo altri dati sempre relativi all'utente stesso ma che sono memorizzati in un'altra tabella mysql e quindi faccio un bel JOIN per metterli in relazione così:

.......


$query = "SELECT * FROM utentidb ORDER BY username";
$esegui = mysql_query($query);
echo "<center><h2>Modifica dati utenti</h2></center>";
echo"<p><TABLE border=1 cellspacing=\"0\" cellpadding=\"3\">
   <TR>
      <TD>
          <b>Username<b/>
      </TD>
      <TD align=center>
         <b>Email</b>
      </TD>
      <TD align=center>
         <b>Nota</b>
      </TD>
      <TD align=center>
         <b>Testo stampato</b>
      </TD>
      <TD align=center>
         <b>Data inserimento</b>
      </TD>

      <TD align=center>
         <b>ID testo</b>
      </TD>
       <TD align=center>
         <b>Modifica</b>
      </TD></TR>";
while ($result = mysql_fetch_array($esegui)) {
$utente=$result["id_user"];

$querycust = mysql_query("SELECT * FROM firme JOIN utentidb ON firme.id_utente=utentidb.id_user
WHERE utentidb.id_user = $utente");

while($rowcust = mysql_fetch_array($querycust) )
{
   $testo = $rowcust["scritta"];
   $data  = $rowcust["data"];
  }

echo "<TR>
      <TD>
         $result[username]
      </TD>
      <TD>&nbsp;
         $result[email]
      </TD>
      <TD>&nbsp;
         $result[nota]
      </TD>     
      <TD>&nbsp;$testo</TD>
      <TD>&nbsp;$data</TD>
      <TD align=center>&nbsp;
         
      </TD>
      <TD align=center>
          <FORM action=\"insmodati.php\" method=post>
          <input type=\"hidden\" name=\"task\" value=\"mod1\">
          <INPUT TYPE=\"RADIO\"  name=\"modifica_id\" value=\"$result[id_user]\">
      </TD></TR>";
 }


.......

Questa è una delle mie "soluzioni" sbagliate ovviamente.

Il problema è che i dati non sono riportati correttamente.

Gli utenti possono essere diciamo 5 (e vengono riportati senza problema)

ma gli altri dati ($testo e $data richiamati da un'altra tabella del db) non è detto che corrispondano.

Ci possono essere 5 utenti e solo 3 di loro possono aver lasciato un commento per esempio.

Vengono stampati invece i dati dei 5 utenti regolarmente (quelli relativi alla prima parte della tabella)

ma i 3 commenti vengono ripetuti anche per gli altri utenti invece che riportare uno spazio bianco nella tabella html dove non ci dovrebbe essere nessun dato.

Non so se sono stato chiaro (magari posto i risultati) ma penso che un occhio esperto possa capire dal codice cosa c'è che non va.

Grazie

inviato 8 anni fa
frankphp
X 0 X

L'unica query da eseguire è questa:

SELECT * FROM utentidb LEFT JOIN firme ON utentidb.id_user = firme.id_utente WHERE utentidb.id_user = $utente

Il LEFT JOIN serve a prendere anche gli utenti senza firme, se invece non li vuoi basta togliere il LEFT

Otterrai tanti record quante sono le firme. Ciascun record oltre alla particolare firma conterra anche tutti i dati dell'utente relativo, quindi se un utente ha più firme otterrai dei record con firme distinte ma stessi dati per l'utente.

Per questa ragione, durante il ciclo while, potresti avere la necessità di fare un controllo per vedere se il record che stai estraendo appartiene all'utente del record precedente oppure si riferisce ad un utente diverso. Per fare ciò ti basta memorizzare in una variabile il nome utente ad ogni iterazione e confrontarlo con il nome utente del record corrente.

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

Stai dicendo che $querycust è inutile?

Non so se ho capito bene tutto il discorso..mi metto a fare delle prove, se ci sono problemi so dove trovarti ;D

Un altro problema.

Non riesco a stampare la data che è inserita nel db nel formato date.

Come si fa?

Grazie ancora

risposto 8 anni fa
frankphp
X 0 X

Un altro problema.

Non riesco a stampare la data che è inserita nel db nel formato date.

Come si fa?

Si apre un'altro topic :offtopic:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

Un altro problema.

Non riesco a stampare la data che è inserita nel db nel formato date.

Come si fa?

Si apre un'altro topic :offtopic:

OPPSS scusami Gianni

Volevo solo informarti che la tua soluzione va bene. Grazie.

Ho ancora problemi con la data però.

ps: ci sarebbe veramente anche un altro problema relativo allo stesso progetto e.......non preoccuparti apro un altro topic  :P :P :P ;D ;D ;D ;D

risposto 8 anni fa
frankphp
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda