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 ou je sèche [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 29
    Points : 27
    Points
    27
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 29
    Points : 27
    Points
    27
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 :

    12 : Paris – 12 : Lancelot – 13 : Lyon – 13 : Dulac – 14 : Reims – 14 : Rémus – 15 : Puget – 15 : Marseille
    alors que le résultat recherché est
    12 : Lancelot, Paris – 13 : Dulac, Lyon – 14 : Rémus, Reims – 15 : Puget, Marseille

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Range tes données, elles seront simples a afficher ensuite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while ($tab = mysql_fetch_array($result)) {
      $tbl[$tab['lead_id']][] = $tab['value'];
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 29
    Points : 27
    Points
    27
    Par défaut
    Merci Sabotage mais je n'ai pas compris comment afficher mes données ensuite sous la forme {nom, ville}

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 29
    Points : 27
    Points
    27
    Par défaut
    Si je fais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Lancelot , Paris , Dulac , Lyon , Rémus , Reims , Puget , Marseille
    Mon souci maintenant serait de changer la virgule entre deux pour avoir

    Lancelot , Paris - Dulac , Lyon - Rémus , Reims - Puget , Marseille

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    As-tu pris le temps de regarder comment étaient organisées les données ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while ($tab = mysql_fetch_array($result)) {
      $tbl[$tab['lead_id']][] = $tab['value'];
    }
    print_r($tbl);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 29
    Points : 27
    Points
    27
    Par défaut
    Merci

    J'ai fait comme tu dis, voici l'affichage obtenu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo $nom . ',' . $ville . '-'  ?>

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    Il te manque juste à formater ton affichage ici:

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

  9. #9
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 29
    Points : 27
    Points
    27
    Par défaut
    Ça marche ... !

    Génial, tu es génial. Merci

    et Merci aussi à Sabotage bien sûr

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

Discussions similaires

  1. Requête complexe, je sèche
    Par grinder59 dans le forum Requêtes
    Réponses: 5
    Dernier message: 21/03/2012, 09h47
  2. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38
  3. Requete requête sous sybase
    Par eddie dans le forum Sybase
    Réponses: 3
    Dernier message: 02/04/2003, 14h51
  4. Requête imbriquée et indexes INTERBASE
    Par vadim dans le forum InterBase
    Réponses: 2
    Dernier message: 06/09/2002, 16h15
  5. [BDD] Enregistrer le résultat d'une requête
    Par Mowgly dans le forum C++Builder
    Réponses: 5
    Dernier message: 19/06/2002, 15h26

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