IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Boucle dans une requête [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    @+

  2. #2
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    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 : 1 769
    Par défaut
    ya un mot magique en SQL c'est DISTINCT.

  3. #3
    Membre éclairé Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Par défaut
    ok j'ai essayé avec distinct

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ????

  4. #4
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Hello

    Pourquoi tu n'utilise pas tout simplement une jointure ?
    Ce serait une requête de la forme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  5. #5
    Membre éclairé Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Par défaut
    ca me parait nikel
    Merci
    @+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2000] Créer une boucle dans une requête
    Par tibogaet dans le forum VBA Access
    Réponses: 4
    Dernier message: 27/10/2010, 16h45
  2. Boucle dans une requête SQL
    Par od.dev dans le forum Langage SQL
    Réponses: 4
    Dernier message: 14/06/2010, 19h13
  3. [mySQL5] Faire une sorte de "boucle" dans une requête
    Par mdr_cedrick dans le forum Requêtes
    Réponses: 5
    Dernier message: 01/07/2009, 17h40
  4. [MySQL] Boucle dans une requête
    Par murdok74 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 01/07/2008, 14h50
  5. Creer une boucle dans une requête ???
    Par fdloisel dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 26/10/2004, 14h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo