Un souci en cas de multiple réponses identiques

Résolu/Fermé
Sebas22 Messages postés 110 Date d'inscription jeudi 13 mai 2010 Statut Membre Dernière intervention 24 juillet 2018 - 9 mars 2017 à 14:27
Sebas22 Messages postés 110 Date d'inscription jeudi 13 mai 2010 Statut Membre Dernière intervention 24 juillet 2018 - 10 mars 2017 à 11:38
Bonjour,

J’ai une petite base MySql et une page qui s’en sert pour aller chercher des photos dans un répertoire.
Pas de problème, la requête est bonne et les photos sont bien appelées.
La requête et les photos sont recherchées par rapport à l’appartenance à un champ groupe (Group_Abbr) et un code (Unique_Code_12)
Dans mon code php, je veux ajouter une légende générale, cette légende figure dans un champ (Membres) dans la même table (comme tous les champs concernés ici, d’ailleurs).
Le souci c’est que la même légende (identique) figure pour les mêmes occurrences de Group_Abbr et que le code php qui marche me donne autant de fois la même réponse qu’il y a de bonnes réponses pour Group_Abbr (entre 1 et 50 bonnes réponses !)… et je ne voudrais que la 1ère occurrence.
Comment faire ?
Voici mon code (le souci est signalé par un commentaire) :
$requete = $connexion->prepare("SELECT Unique_Code_12, Annee, Nom, Group_Abbr, Membres FROM champ1 WHERE Group_Abbr not like '%$' and Group_Abbr = :codepics and Nom != '' ORDER BY Nom");
//
foreach ($result[1] as $row) {
		
	echo '<p>Titre : ' . $row["Membres"] . ' </p>'; //là est le souci!
	
	for ($i=1; $i<=12; $i=$i+1) {if (file_exists ('Photos/'. $row["Unique_Code_12"] . '$' . $i . '.jpg')) {echo '<tr><td><br><i>' . $row["Nom"] . '</i> [' . $row["Annee"] . ']<img class="displayed" border="0" src=""quot;xxxxxx.php?file=' . $row["Unique_Code_12"] . '$' . $i . '.jpg" alt="legend" title="photo"><i>'. $row["Nom"] . '</i> [' . $row["Annee"] . ']<br><br></td></tr>';} else {echo '';}}

J’ai essayé 2 choses (principalement):
Ajouter un DISTINCT pour le champ Membres dans la requête, mais alors la requête ne marche plus
Sortir le code avec souci du foreach, ajouter le code
$SupComp = !empty($_POST["Membres"]) ? $_POST["Membres"] : NULL;
echo '<p>Titre :' . $SupComp . ' </p>';


Mais je n’ai pas de réponse (après Titre c’est vide)

Je répète : il n’y a pas de message d’erreur, l’objectif de récupérer des photos est rempli, simplement ma légende se répète x fois comme ceci par exemple si Group_Abbr donne 4 réponses et la légende répétée est tartempion1, tartempion2, tartempion3, tartempion4, tartempion5, tartempion6 :
Titre : tartempion1, tartempion2, tartempion3, tartempion4, tartempion5, tartempion6.
Titre : tartempion1, tartempion2, tartempion3, tartempion4, tartempion5, tartempion6.
Titre : tartempion1, tartempion2, tartempion3, tartempion4, tartempion5, tartempion6.
Titre : tartempion1, tartempion2, tartempion3, tartempion4, tartempion5, tartempion6.

Un peu d’aide, svp!

Seb


A voir également:

3 réponses

mrjenkins Messages postés 580 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 17 juillet 2018 102
9 mars 2017 à 14:49
Salut,

en effet le souci vient du fait que ton titre soit dans le
foreach


Essaye de mettre ça :
echo '<p>Titre : ' . $result[1][0]["Membres"] . ' </p>';


avant le
foreach
.
--
0
Sebas22 Messages postés 110 Date d'inscription jeudi 13 mai 2010 Statut Membre Dernière intervention 24 juillet 2018 5
9 mars 2017 à 18:22
Salut,

Et merci de cette réponse rapide et parfaite!

Je marque "résolu".

Si tu as une minute tu peux augmenter ma courbe d'expérience en éclaircissant un point...

J'utilise sans trop savoir pourquoi
$result[1]
ou
$result[0]
dans mes codes.
Quelle différence?

Et maintenant je capte plus le [1] puis [0] pour
$result[1][0]

Encore merci, MrJenkins... j'ai encore beaucoup à apprendre, mais c'est un plaisir de trouver de l'aide sur ce forum

Seb
0
mrjenkins Messages postés 580 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 17 juillet 2018 102
9 mars 2017 à 20:12
La comme ça, je saurai pas te dire.

Tu utilises quelle méthode de connexion ? PDO ? c'est quoi ton code entre ton prepare et ton foreach ?

Ton [1] me semblait bizarre.. mais si tu retrouves tes données.. pourquoi pas.

Pour savoir ce que contient tes variables, tu peux faire un :
echo "<pre>";
print_r($ma_variable);
echo "</pre>";


Moi j'ai rajouté le [0] pour prendre le 1er élément de ton tableau $result[1], et ensuite récupérer le ["Membres"] pour avoir le titre.
0
Sebas22 Messages postés 110 Date d'inscription jeudi 13 mai 2010 Statut Membre Dernière intervention 24 juillet 2018 5
10 mars 2017 à 11:38
Oui PDO, et j'ai pris comme résultat le 1 car dans une autre requête de la même page j'avais un result[0]!

J'ai dû faire une drôle de tambouille... mais çà marche!

Merci pour le tuyau avec print, çà permet de tester et de comprendre nickel!

Encore merci

Seb
0