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 :

Parser un champ de BDD + affichage


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Profil pro
    DBA-Administrateur système
    Inscrit en
    Août 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : DBA-Administrateur système

    Informations forums :
    Inscription : Août 2009
    Messages : 12
    Par défaut Parser un champ de BDD + affichage
    Bonjour a tous , Débutant en PHP,j'ai un petit soucis que je n'arrive pas à résoudre , j'ai trouvé des pistes mais sans aboutir a ce que je veux

    Pour simplifier , j'ai 2 tables que j'appelle LISTING et CONTACTS

    dans la table LISTING,j'ai un champ "interlocuteur" ou est écrit le nom de la l'interlocuteur associé a une entreprise (champ "entreprise")

    Dans la table CONTACTS , je retrouve un champ "nom" qui a le même contenu que le champ "interlocuteur" de la table LISTING et un champ "telephone" qui comporte le numero de telephone de l'interlocuteur

    J'ai crée une page ou je souhaite entre autre, afficher le(s) nom(s) et téléphone(s) de ou des interlocuteur(s) pour une entreprise spécifique.(par le biais d'un foreach)

    Lorsque je n'ai qu'un qu'un nom dans le champ "interlocuteur" , pas de problème ,par contre , si plusieurs sont présents et séparés par des virgules(exemple= MARTIN,DUPONT) , je n'y arrive pas


    j'ai regardé du coté de la fonction explode() pour parser mais en fait je ne sais pas trop comment m'y prendre pour l'utiliser avec le résultat de ma requete sql

    Merci d'avance

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 99
    Par défaut
    Re-bonjour,

    J'ai répondu à ton précédent message, mais je te le ré-écris.

    tu peux essayer ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $tab_interlocuteur = explode(",", $sql_listing["interlocuteur"]);
    $sql = " SELECT * FROM contacts WHERE ";
    $or = "";
    foreach($tab_interlocuteur AS $interlocuteur)
    {
        $sql .= $or." nom = \"".$interlocuteur."\" ";
        $or = " OR ";
    }
    $s_sql = mysql_query($sql);
    while($r_sql = mysql_fetch_array($s_sql))
    {
        //ton code de traitement
    }
    J'espère que ce code pourra t'aider.

    Dans un premier temps, cela fonctionnera, sauf en cas de doublons au niveau des noms.

    Il faudra par la suite travailler avec des id pour éviter cela.

  3. #3
    Membre habitué
    Profil pro
    DBA-Administrateur système
    Inscrit en
    Août 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : DBA-Administrateur système

    Informations forums :
    Inscription : Août 2009
    Messages : 12
    Par défaut
    Citation Envoyé par anthony89 Voir le message
    Re-bonjour,

    J'ai répondu à ton précédent message, mais je te le ré-écris.

    tu peux essayer ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $tab_interlocuteur = explode(",", $sql_listing["interlocuteur"]);
    $sql = " SELECT * FROM contacts WHERE ";
    $or = "";
    foreach($tab_interlocuteur AS $interlocuteur)
    {
        $sql .= $or." nom = \"".$interlocuteur."\" ";
        $or = " OR ";
    }
    $s_sql = mysql_query($sql);
    while($r_sql = mysql_fetch_array($s_sql))
    {
        //ton code de traitement
    }
    J'espère que ce code pourra t'aider.

    Dans un premier temps, cela fonctionnera, sauf en cas de doublons au niveau des noms.

    Il faudra par la suite travailler avec des id pour éviter cela.

    Merci pour ta réponse

    J'ai essayé et ca ne marche pas , mais je pense que ca vient de moi , voila mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
      $tab_interlocuteur=explode(",",$sql_listing["interlocuteur"]);
     $sql ="SELECT listing.interlocuteur,contacts.fixe FROM listing,contacts
     WHERE listing.interlocuteur=contacts.Nom AND listing.ID=".$id;
     
     
    $or="";
     
    foreach($tab_interlocuteur AS $interlocuteur)
    {
    $sql .=$or." nom =\"".$interlocuteur."\"";
    $or="OR";
    }
    $s_sql =mysql_query($sql,$link);
     
    while($r_sql=mysql_fetch_array($s_sql));
    {
     
    ?> 
    <h3>INTERLOCUTEUR</h3>
      <input type="hidden" name="id" value="<?php echo($res['ID']) ;?>">
      <table border="2" BORDERCOLOR="#0066FF" cellspacing="4" cellpadding="4">
      <tr align="center">
          <td>Nom</td>
          <td><input type="text" name="NOM" size="30" value="<?php echo($res['interlocuteur']) ;?>"disabled></td>
        </tr>
          <td>telephone</td>
          <td><input type="text" name="Telephone" size="40" value="<?php echo($res['fixe']) ;?>"disabled></td>
        </tr>
    	</table> 
     
      <br/>
     <?php
     }
    j'ai essayé egalement avec d'autres affichage que je voudrais du même type dans ma page et j'ai toujours une erreur de mysql_fetch_array (pourtant je n'ai rien oublier en parametre..) ainsi qu'une erreur de variable non defini sur sql_listing.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 99
    Par défaut
    Bonjour,

    Tu peux poster ton code complet stp ?
    Je pense qu'il manque des choses.

    Merci

  5. #5
    Membre habitué
    Profil pro
    DBA-Administrateur système
    Inscrit en
    Août 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : DBA-Administrateur système

    Informations forums :
    Inscription : Août 2009
    Messages : 12
    Par défaut
    Citation Envoyé par anthony89 Voir le message
    Bonjour,

    Tu peux poster ton code complet stp ?
    Je pense qu'il manque des choses.

    Merci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
     
     
    <?php
     } 
     
     
     
     $sql2 ="SELECT listing.interlocuteur,contacts.fixe FROM listing,contacts
     WHERE listing.interlocuteur=contacts.Nom AND listing.ID=".$id;
    $requete2 =mysql_query($sql2,$link);
     
    if($res=mysql_fetch_assoc($requete2));
    {
     
    ?> 
    <h3>INTERLOCUTEUR</h3>
      <input type="hidden" name="id" value="<?php echo($res['ID']) ;?>">
      <table border="2" BORDERCOLOR="#0066FF" cellspacing="4" cellpadding="4">
      <tr align="center">
          <td>Nom</td>
          <td><input type="text" name="NOM" size="30" value="<?php echo($res['interlocuteur']) ;?>"disabled></td>
        </tr>
          <td>telephone</td>
          <td><input type="text" name="Telephone" size="40" value="<?php echo($res['fixe']) ;?>"disabled></td>
        </tr>
    	</table> 
     
      <br/>
     <?php
     }
    ?>
    Je t'ai posté le code qui fonctionne dans le cas ou je n'ai pas a parser (une seule donnes dans le champ) , vu que page est un listing client (tres) long , je ne vais pas le poster surtout que ca fonctionne parfaitement ailleur il y a juste sur cette partie que j'aurais besoin de résoudre mon problème

    le code complet avec ta solution es tle code que j'ai déja posté

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 99
    Par défaut
    Bonjour,

    Merci pour ton post.

    Tu vas essayer ceci, je pense que ca fonctionnera.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    $sql_listing ="SELECT listing.ID, listing.interlocuteur FROM listing WHERE listing.ID=".$id;
    $s_sql_listing =mysql_query($sql_listing,$link);
    $r_sql_listing = mysql_fetch_array($s_sql_listing);
     
    //ici tu récupères le contenu explodé sous forme d'un tableau php
    $tab_interlocuteur = explode(",", $r_sql_listing["interlocuteur"]);
     
    $sql = " SELECT fixe FROM contacts WHERE ";
    $or = "";
    foreach($tab_interlocuteur AS $interlocuteur)
    {
        $sql .= $or." Nom = \"".$interlocuteur."\" ";
        $or = " OR ";
    }
    $requete2 = mysql_query($sql);
     
    if($res=mysql_fetch_assoc($requete2));
    {
     
    ?>
    <h3>INTERLOCUTEUR</h3>
    <input type="hidden" name="id" value="<?php echo($r_sql_listing['ID']) ;?>">
    <table border="2" BORDERCOLOR="#0066FF" cellspacing="4" cellpadding="4">
    <tr align="center">
    <td>Nom</td>
    <td><input type="text" name="NOM" size="30" value="<?php echo($r_sql_listing['interlocuteur']) ;?>"disabled></td>
    </tr>
    <td>telephone</td>
    <td><input type="text" name="Telephone" size="40" value="<?php echo($res['fixe']) ;?>"disabled></td>
    </tr>
    </table>
     
    <br/>
    <?php
    }

  7. #7
    Membre habitué
    Profil pro
    DBA-Administrateur système
    Inscrit en
    Août 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : DBA-Administrateur système

    Informations forums :
    Inscription : Août 2009
    Messages : 12
    Par défaut
    merci beaucoup ca marche presque parfaitement , j'ai juste une erreur avec mysql_fetch_assoc ('expects parameter 1 to be ressource,boolean given...)


    Par contre je ne vois plus mon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     "WHERE listing.interlocuteur=contacts.Nom " .
    Peux tu m'expliquer pourquoi il n'apparait pas dans ton code?

    Peut être que le problème vient de la ?

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 99
    Par défaut
    Bonjour,

    J'ai enlevé la jointure, c'est en effet à cause de ça que ça ne marchait pas.

    Tu ne pouvait pas joindre deux noms qui ne sont pas identiques (ex : "DUPONT" et" DUPONT,DURAND").

    C'est pour ça que j'ai fait un explode pour avoir tous les noms séparément et recrée la requête dynamiquement.

    Aussi il faudra par la suite que tu travailles avec les id et non avec des chaînes de caractères

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 99
    Par défaut
    Pour ton problème de mysql_fetch_assoc, je pense que c'est la seconde requête qui est incorrecte.

    Faudra que tu fasses des echo pour isoler le problème et ensuite mettre des protections afin que ca ne se reproduise pas.

  10. #10
    Membre habitué
    Profil pro
    DBA-Administrateur système
    Inscrit en
    Août 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : DBA-Administrateur système

    Informations forums :
    Inscription : Août 2009
    Messages : 12
    Par défaut
    Citation Envoyé par anthony89 Voir le message
    Bonjour,

    J'ai enlevé la jointure, c'est en effet à cause de ça que ça ne marchait pas.

    Tu ne pouvait pas joindre deux noms qui ne sont pas identiques (ex : "DUPONT" et" DUPONT,DURAND").

    C'est pour ça que j'ai fait un explode pour avoir tous les noms séparément et recrée la requête dynamiquement.

    Aussi il faudra par la suite que tu travailles avec les id et non avec des chaînes de caractères
    En faisant ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql ="SELECT contacts.fixe FROM contacts,listing WHERE contacts.IDcontact=listing.ID";
    c'est donc normal que ca ne marche pas ?

    en tous cas merci , une bonne partie du problème est résolus, si je n'arrive pas a lier les noms au numeros de téléphone , je trouverais un autre moyens pour présenter ma fiche client

  11. #11
    Membre habitué
    Profil pro
    DBA-Administrateur système
    Inscrit en
    Août 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : DBA-Administrateur système

    Informations forums :
    Inscription : Août 2009
    Messages : 12
    Par défaut
    UP= j'ai regardé et je ne vois pas le problème , ma requête fonctionne parfaitement dans le cas ou je n'ai qu'une donnée par champs

    et j'ai toujours le même soucis avec la liaison noms-->numero de téléphone au niveau affichage (et au niveau requête il faut croire )

Discussions similaires

  1. Concat sur un champ numéric >0 affichage du 0
    Par Chihuahua dans le forum Langage SQL
    Réponses: 1
    Dernier message: 15/11/2006, 17h21
  2. Left join, champ null et affichage dans etat
    Par catoucat dans le forum Access
    Réponses: 3
    Dernier message: 03/07/2006, 02h58
  3. Verifier un champ a l affichage dans un etat
    Par virtuose dans le forum Access
    Réponses: 5
    Dernier message: 19/01/2006, 18h18
  4. tester si un champ de bdd est vide
    Par pekka77 dans le forum ASP
    Réponses: 8
    Dernier message: 28/06/2005, 16h14
  5. PB modification du type d'un champ ds BDD
    Par vanoou dans le forum Langage SQL
    Réponses: 2
    Dernier message: 03/01/2005, 16h01

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