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 :

variable qui n'existe pas..mais existe quand même !


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut variable qui n'existe pas..mais existe quand même !
    Bonjour,

    j'ai beau essayer de débuguer, je n'y comprends rien donc je me tourne vers le forum...

    Voici le code :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    echo "<br/>page (index) :".$page."<br/>";
    if ($page==NULL) echo "page NULL<br/>";
    if(!isset($page))
    {
    ...
    else
    {
     
    	echo "<br/>page existe<br/>";
    ...

    et ce que ça affiche
    page (index) :
    page NULL

    page existe
    Si quelqu'un a une explication, je prends !

  2. #2
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Salut,

    T'es sûr que ton code ne se résume qu'à ce qui est affiché ?
    Chez moi, ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    echo "<br/>page (index) :".$page."<br/>";
    if ($page === null) echo "page NULL<br/>";
    if( ! isset($page))
    {
        echo "<br/>page n'existe pas<br/>";
    }
    else
    {
        echo "<br/>page existe<br/>";
    }
    produit cela :
    page (index) :
    page NULL

    page n'existe pas

  3. #3
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    ça me parraissait bizarre, alors j'ai fait 2-3 tests. A priori, le comportement que tu obtiens correspond au cas où la variable $page est renseignée à "".

    Essaye de faire un var_dump($page) pour voir.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  4. #4
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut
    Le var_dump donne
    string '' (length=0)
    mais vu que if ($page==NULL) echo "page NULL<br/>"; donne NULL ???

    et rawscr a probablement raison à propos d'un code "caché" ; il va falloir que je passe encore du temps dessus...

  5. #5
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Concernant le bout if ($page==NULL) echo "page NULL<br/>"; :
    Bienvenue dans le monde merveilleux des variables faiblement typées ! Lorsque les 2 côtés de la comparaison ne sont pas du même type, PHP applique des conversions lors des comparaisons. Par exemple, si tu compare un nombre et une chaine, il va convertir le nombre pour obtenir la chaine équivalente et ensuite comparer les deux chaines.

    Dans ton cas, on rentre dans le cas Chaine / Null :
    null ou chaîne de caractères / string : Convertit NULL en "", comparaison numérique ou lexicale
    Comparaison avec plusieurs types

    Donc quand tu fais $page == NULL, comme $page est une chaine, il fait en fait $page == "".

    Si tu veux faire une comparaison exacte (y compris sur le type), tu peux essayer $page === NULL.

    Sinon, regarde du côté de la fonction empty, qui teste si la variable existe ou pas et si elle vaut une valeur vide (null, "", 0, ....)
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  6. #6
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut
    En effet, si je fais if ($page===NULL) echo "page NULL<br/>";, ce n'est plus NULL, donc rawscr devait avoir raison ; reste à trouver....(quand j'aurai trouvé )

  7. #7
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Si tu n'as pas d'affectation de $page, ça peut être une affectation indirecte, avec quelque chose comme extract($_POST) par exemple.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

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

Discussions similaires

  1. Créer une variable de session si elle n'existe pas
    Par Augustule dans le forum Langage
    Réponses: 2
    Dernier message: 09/05/2011, 17h46
  2. Réponses: 4
    Dernier message: 08/09/2008, 11h06
  3. [Tableaux] variable qui ne passe pas
    Par oceane751 dans le forum Langage
    Réponses: 5
    Dernier message: 31/12/2005, 02h56
  4. La FAQ qui ne marche pas mais pourquoi?
    Par Antoine_1977 dans le forum Access
    Réponses: 3
    Dernier message: 27/09/2005, 16h22

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