Page 1 sur 1
Requête dans un tableau
Posté : 24 oct. 2012, 21:51
par kristoff
Bonjour, je vais essayer d'expliquer clairement le problème que je rencontre!
J'ai une table mysql qui contient 13 activités (2 champs : nom, image)
J'ai une autre table mysql qui contient des commerces (plusieurs champs dont 'activite')
Je fais un tableau html qui m'affiche les activités (via une requete simple) sur 13 lignes, pas de pb.
Je voudrai afficher sur chaque ligne (résultat de la requete 1) le nombre d'enregistrements de la table "commerces" dont l' "activite" correspond à la ligne !
Ma requete 2 est du style : select * from commerces where activite=$row_requete2
Mon problème est que le premier résultat de la requete 2 s'affiche sur toutes les lignes ! La requete ne prend en compte que la première valeur d'activité.
Logiquement, c'est normal, mais je ne trouve pas l'astuce pour résoudre mon problème.
J'ai pensé à compter les enregistrements par activité, les mettre dans un tableau, et les rappeller, mais je bute...
Merci à celles et ceux qui voudront bien m'orienter!
Re: Requête dans un tableau
Posté : 24 oct. 2012, 22:03
par juliette
je suis pas trop sur d'avoir compris mais si c'est le cs alors je pense a une jointure...
peut tu faire voir ton code et même les tables ?
Re: Requête dans un tableau
Posté : 24 oct. 2012, 22:10
par kristoff
Ok Juliette,
Voici les codes de mes requêtes :
Requête 1 : m'affiche bien les 13 activités sur 13 lignes (j'utilise Dreamweaver et la Région Répétée)
mysql_select_db($database_dpi_test, $dpi_test);
$query_Rs_activites = "SELECT * FROM activites ORDER BY nom ASC";
$Rs_activites = mysql_query($query_Rs_activites, $dpi_test) or die(mysql_error());
$row_Rs_activites = mysql_fetch_assoc($Rs_activites);
$totalRows_Rs_activites = mysql_num_rows($Rs_activites);
Requête 2 : fonctionne mais que pour la première activité...
$colname_Compteur = $row_Rs_activites['nom'];
if (isset($row_Rs_activites['nom'])) {
$colname_Compteur = (get_magic_quotes_gpc()) ? $row_Rs_activites['nom'] : addslashes($row_Rs_activites['nom']);
}
mysql_select_db($database_dpi_test, $dpi_test);
$query_Compteur = sprintf("SELECT activite FROM page_comm WHERE activite='colname_Compteur'");
$Compteur = mysql_query($query_Compteur, $dpi_test) or die(mysql_error());
$row_Compteur = mysql_fetch_assoc($Compteur);
$totalRows_Compteur = mysql_num_rows($Compteur);
Enfin, le code du tableau dans lequel j'ai mes résultats affichés :
<table width="450" border="0" align="center">
<?php do { ?>
<form id="form4" name="form4" method="post" action="fiche_commerce.php?choix=<?php echo $row_Rs_activites['id'];?>">
<tr>
<td width="59"><img src="activites/<?php echo $row_Rs_activites['image']; ?>" width="40" height="40" /></td>
<td width="187"><div align="center"><span class="Style16"><?php echo $row_Rs_activites['nom']; ?></span></div></td>
<td width="190"><?php echo $totalRows_Compteur ?></td>
<td width="190"><input type="submit" name="Submit4" value="Plus d'infos" /></td>
</tr>
</form>
<?php } while ($row_Rs_activites = mysql_fetch_assoc($Rs_activites)); ?>
</table>
Merci d'avance, j'ai étudié un peu les jointures mais bon ...
Re: Requête dans un tableau
Posté : 24 oct. 2012, 22:30
par juliette
sommes nous bien d'accord: tu veux afficher des infos de 2 tables différentes dans un même tableau html ???
Re: Requête dans un tableau
Posté : 24 oct. 2012, 22:35
par kristoff
Juliette,
Dans un même tableau html, je veux mettre le résultat d'une requete (qui provient de la table "activités") et effectivement le résultat d'une autre requête (qui compte dans la table "commerces" le nombre d'enregistrements selon l'activité)
Exemple : dans ma table "activités", j'ai Boulangerie, Boucherie, Restaurant...
Le tableau m'affiche bien dynamiquement la liste verticalement.
En face de chaque activité, je veux mettre le nombre de "commerces" dont l'activité correspond à cette ligne.
Ex:
Boulangerie (3)
Boucherie (2)
Restaurant (5)
....
Merci
Re: Requête dans un tableau
Posté : 24 oct. 2012, 22:50
par juliette
a mon avis et c'est même sur, ça na marcheras pas car j'ai fait au pif mais un truc du genre devrais te mettre sur la vois
"SELECT
acs.activites AS activites,
acs.nom AS nom,
ac.activite AS activite,
COUNT( ac.activite ) AS nombre_d_activite
FROM activites acs
LEFT OUTER JOIN activite ac ON acs.activites = ac.activite
ORDER BY acs.nom";
Re: Requête dans un tableau
Posté : 24 oct. 2012, 22:54
par kristoff
Apparemment, c'est du côté des jointures que je dois chercher!
Je regarde çà et je tiens au courant
Merci
Re: Requête dans un tableau
Posté : 24 oct. 2012, 23:00
par juliette
si non tu fais un select et tu affiche dans un while et a chaque tour de la boucle, tu fais un requete qui compte le nombre de champs
Re: Requête dans un tableau
Posté : 24 oct. 2012, 23:42
par kristoff
Merci Juliette pour ton dernier post qui m'a mis sur la voie.
Le code pourrait être plus propre je pense, et refaire la requête sur chaque ligne peut ralentir en cas de grosse bdd, mais bon çà fonctionne !
J'ai inclus la requête dans la boucle do while de mon tableau !
<table width="450" border="0" align="center">
<?php do { ?>
<?php $colname_Compteur = $row_Rs_activites['nom'];
if (isset($row_Rs_activites['nom'])) {
$colname_Compteur = (get_magic_quotes_gpc()) ? $row_Rs_activites['nom'] : addslashes($row_Rs_activites['nom']);
}
mysql_select_db($database_dpi_test, $dpi_test);
$query_Compteur = sprintf("SELECT activite FROM page_comm WHERE activite='$colname_Compteur'");
$Compteur = mysql_query($query_Compteur, $dpi_test) or die(mysql_error());
$row_Compteur = mysql_fetch_assoc($Compteur);
$totalRows_Compteur = mysql_num_rows($Compteur); ?>
<form id="form4" name="form4" method="post" action="fiche_commerce.php?choix=<?php echo $row_Rs_activites['id'];?>">
<tr>
<td width="59"><img src="activites/<?php echo $row_Rs_activites['image']; ?>" width="40" height="40" /></td>
<td width="187"><div align="center"><span class="Style16"><?php echo $row_Rs_activites['nom']; ?></span></div></td>
<td width="190"><?php echo "(".$totalRows_Compteur.")" ?></td>
<td width="190"><input type="submit" name="Submit4" value="Plus d'infos" /></td>
</tr>
</form>
<?php } while ($row_Rs_activites = mysql_fetch_assoc($Rs_activites)); ?>
</table>
Merci encore de ton aide !!!
Re: Requête dans un tableau
Posté : 24 oct. 2012, 23:49
par juliette
cool, bonne continuation...
si tu peux, essaye d’utiliser les boutons bbcode, les codes seront en couleur et plus facile a lire et aussi met le post en résolu..
a plus...