Un souci en cas de multiple réponses identiques [Résolu/Fermé]

Signaler
Messages postés
110
Date d'inscription
jeudi 13 mai 2010
Statut
Membre
Dernière intervention
24 juillet 2018
-
Messages postés
110
Date d'inscription
jeudi 13 mai 2010
Statut
Membre
Dernière intervention
24 juillet 2018
-
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


3 réponses

Messages postés
577
Date d'inscription
jeudi 22 novembre 2007
Statut
Membre
Dernière intervention
17 juillet 2018
92
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
.
--
Messages postés
110
Date d'inscription
jeudi 13 mai 2010
Statut
Membre
Dernière intervention
24 juillet 2018
5
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
Messages postés
577
Date d'inscription
jeudi 22 novembre 2007
Statut
Membre
Dernière intervention
17 juillet 2018
92
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.
Messages postés
110
Date d'inscription
jeudi 13 mai 2010
Statut
Membre
Dernière intervention
24 juillet 2018
5
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