[RESOLU] Requête dans un tableau

Petit nouveau ! | 5 Messages

24 oct. 2012, 21:51

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!

Mammouth du PHP | 790 Messages

24 oct. 2012, 22:03

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 ?
Les fautes de grammaire et d'orthographe contenu dans mes postes sont sous copyright, vous pouvez les utiliser pour un usage personnelle mais vous ne devrez en aucun cas les utiliser a des fins commercial sans une autorisation écrite de ma part.

Petit nouveau ! | 5 Messages

24 oct. 2012, 22:10

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 ...

Mammouth du PHP | 790 Messages

24 oct. 2012, 22:30

sommes nous bien d'accord: tu veux afficher des infos de 2 tables différentes dans un même tableau html ???
Les fautes de grammaire et d'orthographe contenu dans mes postes sont sous copyright, vous pouvez les utiliser pour un usage personnelle mais vous ne devrez en aucun cas les utiliser a des fins commercial sans une autorisation écrite de ma part.

Petit nouveau ! | 5 Messages

24 oct. 2012, 22:35

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

Mammouth du PHP | 790 Messages

24 oct. 2012, 22:50

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";
Les fautes de grammaire et d'orthographe contenu dans mes postes sont sous copyright, vous pouvez les utiliser pour un usage personnelle mais vous ne devrez en aucun cas les utiliser a des fins commercial sans une autorisation écrite de ma part.

Petit nouveau ! | 5 Messages

24 oct. 2012, 22:54

Apparemment, c'est du côté des jointures que je dois chercher!

Je regarde çà et je tiens au courant

Merci

Mammouth du PHP | 790 Messages

24 oct. 2012, 23:00

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
Les fautes de grammaire et d'orthographe contenu dans mes postes sont sous copyright, vous pouvez les utiliser pour un usage personnelle mais vous ne devrez en aucun cas les utiliser a des fins commercial sans une autorisation écrite de ma part.

Petit nouveau ! | 5 Messages

24 oct. 2012, 23:42

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 !!!

Mammouth du PHP | 790 Messages

24 oct. 2012, 23:49

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...
Les fautes de grammaire et d'orthographe contenu dans mes postes sont sous copyright, vous pouvez les utiliser pour un usage personnelle mais vous ne devrez en aucun cas les utiliser a des fins commercial sans une autorisation écrite de ma part.