PDA

View Full Version : [PHP - MySQL] Query a tabelle con relazione N:N


Ludo237
11-01-2011, 16:06
Ciao ragazzi
sto creando un Babbbo_db ( database stupido a scopo educativo) con 2 tabelle

- Utenti (id_utente,nome_utente)
- Gruppi (id_gruppo,nome_gruppo)

ora .. voglio che Molti utenti possano appartenere a Molti gruppi perciņ pensavo ad una relazione del tipo N:N (molti a molti)
perciņ ho creato la tabella :

- appartenenza (id_gruppo,id_utente)

.. Giusta come logica no ? ci sono altre soluzioni ?

BTW lato PHP ho creato una pagina per visualizzare i gruppi e quanti partecipanti ha ciascun gruppo

ecco il codice

<div class="content">

<h3 align="center">Gruppi di <?php echo $_SESSION['cognome'] . " " . $_SESSION['nome'] ; ?></h3>

<h5 align="center"></h5>

<table id="form_visualizza">
<tr>
<td><strong> Data creazione</strong></td>
<td><strong> | Nome</strong></td>
<td><strong> | Partecipanti al gruppo</strong></td>
</tr>
<?php

$sql_stato_gruppi = "SELECT * FROM gruppi
WHERE gruppi.idutente = '" . $idutente . "' " ;

$risultato_stato = mysql_query($sql_stato_gruppi) or die (mysql_query() ) ;

while ( $fetch = mysql_fetch_array($risultato_stato) )
{
$id_gruppo = $fetch['id_gruppo'] ;

$nome_gruppo = $fetch['nome_gruppo'] ;

$datacreazione_gruppo = date("d/m/Y", strtotime( $fetch['datacreazione_gruppo'] ) ) ;

$idutente = $fetch['idutente'] ;

$sql_rileva_partecipanti = "SELECT COUNT(*) AS partecipanti
FROM rubrica_gruppi
INNER JOIN rubrica ON rubrica.id_cliente = rubrica_gruppi.idcliente
WHERE rubrica.idutente = '" . $idutente . "'";

$risultato_rilevazione = mysql_query($sql_rileva_partecipanti) or die (mysql_error() ) ;

$fetch = mysql_fetch_array($risultato_rilevazione) ;

$partecipanti_gruppo = $fetch['partecipanti'] ;

echo "<tr>
<td> " . $datacreazione_gruppo . " </td>
<td> | " . $nome_gruppo . " </td>
<td> | " . $partecipanti_gruppo . " </td>

</tr> " ;
}

?>
</table>
</div>


Solo che mi visualizza i gruppi in modo corretto ma ad ogni gruppo mette lo stesso numero (sbagliato) di partecipanti :muro: :muro: dove sbaglio ? :cry: