> Tous les forums > Forum des Webmasters
 réïtération de lecture de champs dans une boucleSujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
t671
  Posté le 17/02/2010 @ 11:18 
Aller en bas de la page 
Astucien

Bonjour,

Je lis 3 tables en jointure et j'affiche le résultat dans un tableau (table infos qui réunis des infos, table membres qui réunis les membres, inscr_sortie sert à liéer la table info à la table membres pour les inscriptions):

$requete="SELECT * FROM infos
LEFT OUTER JOIN inscr_sortie ON infos.id = inscr_sortie.liaison_id_infos
LEFT OUTER JOIN membres ON inscr_sortie.liaison_id_mb = membres.id_mb
ORDER BY infos.date ASC";
$result = mysql_query($requete,$link) or exit ('Erreur : '.mysql_error() );
while($row = mysql_fetch_array($result))
{
echo '<tr>';
if (empty($row['date']))
{
echo '<td>'.$row['titre'].'</td>';
echo '<td>'.$row['texte'].'</td>';
echo '<td>'.$row['nom'].'&nbsp;'.$row['prenom'].'</td>';
}

Pour l'affichage du même "titre" et "texte", je peux avoir plusieurs "nom,prenom" (plusieurs enregistrements).
Là, si j'ai un deuxième "nom,prenom" pour le même "titre" et "texte", je réaffiche les titre et texte une deuxième fois.
Je voudrais que tous les "nom,prenom" pour le même titre et texte s'affiche dans le même <td>.
Comment faire ?

Merci

Publicité
Malcolm
 Posté le 17/02/2010 à 18:56 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

stocke en variable le nom/prénom actuellement lu au passage de la boucle. Et en début de boucle, vérifie si le nouveau nom est différent ou pas.

Si oui : nouvelle ligne.

t671
 Posté le 18/02/2010 à 11:06 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
Malcolm a écrit :

stocke en variable le nom/prénom actuellement lu au passage de la boucle. Et en début de boucle, vérifie si le nouveau nom est différent ou pas.

Si oui : nouvelle ligne.

C'est effectivement ce que je voudrais faire, mais je ne sais pas (ou je ne sais plus) comment lire un élément de la boucle ....

Malcolm
 Posté le 18/02/2010 à 23:07 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

$nom_actuel = '';

while($ligne = mysql_fetch_array($reponse)

{

// nouvelle ligne ?

if ($ligne['nom'] != $nom_actuel) // oui

{ echo '</td></tr> <tr><td>'; $nom_actuel = $ligne['nom']; }

echo blabla

};

echo '</td></tr></table>';

Après tel quel, tu vas avoir un bug : à la première lecture, il va voir que le != $nom_actuel est vrai (puisque $nom_actuel sera initialisé vide) et il fermera tout de même la ligne, ligne non ouverte précédemment puisque pas de passage précédent dans la boucle.

Il suffit alors de remplacer

echo '</td></tr> <tr><td>'; $nom_actuel = $ligne['nom'];

par :

echo ($nom_actuel != '') ? '</td></tr> <tr><td>' : ''; $nom_actuel = $ligne['nom'];

et ainsi il ne fermera la ligne que si $nom_actuel non vide, ce qui signifie qu'il sera passé au moins une fois dans la boucle.

Par contre ça fait plusieurs posts que tu fais où le souci n'est pas tellement de la prog, mais de l'algo : je te conseille de mieux décomposer en étapes élémentaires ton raisonnement, tu y gagneras en rapidité ...

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
92,99 €Disque dur externe portable Western Digital Elements USB 3.0 4 To à 92,99 €
Valable jusqu'au 01 Mars

Amazon propose actuellement le disque dur externe portable Western Digital Elements USB 3.0 4 To à 92,99 € livré. On le trouve ailleurs à partir de 115 €. Ce disque dur qui tient dans la main est silencieux, ne chauffe pas et dispose d'une connectique USB 3.0 qui vous offrira des transferts rapides. Il est compatible USB 2.0. Une très bonne affaire.


> Voir l'offre
1249,99 €Apple MacBook Air 13 pouces M1 (8 Go, 512 Go) à 1249,99 €
Valable jusqu'au 02 Mars

Amazon fait une promtion sur l'ordinateur portable Apple MacBook Air 13 pouces M1 à 1249,99 € alors qu'on le trouve habituellement à partir de 1399 €. Apple M1, 8 Go de RAM, 512 Go de stockage.


> Voir l'offre
52,99 €SSD SanDisk Plus 480 Go à 52,99 €
Valable jusqu'au 01 Mars

Amazon fait une promotion  sur le SSD SanDisk SSD Plus 480 Go à 52,99 € livré gratuitement alors qu'on le trouve actuellement autour de 60 € ailleurs. Une bonne affaire pour ce SSD performant qui offre des débits de 535 Mo/s en lecture et 445 Mo/s en écriture. Cette version est garantie 3 ans. 


> Voir l'offre

Sujets relatifs
Lecture fichiers vidéos dans un site.
Requete Sql, afficher une seul fois dans boucle
Addition de champs dans un formulaire
Lecture fichier wmp dans page web
Problème lecture MP3 dans IE
champs de longueur indéfini dans mysql
champs obligatoire dans un formulaire
editeur TinyMCE grande largeur texte dans page
Texte dans tableau
Lecture d'un xml
Plus de sujets relatifs à réïtération de lecture de champs dans une boucle
 > Tous les forums > Forum Forum des Webmasters