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

Langage PHP Discussion :

[Tableaux] Test variable à vide


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 49
    Points : 37
    Points
    37
    Par défaut [Tableaux] Test variable à vide
    Bonjour,

    Développeur débutant en PHP, j'ai écrit le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     switch ($choixrecherche) {
        case 1:                        
         $reponse_fontaine = mysql_query("SELECT * FROM table WHERE nom like '%$recherche%' ");
          break;
        case 5:
        $reponse_bio = mysql_query("SELECT * FROM table2 WHERE nom like '%$recherche%' ");
          break;
    }
    Puis dessous, j'ai ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     if ($reponse_fontaine <> "");
    {
      while ($donnees = mysql_fetch_array($reponse_fontaine))
        {
          "Traitement données"                
        }
    }                  
    if ($reponse_bio <> "");
    {
       while ($donnees = mysql_fetch_array($reponse_bio))
       {
         "Traitement données"            
       }
    }
    Mon problème est que si par exemple je passe dans le cas "1", la requête de traitement des données pour le cas 5 est quand même effectuée malgré mon test sur la possibilité que la variable $reponse_bio soit à vide !

    Comment fait-on pour résoudre un tel problème ?

    Merci !

  2. #2
    Membre confirmé
    Avatar de FMaz
    Inscrit en
    Mars 2005
    Messages
    643
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 643
    Points : 640
    Points
    640
    Par défaut
    Hum, tu parle de la requete suivante ? :
    SELECT * FROM table2 WHERE nom like '%$recherche%'


    Comment tu sais qu'elle est exécutée ?

    Pour tester si une variable est vide, utilise la fonction empty():

    if(empty($reponse_fontaine))

    L'opérateur "<>" c'est très laid... À vrai dire je n'ai pas vu ca depuis Visual Basic 6. Tu est sur de ne pas confondre avec "!=" ?

    EDIT:
    Je viend de consulter mon gros livre delamortquitue et il m'a confirmé que <> était bel et bien la même chose que !=, désolé, mon erreur. Mais essaie quand meme avec empty() ... ou encore !isset() , vu que dans ton cas, la variable est carrément non déclarée.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 49
    Points : 37
    Points
    37
    Par défaut
    Bonsoir,

    Si, mes variables sont déclaréesplus haut avec le code suivant :
    code:
    $reponse_fontaine = " ";
    $reponse_bio = " ";

    Cela a t-il une influence sur la solution que tu m'a apporté à savoir le !isset ou le empty ?

    Merci.

  4. #4
    Membre confirmé
    Avatar de FMaz
    Inscrit en
    Mars 2005
    Messages
    643
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 643
    Points : 640
    Points
    640
    Par défaut
    Heu, en effet, mais alors, si tu as déclaré tes variables en les innitialisants avec un espace, pourquoi tu teste si elle sont vide ?

    " " n'est pas égal à "" ...

  5. #5
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Citation Envoyé par hari37
    Bonsoir,

    Si, mes variables sont déclaréesplus haut avec le code suivant :
    code:
    $reponse_fontaine = " ";
    $reponse_bio = " ";

    Cela a t-il une influence sur la solution que tu m'a apporté à savoir le !isset ou le empty ?

    Merci.
    Si tu les initialises avec un espace (donc non vide) et que après tu testes si les chaînes sont vides ça va pas trop le faire...

  6. #6
    Membre confirmé
    Avatar de FMaz
    Inscrit en
    Mars 2005
    Messages
    643
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 643
    Points : 640
    Points
    640
    Par défaut
    Citation Envoyé par JWhite
    un langage (sans u)
    ^^ on y pense pas, mais c'est vrai :-\

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 49
    Points : 37
    Points
    37
    Par défaut
    Salut,

    En fait, je veux tester que si la requete est exécutée et quelle retourne quelque chose alors, la variable $reponse_fontaine ne doit pas être à vide, donc, je teste si elle est différente de vide, alors, je fais mon traitement de données, sinon, je ne fais rien...

    Je ne sais pas si j'ai été très clair là.....

  8. #8
    Membre confirmé
    Avatar de FMaz
    Inscrit en
    Mars 2005
    Messages
    643
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 643
    Points : 640
    Points
    640
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if ($result = mysql_query("SELECT * FROM table")){
        //La requête est valide
        if(mysql_num_rows($result) > 0){
            //La requête retourne quelque chose
        }
    }
    ou, dans ton cas (a confirmer)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if ($reponse_fontaine){
        //faire le traitement.
    }

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 49
    Points : 37
    Points
    37
    Par défaut
    C'est cool, c'est pile ce qu'il me fallait !

    Merci beaucoup !!

  10. #10
    Membre confirmé
    Avatar de FMaz
    Inscrit en
    Mars 2005
    Messages
    643
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 643
    Points : 640
    Points
    640
    Par défaut
    Je savais bien que c'était les <> qui clochaient ...

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

Discussions similaires

  1. [HTML 5] Test si variable vide ou pas dans code HTML
    Par Ryadus dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 03/05/2010, 14h49
  2. Test sur variable "vide"
    Par tlegentil dans le forum Langage
    Réponses: 3
    Dernier message: 20/10/2008, 10h00
  3. [Tableaux] variable vide qui devrait pas :p
    Par Hayabusa dans le forum Langage
    Réponses: 3
    Dernier message: 28/06/2007, 10h38
  4. test variable vide
    Par vince2005 dans le forum Langage
    Réponses: 2
    Dernier message: 02/10/2006, 15h00
  5. [Tableaux] test performance nom de variable
    Par maximenet dans le forum Langage
    Réponses: 5
    Dernier message: 28/07/2006, 14h30

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