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

Requêtes MySQL Discussion :

probleme les champs vide ne s'affiche pas


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 23
    Points : 17
    Points
    17
    Par défaut probleme les champs vide ne s'affiche pas
    Bonjour à tous ;-)

    j'ai fais une petite page en php qui permet de récupéré les données dans une base sql et de les transférer dans un fichier ecxel.

    je poste le code :
    Code php : 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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    <?php
        // à elle seule, la ligne suivante suffit à envoyer le résultat du script dans une feuille Excel
        header("Content-type: application/vnd.ms-excel");
        // la ligne suivante est facultative, elle sert à donner un nom au fichier Excel
       header("Content-Disposition: attachment; filename=Adherents_SMBC.xls");
       //require_once("file:///I|/script php/gestion adherent/conf_int.php");
       // La suite est une simple requête php-mysql. On interroge la table utilisée dans l'exemple précédent. 
       mysql_connect("");
       mysql_select_db("");
     
        $requete=mysql_query("SELECT 
    								adherents.nom,
    								adherents.prenom,
    								adherents.adresse1,
    								adherents.adresse3,
    								adherents.codepostal,
    								adherents.date_naissance,
    								adherents.email,
    								adherents.certificat_medical,		
    								
    							
    								
    								famille.famille,
    								
    								source.source,
    								
    								compte.credit
    								
    								FROM adherents, famille, source, compte
    								
    								WHERE adherents.famille = famille.id AND adherents.source=source.id AND adherents.id=compte.adherent ORDER BY nom");
    									</script>";
    
    
      print '<table border=1>
    
                <TR><TD><strong><center>Nom</center></strong></TD><TD><strong><center>Prénom</center></strong></TD><TD><strong><center>Adresse</center></strong></TD><TD><strong><center>Ville</center></strong></TD><TD><strong><center>CP</center></strong></TD><TD><strong><center>DDN</center></strong></TD><TD><strong><center>E-mail</center></strong></TD><TD><strong><center>CM</center></strong></TD><TD><strong><center>Disciplines</center></strong></TD><TD><strong><center>T</center></strong></TD><TD><strong><center>Réglé</center></strong></TD></TR><TR>';
    
        // lecture du contenu de la requête avec 2 boucles imbriquées; par ligne et par colonne
       for ($ligne=0 ; $ligne<mysql_num_rows($requete);$ligne++)
        {
             for ($colonne = 0;$colonne < 11 ; $colonne++)  
                 {
                     print '<TD>' .mysql_result($requete,$ligne,$colonne).  '</TD>';   
                 }
    			 
          print '</TR>';
         }
    	// echo mysql_error(); 
        print '</TABLE>';
     mysql_close();
    ?>

    je dois avoir un problème dans ma requête car si tous les champs sont remplis il n'y a pas de problème mais si le champ d'une des tables famille source ou compte est vide il ne m'affiche même pas les données de la table adhérent.

    si quelqu'un a une idée je suis preneur merci d'avance

  2. #2
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    salut les jointures s'écrivent depuis plus de 10 ans avec l'un des opérateurs join...

    la , représente un inner join donc ça ne sort que les données commune à la table à gauche et à droite de l'opérateur... si tu veux ne rapatrié des données même si dans la table de gauche elles n'existent pas alors c'est un left join...

    ta requête version actuelle plus lisible et formelle:
    Code sql : 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
    SELECT
      a.nom as nom,
      a.prenom as prenom,
      a.adresse1 as adresse1,
      a.adresse3 as adresse2,
      a.codepostal as codepostal,
      a.date_naissance as date_naissance,
      a.email as email,
      a.certificat_medical as certificat_medical,
      f.famille as famille,
      s.source as source,
      c.credit as credit
    FROM adherents a
    inner join famille f on a.famille = f.id
    inner join source s on a.source=s.id
    inner join compte c on c.adherent=a.id
    ORDER BY nom"
    c'est la traduction littérale et meilleure de ta requête...

    à noter que tu n'as pas de restriction sur les adhérents donc ça te les sort tous... s'il ont des données dans famille, source et compte...
    s'ils n'en ont pas forcément et que tu veux les voir quand même, alors il faut remplacer les inner par des left...

  3. #3
    Membre à l'essai
    Inscrit en
    Août 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 23
    Points : 17
    Points
    17
    Par défaut
    je te remercie

    c'est vrai que comme ça c'est beaucoup plus lisible et il est vrai que le script que j'adapte date depuis un certain temps je vais me pencher sur la nouvelle syntaxe.

    merci encore

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 862
    Points : 53 013
    Points
    53 013
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par ericd69 Voir le message
    salut les jointures s'écrivent depuis plus de 10 ans avec l'un des opérateurs join...
    Exactement 20 ans... Cela date du SQL2 de 1992 !!!

    A +

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

Discussions similaires

  1. [MySQL] Résultat requête au format JSON, afficher que les champs vide ou null
    Par ilanb dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 12/02/2014, 14h00
  2. [VxiR2] Afficher les Champs vides
    Par tunis71187 dans le forum Deski
    Réponses: 3
    Dernier message: 02/12/2011, 08h31
  3. [MySQL] PHP/SQL n'afficher que les champs vides
    Par rouly dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 03/02/2010, 05h47
  4. [stringtokenizer] probleme avec champs vides
    Par gege2mars dans le forum Langage
    Réponses: 9
    Dernier message: 30/06/2004, 08h25
  5. tri avec les champs vides en dernier
    Par r-zo dans le forum Requêtes
    Réponses: 11
    Dernier message: 03/09/2003, 13h40

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