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 :

Requête pour ressortir des resultats


Sujet :

PHP & Base de données

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

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Points : 193
    Points
    193
    Par défaut Requête pour ressortir des resultats
    Salut à tous,
    j'aurai besoin de votre aide pour écrire une requête afin de sortir les résultats d'une table.
    la table :
    Id | Departement | Adresse ....
    1 | 33| 12 rue...
    1 | 40| 181 rue...
    1 | 75| 15 rue...
    1 | 33| 16 rue...
    1 | 40| 127 rue...

    il faut que je sorte un résultat par département mais avec chaque adresse bien sur
    Exemple :
    Département 33 :
    12 rue...
    16 rue...

    Département 40:
    181 rue...
    127 rue...

    j'ai essayé ce genre de code mais cela ne fonctionne pas, cela ne me sort qu'une adresse par département.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $requete = "SELECT * FROM agences GROUP BY dep";
    $ret = $mysqli->query($requete);
     
    while($data = mysqli_fetch_array($ret)){
    $depart =	 "$data[dep]";
    $city = array("$data[adresse]");
    echo $depart.'<br />';
    print_r($city);
    echo '<br />';
    Merci d'avance votre aide
    Cdt

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    Tu peux utiliser GROUP CONCAT.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

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

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Points : 193
    Points
    193
    Par défaut
    Bonjour et merci pour cette info,
    peux tu me donner un exemple avec ma table ?

  4. #4
    Membre émérite
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Points : 2 724
    Points
    2 724
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * from table order by departement,adresse
    Ensuite tu boucles dessus de cette manière:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $dep = 0
    while ($enreg = mysqli_fetch_assoc($res))
    {
      if ($dep != $enreg["Departement"])
      {
        echo "Departement ".$enreg["Departement"];
        $dep = $enreg["Departement"];
      }
      echo $enreg["adresse"];
    }
    Normalement, ça devrait fonctionner, à toi d'adapter ta lecture à ton appli ensuite .
    Pas de solution, pas de probleme

    Une réponse utile (ou +1) ->
    Une réponse inutile ou pas d'accord -> et expliquer pourquoi
    Une réponse à votre question


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

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Points : 193
    Points
    193
    Par défaut
    bonjour, et merci pour ta réponse .
    le problème c'est que je dois récupérer ce listing (departement+adresse) afin
    de les afficher à des endroits différents de la page et pas les un en dessous des autres.

    Comment faire à ce moment la ?

  6. #6
    Membre émérite
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Points : 2 724
    Points
    2 724
    Billets dans le blog
    1
    Par défaut
    Tu créé un tableau avec les résultat de la requete, que tu utiliseras dans toute ta page. Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $dep = 0
    $tableauDep = array();
    $iterator = 0;
    while ($enreg = mysqli_fetch_assoc($res)){
      if ($dep != $enreg["Departement"]){
        $tableauDep[$enreg["departement"]] = array();
        $iterator = 0;
        $dep = $enreg["Departement"];
      }
      $tableauDep[$enreg["departement"]][$iterator] = $enreg["adresse"];
      $iterator++;
    }
    Dans ton tableau tu auras donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    array
    {
      "93" => array
       {
          0 => "18 rue de ..."
          1 => "19 rue de ..."
       }
      "64" => array
       {
          0 => "15 rue de ..."
          1 => "16 rue de ..."
       }
      ...
    }
    Pas de solution, pas de probleme

    Une réponse utile (ou +1) ->
    Une réponse inutile ou pas d'accord -> et expliquer pourquoi
    Une réponse à votre question


  7. #7
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT dep, GROUP_CONCAT(adresse SEPARATOR '|') as adr FROM agences GROUP BY dep;
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

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

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Points : 193
    Points
    193
    Par défaut
    Merci a vous, les approches sont différente, mais je pense que la solution de Bovino et peut être moins compliqué.

    par contre comment faire ensuite pour récupérer les tableaux dans des variables différentes, pour pouvoir les afficher dans les
    différents endroit de la page.
    il faut que chaque tableau soient des des variable unique $dep33 $dep40 etc...
    le code avec la version bovino :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $requete ="SELECT dep, GROUP_CONCAT(adresse SEPARATOR '|') as adr FROM agences GROUP BY dep";
     	$ret = $mysqli->query($requete);
    	while($data = mysqli_fetch_array($ret)){
    		$tabe= array($data['dep'],$data['adr']);
     
    		echo '<pre>';
    		print_r($tabe);
    		echo '</pre>';
     
    	}

Discussions similaires

  1. Réponses: 7
    Dernier message: 22/08/2007, 11h49
  2. Requête pour extraire des départements
    Par Ardechoise dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 27/04/2007, 11h20
  3. Réponses: 5
    Dernier message: 23/02/2007, 09h04
  4. Besoin d'aide pour afficher des resultats proprement
    Par zx10 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 27/11/2006, 16h34
  5. probleme de requete multi table pour exclure des resultats
    Par voilabad dans le forum Requêtes
    Réponses: 7
    Dernier message: 05/05/2006, 08h49

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