> 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
52,99 €Manette Microsoft Xbox sans fil + adaptateur pour PC à 52,99 €
Valable jusqu'au 18 Avril

Fnac fait une promotion sur la nouvelle manette Microsoft Xbox sans fil + adapateur pour PC qui passe à 52,99 € livrée gratuitement alors qu'on la trouve ailleurs à partir de 69 €.  Sur Xbox One, la connexion se fera directement sans fil et sur PC, il vous suffira de brancher l'adaptateur bluetooth fourni pour en profiter aussi sans fil. 


> Voir l'offre
34,99 €Lot de 4 prises connectées Meross (16A, Alexa, Google, IFT) à 34,99 € avec le code KVALO8CD
Valable jusqu'au 18 Avril

Amazon fait une promotion sur le lot de 4 prises électriques connectées Meross qui passe à 34,99 € grâce au code promo KVALO8CD. On le trouve habituellement à 49,99 €. Ces prises 16A peuvent être contrôlées à distance avec l'application Meross dédiée mais également avec Alexa, Google Home et IFTTT. Vous pouvez programmer l'arrêt ou l'allumage des appareils branchés dessus suivant un planning et mesurer leur consommation électrique. 


> Voir l'offre
49,99 €Clavier Microsoft Ergonomic à 49,99 €
Valable jusqu'au 18 Avril

Amazon fait une promotion sur le clavier Microsoft Ergonomic qui passe à 49,99 € au lieu de 65,99 €. Sa forme naturelle arquée protège votre poignet et votre main des tensions, et améliore votre rythme de saisie pour accroître votre nombre de mots par minute. De plus, le repose-poignet rembourré et ergonomique, recouvert d'un tissu haut de gamme, apporte un confort non négligeable tout au long de la journée et une position neutre des poignets.


> 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