Boucle sur champ mysql
Fermé
t671
Messages postés
1442
Date d'inscription
lundi 25 février 2008
Statut
Membre
Dernière intervention
2 novembre 2024
-
8 févr. 2010 à 13:50
garion28 Messages postés 1545 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 3 avril 2011 - 10 févr. 2010 à 17:57
garion28 Messages postés 1545 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 3 avril 2011 - 10 févr. 2010 à 17:57
A voir également:
- Boucle sur champ mysql
- Mysql community server - Télécharger - Bases de données
- Télé samsung s'éteint et se rallume en boucle - Forum Téléviseurs
- Mysql error in file: /engine/classes/mysql.php at line 53 ✓ - Forum Réseaux sociaux
- Mysql a répondu : documentation connexion impossible : paramètres incorrects. - Forum Bases de données
4 réponses
t671
Messages postés
1442
Date d'inscription
lundi 25 février 2008
Statut
Membre
Dernière intervention
2 novembre 2024
11
8 févr. 2010 à 17:18
8 févr. 2010 à 17:18
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
william7007
Messages postés
335
Date d'inscription
dimanche 28 décembre 2008
Statut
Membre
Dernière intervention
23 mars 2010
46
8 févr. 2010 à 22:15
8 févr. 2010 à 22:15
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.
t671
Messages postés
1442
Date d'inscription
lundi 25 février 2008
Statut
Membre
Dernière intervention
2 novembre 2024
11
10 févr. 2010 à 14:28
10 févr. 2010 à 14:28
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
garion28
Messages postés
1545
Date d'inscription
mardi 16 juin 2009
Statut
Membre
Dernière intervention
3 avril 2011
406
10 févr. 2010 à 14:35
10 févr. 2010 à 14:35
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
t671
Messages postés
1442
Date d'inscription
lundi 25 février 2008
Statut
Membre
Dernière intervention
2 novembre 2024
11
10 févr. 2010 à 15:11
10 févr. 2010 à 15:11
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 ?
garion28
Messages postés
1545
Date d'inscription
mardi 16 juin 2009
Statut
Membre
Dernière intervention
3 avril 2011
406
10 févr. 2010 à 17:57
10 févr. 2010 à 17:57
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)