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 :

[Requete] Savoir si un champ est remplit


Sujet :

Requêtes MySQL

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2002
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 46
    Points : 38
    Points
    38
    Par défaut [Requete] Savoir si un champ est remplit
    Bonjour,

    Je voudrais savoir si ce que je pense est possible et si oui comment:

    J'ai une table que voici:

    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
     
    #
    # Structure de la table `lyrics`
    #
     
    CREATE TABLE lyrics (
      id_lyrics int(10) NOT NULL auto_increment,
      name_lyrics varchar(30) NOT NULL default '',
      year_lyrics int(4) NOT NULL default '0',
      compo_lyrics varchar(50) NOT NULL default '',
      txt_lyrics text NOT NULL,
      tradtxt_lyrics text,
      PRIMARY KEY  (id_lyrics)
    ) TYPE=MyISAM;
    # --------------------------------------------------------
    Cette table contient des paroles de chansons anglophone ainsi que (si elle est entrée) leur traduction française ("tradtxt_lyrics").

    Le but pour commencer est d'afficher dans un tableau HTML de la page lyrics.php le nom de la chanson et son interpret avec un petit drapeau pour savoir si un traduction existe. Je voudrais juste savoir si la valeur de "tradtxt_lyrics" est à null (retour en forme de booléan) et s'il est possible de le faire en meme temps que la selection des donnée.

    Cela m'éviterais de faire une requete de test pour chaque éléments séléctionner.

    Je sais pas si je suis assez clair?

    Merci

    Léonard

    Exemple de retour de requete

    id_lyrics - compo_lyrics name_lyrics - tradtxt_lyrics

    1 - Eric Clapton - Change the World - 1

  2. #2
    Membre régulier
    Inscrit en
    Février 2003
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 109
    Points : 111
    Points
    111
    Par défaut
    tu devrait essayer avec l'operateur ISNULL() qui renvoie un boolean si ton champ est à NULL.

    ça donnerait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Select name_lyrics , compo_lyrics, ISNULL(tradtxt_lyrics)
    from lyrics;
    bon courage

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2002
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 46
    Points : 38
    Points
    38
    Par défaut
    Merci Beaucoup ça marche correctement!

    Pour info, voici le bout de code que j'ai vite écrit pour tester!

    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
     
    <?php
     
          require("./admin/conbase.inc");
     
          $query ="Select id_lyrics, name_lyrics, ISNULL(tradtxt_lyrics) from lyrics";
     
          $req = mysql_query($query);// or die ("Erreur de Requete");
     
           print("<table>\n");
     
     
           while( $contenu = mysql_fetch_array ($req))
          {
            if($contenu[tradtxt_lyrics]!==1)
             {
               print("<tr>\n<td><a href=\"afflyrics.php?id=".$contenu[id_lyrics]."\">".$contenu[name_lyrics]."</a></td><td>Oui</td>\n</tr>");
             }
            else
             {
               print("<tr>\n<td><a href=\"afflyrics.php?id=".$contenu[id_lyrics]."\">".$contenu[name_lyrics]."</a></td><td>Non</td>\n</tr>");
             }
     
          }
           print("\n</table>\n");
     
          mysql_close();
    ?>

  4. #4
    Nouveau membre du Club
    Inscrit en
    Avril 2002
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 46
    Points : 38
    Points
    38
    Par défaut En fait, ça marche pas!
    Lorsque je fais un print($contenu[txttrad_lyrics]) il n'y a pas de valeur!

    Faut-il que je stock les valeurs de retour de ISNULL(txttrad_lyrics) dans un tableau par exemple?

    Merci

  5. #5
    Membre régulier
    Inscrit en
    Février 2003
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 109
    Points : 111
    Points
    111
    Par défaut
    utilise un alias pour recuperer la valeur de isnull();

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
     
    $query ="Select id_lyrics, name_lyrics, ISNULL(tradtxt_lyrics)As Francais
     from lyrics"; 
    $req = mysql_query($query);
    while( $contenu = mysql_fetch_array ($req)) 
     
    (...)
     
    print($contenu[Francais])
    il faut toujours faire ça pour recuperer les valeurs calculé comme COUNT, MAX, etc...

  6. #6
    Nouveau membre du Club
    Inscrit en
    Avril 2002
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 46
    Points : 38
    Points
    38
    Par défaut toujours rien!
    Ok, seulement maintenant, qu'il y aie des données ou pas il me renvoit de toute façon 0

    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
     
          <?php
     
     
          //Connection à la base de donnée
          require("./admin/conbase.inc");
     
          $query ="Select id_lyrics, name_lyrics, ISNULL(tradtxt_lyrics) As french from lyrics";
     
          $req = mysql_query($query);// or die ("Erreur de Requete");
     
           print("<table>\n");
     
     
           while( $contenu = mysql_fetch_array ($req))
          {
          print("<b>".$contenu[french]."</b>");     //test d'affichage
     
     
            if($contenu[french]==0)
             {
               print("<tr>\n<td><a href=\"afflyrics.php?id=".$contenu[id_lyrics]."\">".$contenu[name_lyrics]."</a></td><td>Oui</td>\n</tr>\n");
             }
            else
             {
               print("<tr>\n<td><a href=\"afflyrics.php?id=".$contenu[id_lyrics]."\">".$contenu[name_lyrics]."</a></td><td>Non</td>\n</tr>");
             }
     
          }
           print("\n</table>\n");
     
          mysql_close();
          ?>

  7. #7
    Membre régulier
    Inscrit en
    Février 2003
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 109
    Points : 111
    Points
    111
    Par défaut
    POur que ça marche, il faut que la valeur dans ta table soit [NULL] et pas seulement vide, sinon, il considere que ce n'est pas nul.
    Arrange toi donc pour que ce soit la valeur null qui soit entré dans ta table quand il n'y a pas de traduction...

  8. #8
    Nouveau membre du Club
    Inscrit en
    Avril 2002
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 46
    Points : 38
    Points
    38
    Par défaut
    c'est ce que j'ai fais, voici ma fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function addlyr($titre,$annee,$compositeur,$text,$trad)
     {
      if(strlen($trad)<5)
      {
       $trad=NULL;
      }
     $sql = "INSERT INTO lyrics VALUES(NULL, '$titre', '$annee', '$compositeur', '$text', '$trad')";
     mysql_query($sql);
     }

  9. #9
    Nouveau membre du Club
    Inscrit en
    Avril 2002
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 46
    Points : 38
    Points
    38
    Par défaut Autant pour moi!
    Ca y est, je ne faisait pas correctement ma requete SQL.


    Comme ça, c'est mieux! (le code n'est pas très optimisé, mais je verrai ça plus tard!)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    function addlyr($titre,$annee,$compositeur,$text,$trad)
     {
      if(strlen($trad)<5)
      {
       $sql = "INSERT INTO lyrics VALUES(NULL, '$titre', '$annee', '$compositeur', '$text', NULL)";
      }
      else
      {
      $sql = "INSERT INTO lyrics VALUES(NULL, '$titre', '$annee', '$compositeur', '$text', '$trad')";
      }
     
     mysql_query($sql);
     }
    Un grand merci à toi buffyann

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

Discussions similaires

  1. Comment savoir si un champ est compteur par req
    Par nanou9999 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 14/09/2006, 12h18
  2. [MySQL] Savoir si un champ est NULL ou pas
    Par Keulig dans le forum Langage SQL
    Réponses: 10
    Dernier message: 06/02/2006, 18h32
  3. Réponses: 17
    Dernier message: 25/04/2005, 09h49
  4. Savoir si un champs est pk ou fk
    Par mic79 dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 18/11/2004, 15h38
  5. [Access] Comment savoir qu'un champs est vide ?
    Par Oberown dans le forum ASP
    Réponses: 9
    Dernier message: 25/10/2004, 10h47

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