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 17/01/2011, 14h25   #1
Membre du Club
 
Avatar de spawns
 
Homme
Inscription : juillet 2004
Messages : 257
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 42
Localisation : France

Informations forums :
Inscription : juillet 2004
Messages : 257
Points : 60
Points : 60
Par défaut Boucle dans une requête

Slt à tous,
je suis sur que c'est pas compliqué mais je pédale dans la semoule depuis une journée.

je me suis inpirée du petit tuto ici pour faire des liste liées cela fonctionne plutôt bien.
Sauf que comme je travaille sur des annonces qui on un champs identique (le champs justement qui se trouve dans la liste déroulante) j'ai un petit blem
je vous met le code de la partie qui nous intéresse avec les explication :

Code :
1
2
3
4
5
6
7
8
9
	echo '<select name="offres">';
	if(isset($_POST["idzone"])){
		$res = mysql_query("SELECT id,commune FROM offres 
			WHERE idzone=".$_POST["idzone"]." ORDER BY commune");
		while($row = mysql_fetch_assoc($res)){
			echo '<option value="'.$row["id"].'">'.$row["commune"].'</option>';
		}
	}
	echo "</select>";
une bdd "offres" avec : id - commune - prix - ..... -idzone
une bdd "zone" avec : id - idzone

mon souci c'est lorsque que j'ai plusieurs annonce avec le nom de commune "PARIS" par exemple il va m'afficher dans le menu déroulant autant de fois "PARIS" que j'ai d'annonce, alors que je voudrais qu'il me l'affiche 1 seul fois.

Je pense qu'il faut faire un petit compteur, mais je ne vois pas comment le mettre en place

Un petit coup de main serait bien cool.

Merci d'avance
@+
spawns est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2011, 14h32   #2
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 951
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : janvier 2006
Messages : 951
Points : 1 063
Points : 1 063
ya un mot magique en SQL c'est DISTINCT.
__________________
PHP fait nativement la validation d'adresse électronique Vous êtes perdu en PHP? rassurez-vous ici (en)
Utilisez le bouton résolu!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2011, 14h46   #3
Membre du Club
 
Avatar de spawns
 
Homme
Inscription : juillet 2004
Messages : 257
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 42
Localisation : France

Informations forums :
Inscription : juillet 2004
Messages : 257
Points : 60
Points : 60
ok j'ai essayé avec distinct

Code :
1
2
3
4
5
6
7
8
9
	echo '<select name="offres">';
	if(isset($_POST["idzone"])){
		$res = mysql_query("SELECT DISTINCT id,commune FROM offres 
			WHERE idzone=".$_POST["idzone"]." ORDER BY commune");
		while($row = mysql_fetch_assoc($res)){
			echo '<option value="'.$row["id"].'">'.$row["commune"].'</option>';
		}
	}
	echo "</select>";
mais cela ne change rien ????
spawns est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2011, 13h04   #4
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 015
Points : 5 015
Hello

Pourquoi tu n'utilise pas tout simplement une jointure ?
Ce serait une requête de la forme:
Code :
1
2
3
4
5
 
$zone = "Paris";
$query = "SELECT o.`id,  o.`name`, z.`name` FROM
`offres` AS o JOIN `zones` AS z ON (z.`id`=o.`zone_id`)
WHERE z.`name`='$zone'";
ça te retourne des résultats de la forme:
Code :
1
2
3
4
 
1 > offre1 > paris
2 > offre2 > paris
3 > offre3 > paris
--- EDIT (j'avais pas tout lu)

Tu dois utiliser un group by pour ne récupérer la commune qu'une seule fois:
Code :
1
2
3
4
 
SELECT o.id, z.commune 
FROM zones AS z JOIN offres AS o ON (o.zones_id=z.zones_id) 
WHERE z.id_zone='$idzone' GROUP BY commune
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2011, 16h48   #5
Membre du Club
 
Avatar de spawns
 
Homme
Inscription : juillet 2004
Messages : 257
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 42
Localisation : France

Informations forums :
Inscription : juillet 2004
Messages : 257
Points : 60
Points : 60
ca me parait nikel
Merci
@+
spawns 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 02h07.


 
 
 
 
Partenaires

Hébergement Web