Boucle sur champ mysql
t671
Messages postés
1476
Date d'inscription
Statut
Membre
Dernière intervention
-
garion28 Messages postés 1545 Date d'inscription Statut Membre Dernière intervention -
garion28 Messages postés 1545 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai une table nommée "infos" qui contient un champ "participant". Ce champ peut être vide ou contenir de 1 à plusieurs numéros (numéros qui correspondent à l'identifiant unique "id_mb" de la table "membres") sous la forme "-1-2-3-4-5-6".
Je veux extraire ce ou ces numéros, si ils existent, et afficher leur correspondance (nom, prénom) de la table "membres".
Arrivé là, $part[0] contient 1, $part[01] contient 2 ...... (les numéros du champ "participant").
Comment extraire les enregistrements (numéros) contenus dans le champ "participant" jusqu'au dernier, s'ils existent, et faire l'association à l'identifiant "id_mb" de la table "membres" ?
Merci
J'ai une table nommée "infos" qui contient un champ "participant". Ce champ peut être vide ou contenir de 1 à plusieurs numéros (numéros qui correspondent à l'identifiant unique "id_mb" de la table "membres") sous la forme "-1-2-3-4-5-6".
Je veux extraire ce ou ces numéros, si ils existent, et afficher leur correspondance (nom, prénom) de la table "membres".
$requete="SELECT * FROM infos"; $result = mysql_query($requete,$link) or exit ('Erreur : '.mysql_error() ); $result2="SELECT * FROM membres"; $result2 = mysql_query($result2,$link) or exit ('Erreur : '.mysql_error() ); while($row = mysql_fetch_array($result)) { if (!empty($row['participant'])) { $part = explode("-", $row['participant']);
Arrivé là, $part[0] contient 1, $part[01] contient 2 ...... (les numéros du champ "participant").
Comment extraire les enregistrements (numéros) contenus dans le champ "participant" jusqu'au dernier, s'ils existent, et faire l'association à l'identifiant "id_mb" de la table "membres" ?
Merci
A voir également:
- Boucle sur champ mysql
- Mysql community server - Télécharger - Bases de données
- Le nom du champ de tableau croisé dynamique n'est pas valide - Forum Excel
- ERREUR nom du champ du tableau croisé dynamique non valide - Forum Excel
- Télé samsung s'éteint et se rallume en boucle - Forum Téléviseurs
- Xiaomi s'éteint tout seul et se rallume en boucle - Forum Xiaomi
4 réponses
La situation a évolué .... Je reprends, et voici donc où j'en suis :
J'ai une table nommée "infos" qui contient un champ "participant". Ce champ peut être vide ou contenir de 1 à plusieurs numéros. Les numéros correspondent à un identifiant unique "id_mb" de la table "membres", et sont sous la forme "-1-2-3-4-5-6".
Je veux extraire ce ou ces numéros, s’ils existent, et afficher leur correspondance (nom) de la table "membres".
Mais je n’arrive à afficher que le dernier nom enregistré, et moi je les veux tous ! Dans l’exemple "-1-2-3-4-5-6", je n’afficherais que le nom correspondant à 6 ?
Voici mon code
Merci pour votre aide
J'ai une table nommée "infos" qui contient un champ "participant". Ce champ peut être vide ou contenir de 1 à plusieurs numéros. Les numéros correspondent à un identifiant unique "id_mb" de la table "membres", et sont sous la forme "-1-2-3-4-5-6".
Je veux extraire ce ou ces numéros, s’ils existent, et afficher leur correspondance (nom) de la table "membres".
Mais je n’arrive à afficher que le dernier nom enregistré, et moi je les veux tous ! Dans l’exemple "-1-2-3-4-5-6", je n’afficherais que le nom correspondant à 6 ?
Voici mon code
$requete="SELECT * FROM infos ORDER BY date ASC"; $result = mysql_query($requete,$link) or exit ('Erreur : '.mysql_error() ); while($row = mysql_fetch_array($result)) { //vérification du champ participant. Si non vide, on ira rechercher la correspondance dans la table "membres". if (!empty($row['participant'])) { $part = explode("-", $row['participant']); $i = 0; foreach ($part as $part2) { $part2 = ($part[$i]); $i++; } $req="SELECT * FROM membres where id_mb like '$part2'"; $result2 = mysql_query($req,$link) or exit ('Erreur : '.mysql_error() ); while ($row2 = mysql_fetch_array($result2)) { echo '<td>'.$row['titre'].'</td>'; // issu de la base infos echo '<td>'.$row['texte'].'</td>'; // issu de la base infos echo '<td>'.$row2['nom'].'</td>'; // issu de la base membres ....................
Merci pour votre aide
Slt
essaie ça voir
Mais au fait je te conseillerais moi de resoudre ce type de problème par la création d'une table (classe) association qui associérais pour chaque infos les membres abonnés. la table devra contenir les Identifiants de la table Info et membres, et de là t'auras qu'à faire une simple requête et boucler dessus pour avoir ton résultat tout beau et tout facile.
en tout cas bonne chance et à plus.
cdlt.
essaie ça voir
$requete="SELECT * FROM infos ORDER BY date ASC"; $result = mysql_query($requete,$link) or exit ('Erreur : '.mysql_error() ); while($row = mysql_fetch_array($result)) { //vérification du champ participant. Si non vide, on ira rechercher la correspondance dans la table "membres". if (!empty($row['participant'])) { $part = explode("-", $row['participant']); $i = 0; foreach ($part as $part2) { $part2 = ($part[$i]); $i++; $req="SELECT * FROM membres where id_mb like '$part2'"; $result2 = mysql_query($req,$link) or exit ('Erreur : '.mysql_error() ); $row2 = mysql_fetch_array($result2); echo '<td>'.$row['titre'].'</td>'; // issu de la base infos echo '<td>'.$row['texte'].'</td>'; // issu de la base infos echo '<td>'.$row2['nom'].'</td>'; // issu de la base membres .................... } } }
Mais au fait je te conseillerais moi de resoudre ce type de problème par la création d'une table (classe) association qui associérais pour chaque infos les membres abonnés. la table devra contenir les Identifiants de la table Info et membres, et de là t'auras qu'à faire une simple requête et boucler dessus pour avoir ton résultat tout beau et tout facile.
en tout cas bonne chance et à plus.
cdlt.
Bonjour william7007,
Quand tu parles de création d'une table association, je pense que u fais allusion à "mysql_fetch_assoc" ?
J'ai remplacé dans mon script "$row2 = mysql_fetch_array($result2);" par "$row2 = mysql_fetch_assoc($result2);", mais je n'ai pas de différence !
Pourrais-tu m'en dire plus ?
Merci
Quand tu parles de création d'une table association, je pense que u fais allusion à "mysql_fetch_assoc" ?
J'ai remplacé dans mon script "$row2 = mysql_fetch_array($result2);" par "$row2 = mysql_fetch_assoc($result2);", mais je n'ai pas de différence !
Pourrais-tu m'en dire plus ?
Merci
ta table infos et membres sont composé de quels champs ? et quel champ fait la relation entre ces 2 tables ?
a mon avis ca peu se régler par une requète
ah non j'ai rien dis pour la requète, tu extrait chaque chiffre entre les - ce qui n'irai pas pour une requète avec jointure
a mon avis ca peu se régler par une requète
ah non j'ai rien dis pour la requète, tu extrait chaque chiffre entre les - ce qui n'irai pas pour une requète avec jointure
Salut garion28,
J'ai ma première table "infos" qui a comme champs : "id", "titre", "texte", "date" et "participant".
Ma seconde table "membres" a comme champs : "id_mb", "nom", "prenom", "adresse".
Quand un membre veut s'inscrire à une info, son id_mb est enregistré dans le champ "participant" sous la forme "-1-2-3-4....". Mais j'aurais aussi pu l'enregistrer sous la forme "1234.....", sauf que je n'ai pas trouvé pour faire l'explode dans ce style.
J'aurais effectivement pu opter à faire une jopinture entre les tables, mais le problème reste le même.
Si j'ai plusieurs enregistrement dans un champ, comment les lire séparemment ?
J'ai ma première table "infos" qui a comme champs : "id", "titre", "texte", "date" et "participant".
Ma seconde table "membres" a comme champs : "id_mb", "nom", "prenom", "adresse".
Quand un membre veut s'inscrire à une info, son id_mb est enregistré dans le champ "participant" sous la forme "-1-2-3-4....". Mais j'aurais aussi pu l'enregistrer sous la forme "1234.....", sauf que je n'ai pas trouvé pour faire l'explode dans ce style.
J'aurais effectivement pu opter à faire une jopinture entre les tables, mais le problème reste le même.
Si j'ai plusieurs enregistrement dans un champ, comment les lire séparemment ?
je pense a un truc du genre
$sql="select titre,texte,date,nom,prenom,adresse from infos,membres where participant=id_mb"
$jeu=mysql_query($sql)
while($row=mysql_fetch_array($jeu){
et ensuite tu utilise les champs par un $row['titre'] (enfin chaque champs de ta requète)
}
mais ce que je dis est peut etre faux puisque le php n'est pas mon truc, de plus ca suppose que les valeurs de participant et id_mb sont les mêmes (ce qui serai logique si ta base était bien faite)
$sql="select titre,texte,date,nom,prenom,adresse from infos,membres where participant=id_mb"
$jeu=mysql_query($sql)
while($row=mysql_fetch_array($jeu){
et ensuite tu utilise les champs par un $row['titre'] (enfin chaque champs de ta requète)
}
mais ce que je dis est peut etre faux puisque le php n'est pas mon truc, de plus ca suppose que les valeurs de participant et id_mb sont les mêmes (ce qui serai logique si ta base était bien faite)