8791 sujets

Développement web côté serveur, CMS

Bonjour,

J'ai une table MACHIN avec les champs
Nom
Prenom
email

email est un champ NULL.

Si la personne ne rempli pas ce champ, comment faire dans ma requête SQL pour que ce champ n'apparaisse pas et évite ainsi un "trou" dans mon affichage ?

Je présice que je ne suis pas un pro du PHP/SQL et que je fais faire le travail par Dreamweaver au niveau du PHP, les requêtes mySQL plus complexe je les écris moi par contre.

Merci pour votre réponse !!!!!
Modifié par Bjorken (20 Apr 2009 - 15:24)
Ca me retourne un message d'erreur au niveau de la syntaxe :


SELECT *
FROM adresse
WHERE adresse.mail is not null
Euh... Quand tu écris
Bjorken a écrit :
email est un champ NULL.
1) c'est email ou c'est mail le nom du champ ?
2) est-ce que quand tu affiches les valeurs de la table (via PHPMyAdmin) tu as bien NULL de temps en temps ?
3) est-ce que dans la structure de la table tu as bien null=null et Défaut=NULL ?

A lire : Mysql : Travailler avec la valeur NULL
Modifié par Heyoan (20 Apr 2009 - 10:05)
Désolé, alors ça marche, mais ça n'affiche pas l'enregistrement qui a le mail vide.
SELECT *
FROM adresse
WHERE adresse.mail IS NOT NULL


Ca m'affiche mes 2 enregistrements qui ont un mail mais le 3e qui a juste nom et prenom ne s'affiche pas, ce qui est logique puisque la condition d'affichage tout entière est soumise au champ mail.

Ce que je souhaiterais c'est ne pas faire afficher le CHAMP dans la page PHP si celui-ci est vide.
Arf ! C'est tellement plus facile quand c'est exprimé clairement ! Smiley langue

Encore un petit effort : comment affiches-tu les résultats ? Avec une table ?

Si oui tu pourrais faire
SELECT nom, prenom, COALESCE(mail, ' ')
FROM adresse
En fait c'est Dreamweaver qui génère le code pour PHP et SQL. Moi j'entre juste les requêtes SQL dans la fenêtre de saisie.
Pour l'affichage dans la page PHP voici le code généré :

<body>
<?php do { ?>
  <p><?php echo $row_Recordset1['Nom']; ?>
    <?php echo $row_Recordset1['Prenom']; ?>
  </p>
  <p><?php echo $row_Recordset1['mail']; ?></p>
  <?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?>
</body>
</html>
<?php
mysql_free_result($Recordset1);
?>


Je ne connais pas ce COALESCE ??
J'ai essayé comme ça :

SELECT adresse.Nom, adresse.Prenom, COALESCE(adresse.mail , '&nbsp;')
FROM adresse

Mais j'ai un message d'erreur de syntaxe. Smiley confus
Bjorken a écrit :
En fait c'est Dreamweaver qui génère le code pour PHP et SQL. Moi j'entre juste les requêtes SQL dans la fenêtre de saisie.
C'est sûr que ça n'aide pas ! Smiley murf

Bon, en supposant que j'ai bien compris ce que tu veux faire :
<body>
<?php do { ?>
  <p><?php echo $row_Recordset1['Nom']; ?>
    <?php echo $row_Recordset1['Prenom']; ?>
  </p>
  <?php if($row_Recordset1['mail']) { ?>
     <p><?php echo $row_Recordset1['mail']; ?></p>
  <?php } ?>
  <?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?>
</body>
</html>
<?php
mysql_free_result($Recordset1);
?>
Merci pour ton aide Smiley smile

Ca marche Smiley smile
Donc tu as mis l'affichage du mail sous forme de condition.
Je garde précieusement ces lignes de code Smiley smile

Encore merci Smiley smile

C'est vrai que ça n'aide pas de passer par Dream. Ca va bien tant que les choses restent à peu près simples, mais dès que ça demande d'entrer manuellement dans le code c'est galère.

Le problème c'est que bon nombre de clients refusent des devis qui intègreraient le tarif d'un développeur, donc du coup le graphiste que je suis donc un minimum faire des choses dynamiques avec "les moyens du bord".

Mais bon c'est pénible quand c'est pas ton métier.

Bon, encore merci Smiley smile
Bjorken a écrit :
Mais bon c'est pénible quand c'est pas ton métier.
Yep ! Smiley smile !

Si tu considères que ce sujet est [Résolu] merci de l'indiquer en éditant ton premier post et en modifiant le titre. Smiley cligne