Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/04/2011, 09h21   #1
Futur Membre du Club
 
Inscription : juin 2008
Messages : 28
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 28
Points : 19
Points : 19
Par défaut Requête ou je sèche

Bonjour, je cherche comment faire pour afficher mes résultats en associant le nom et la ville. L'association se fait par le lead_id

----

Structure de la table "detail" (plusieurs form_id ici j'ai simplifié)

id - lead_id - form_id - field_number - value

Exemple

id = 1 - lead_id = 20 - form_id = 1 - field_number = 2 - value = Paris
id = 2 - lead_id = 21 - form_id = 1 - field_number = 2 - value = Lyon
id = 3 - lead_id = 20 - form_id = 1 - field_number = 4 - value = 09xxxxxxxx
id = 4 - lead_id = 21 - form_id = 1 - field_number = 4 - value = 09xxxxxxxx
id = 5 - lead_id = 20 - form_id = 1 - field_number = 3 - value = Lancelot
id = 6 - lead_id = 21 - form_id = 1 - field_number = 3 - value = Dulac
id = 7 - lead_id = 20 - form_id = 1 - field_number = 5 - value = Propriétaire
id = 8 - lead_id = 21 - form_id = 1 - field_number = 5 - value = Locataire

----

Ma requête

Code :
1
2
3
4
5
6
7
8
<?php $sql = "SELECT * FROM detail WHERE form_id=1 AND field_number=2 OR field_number=3";
 
$result=mysql_query($sql);
 
while ($tab = mysql_fetch_array($result)) {
  echo $tab['value'];
  echo " - ";
}?>
Avec ma requète j'affiche bien tout le contenu mais dans le désordre (Paris - Lyon - Lancelot - Dulac )

Il faudrait avoir le résultat de cette façon (Lancelot, Paris - Dulac, Lyon)

Merci à tous ceux qui m'aideront la-dessus
lapin7 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2011, 10h05   #2
Futur Membre du Club
 
Inscription : juin 2008
Messages : 28
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 28
Points : 19
Points : 19
Je progresse mais j'ai encore un souci

si je mets ma requête comme ça : (j'ai rajouté le field_number pour voir si c'est bien associé mais il sera enlevé au final)
Code :
1
2
3
4
5
6
7
8
<?php $sql = "SELECT * FROM detail WHERE form_id=1 AND field_number=2 OR field_number=3 ORDER BY lead_id";
 
$result=mysql_query($sql);
 
while ($tab = mysql_fetch_array($result)) {
  echo $tab['lead_id'] . " : " . $tab['value'];
  echo " - ";
}?>
je me retrouve bien avec une liste a peu près cohérente mais comme le field_number est parfois en désordre je me retrouve avec ce genre de résultat :

Citation:
12 : Paris – 12 : Lancelot – 13 : Lyon – 13 : Dulac – 14 : Reims – 14 : Rémus – 15 : Puget – 15 : Marseille
alors que le résultat recherché est
Citation:
12 : Lancelot, Paris – 13 : Dulac, Lyon – 14 : Rémus, Reims – 15 : Puget, Marseille
lapin7 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2011, 14h49   #3
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Range tes données, elles seront simples a afficher ensuite :
Code :
1
2
3
while ($tab = mysql_fetch_array($result)) {
  $tbl[$tab['lead_id']][] = $tab['value'];
}
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2011, 16h49   #4
Futur Membre du Club
 
Inscription : juin 2008
Messages : 28
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 28
Points : 19
Points : 19
Merci Sabotage mais je n'ai pas compris comment afficher mes données ensuite sous la forme {nom, ville}
lapin7 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2011, 17h01   #5
Futur Membre du Club
 
Inscription : juin 2008
Messages : 28
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 28
Points : 19
Points : 19
Si je fais ça :
Code :
1
2
3
4
5
6
7
8
<?php $sql = "SELECT * FROM detail WHERE form_id=1 AND field_number=2 OR field_number=3 ORDER BY lead_id, field_number";
 
$result=mysql_query($sql);
 
while ($tab = mysql_fetch_array($result)) {
  echo $tab['value'] . ' , ' ;
}
?>
Je m'approche du résultat voulu
Citation:
Lancelot , Paris , Dulac , Lyon , Rémus , Reims , Puget , Marseille
Mon souci maintenant serait de changer la virgule entre deux pour avoir

Citation:
Lancelot , Paris - Dulac , Lyon - Rémus , Reims - Puget , Marseille
lapin7 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2011, 23h40   #6
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
As-tu pris le temps de regarder comment étaient organisées les données ?
Code :
1
2
3
4
while ($tab = mysql_fetch_array($result)) {
  $tbl[$tab['lead_id']][] = $tab['value'];
}
print_r($tbl);
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/04/2011, 06h05   #7
Futur Membre du Club
 
Inscription : juin 2008
Messages : 28
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 28
Points : 19
Points : 19
Merci

J'ai fait comme tu dis, voici l'affichage obtenu :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
Array
(
[1] => Array
(
[0] => Lancelot
[1] => Paris
)
 
[2] => Array
(
[0] => Dulac
[1] => Lyon
)
En fait, je crois, qu'il faudrait presque faire deux requêtes (dans la même c'est possible ?) pour sortir deux variables associées avec le lead_id

je pourrais comme ça afficher comme je le souhaite, du genre
Code :
<?php echo $nom . ',' . $ville . '-'  ?>
lapin7 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2011, 11h17   #8
Membre Expert
 
Inscription : avril 2006
Messages : 1 338
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2006
Messages : 1 338
Points : 1 315
Points : 1 315
Il te manque juste à formater ton affichage ici:

Code :
1
2
3
4
5
6
7
8
9
<?php $sql = "SELECT * FROM detail WHERE form_id=1 AND field_number=2 OR field_number=3 ORDER BY lead_id,field_number";
$result=mysql_query($sql);
while ($tab = mysql_fetch_array($result)) {
  $tbl[$tab['lead_id']][] = $tab['value'];
}
foreach ($tab as $leadId=> $value){
	echo $leadId.' : '.$value[0].', '.$value[1];
}
?>
__________________
Stay in Bed .. Save Energy
boo64 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/04/2011, 13h13   #9
Futur Membre du Club
 
Inscription : juin 2008
Messages : 28
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 28
Points : 19
Points : 19
Ça marche ... !

Génial, tu es génial. Merci

et Merci aussi à Sabotage bien sûr
lapin7 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h33.


 
 
 
 
Partenaires

Hébergement Web