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 :

Fonction if qui ne fonctionne pas


Sujet :

Langage PHP

  1. #1
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut Fonction if qui ne fonctionne pas
    Salut,

    J'ai écris le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (($hauteur < 400) || ($largeur < 600))
       {echo "Inférieur";}
       else
       {echo "Supérieur";}
    Et si j'ai $hauteur=800 et $largeur=1280, j'ai le message qui apparaît "Inférieur"...

    Avez-vous une idée ou se trouve mon erreur. ???

    @+.

  2. #2
    Membre éclairé Avatar de tigunn
    Homme Profil pro
    Développeur de bug
    Inscrit en
    Janvier 2003
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de bug

    Informations forums :
    Inscription : Janvier 2003
    Messages : 608
    Points : 658
    Points
    658
    Par défaut
    Salut,
    Présenté ainsi, c'est déroutant; difficile de faire plus simple
    Il faudrait un peu plus d'informations, de code ... Tu es sûr de la valeur de $largeur et $hauteur (affiche les avant la condition pour voir).

  3. #3
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 868
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    Par défaut
    Je viens de tester :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $hauteur = 800;
    $largeur = 1280;
    if (($hauteur < 400) || ($largeur < 600)) {
      echo "Inférieur";
    }
    else {
      echo "Supérieur";
    }
    Et ça m'affiche bien "Supérieur".

    Es-tu sûr des valeurs de $largeur et $hauteur ?

  4. #4
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Salut,

    Le script complet est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ...
    <SCRIPT LANGUAGE="JavaScript">
       EcranHaut = screen.height;
       EcranLarg = screen.width;
    </SCRIPT>
    ...
    $hauteur = "<script>document.write(EcranHaut);</script>";
    $largeur = "<script>document.write(EcranLarg);</script>";
    if (($hauteur < 400) || ($largeur < 600))
       {echo "Hauteur : ".$hauteur." - Largeur : ".$largeur." - Inférieur";}
       else
       {echo "Supérieur";}
    ...
    Et j'obitents à l'affichage :
    "Hauteur : 800 - Largeur : 1280 - Inférieur"

    ???

  5. #5
    Membre éclairé
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Points : 673
    Points
    673
    Par défaut
    Bonjour,

    un te renvoie quoi ?

    il doit être considéré comme un string et non un int... d'où le mauvais résultat

  6. #6
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Cela m'affiche
    string(43) "800"

  7. #7
    Membre éclairé
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Points : 673
    Points
    673
    Par défaut
    Et tu es obligé d'utiliser du php pour ça ?

    tu peux pas faire tests en js ?

  8. #8
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 868
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    Par défaut
    Oui, et maintenant, regarde la source, pas la page web. Tu verras ce que tu as dans ton var_dump().

  9. #9
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Citation Envoyé par Bisûnûrs Voir le message
    Oui, et maintenant, regarde la source, pas la page web. Tu verras ce que tu as dans ton var_dump().
    Je ne comprends pas !!!

    Citation Envoyé par syl2095 Voir le message
    Et tu es obligé d'utiliser du php pour ça ?

    tu peux pas faire tests en js ?
    Peut-être pas mais je ne sais pas comment faire ?

  10. #10
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 868
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    Par défaut
    Tu affiches ton var_dump() dans ton navigateur. Ton navigateur interprète une partie de ton var_dump(). Donc une fois que tu as fait ton var_dump(), affiche la source de la page.

  11. #11
    Membre éclairé Avatar de tigunn
    Homme Profil pro
    Développeur de bug
    Inscrit en
    Janvier 2003
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de bug

    Informations forums :
    Inscription : Janvier 2003
    Messages : 608
    Points : 658
    Points
    658
    Par défaut
    C'est pas un problème de portée de variable plutôt?
    Cela me semblait bizarre que tu puisse récupérer la valeur d'une variable déclarée dans un autre bloc JS. Si je fais var_dump($hauteur) moi j'obtiens:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string '<script>document.write(EcranHaut);</script>' (length=43)
    D'où problème
    mon test:
    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
    <SCRIPT LANGUAGE="JavaScript">
       EcranHaut = screen.height;
       EcranLarg = screen.width;
    </SCRIPT>
    <?php
    $hauteur = "<script>document.write(EcranHaut);</script>";
    $largeur = "<script>document.write(EcranLarg);</script>";
    var_dump($hauteur);
    $largeur=(int)$largeur;
    $hauteur=(int)$hauteur;
    if (($hauteur < 400) || ($largeur < 600))
       {echo "Hauteur : ".$hauteur." - Largeur : ".$largeur." - Inférieur";}
       else
       {echo "Supérieur";}
    ?>
    Rendu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string '<script>document.write(EcranHaut);</script>' (length=43)
    Hauteur : 0 - Largeur : 0 - Inférieur

  12. #12
    Membre éclairé
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Points : 673
    Points
    673
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <SCRIPT LANGUAGE="JavaScript">
       EcranHaut = screen.height;
       EcranLarg = screen.width;
     
       if (( EcranHaut < 400) || (EcranLarg < 600))
       {alert('inferieur');}
       else
       {alert('superieur');}
    </SCRIPT>

  13. #13
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Citation Envoyé par Bisûnûrs Voir le message
    Tu affiches ton var_dump() dans ton navigateur. Ton navigateur interprète une partie de ton var_dump(). Donc une fois que tu as fait ton var_dump(), affiche la source de la page.
    J'obtiens le message suivant :
    Warning: Wrong parameter count for var_dump() in /var/www/v/vv/vv8/vv87.perso.sfr.fr/public_html/index.php on line 43

    Citation Envoyé par syl2095 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <SCRIPT LANGUAGE="JavaScript">
       EcranHaut = screen.height;
       EcranLarg = screen.width;
     
       if (( EcranHaut < 400) || (EcranLarg < 600))
       {alert('inferieur');}
       else
       {alert('superieur');}
    </SCRIPT>
    Oui mais pour ma part, je voudrai mettre du code dans les deux conditions du if... donc je fais comment ???

  14. #14
    Membre éclairé Avatar de tigunn
    Homme Profil pro
    Développeur de bug
    Inscrit en
    Janvier 2003
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de bug

    Informations forums :
    Inscription : Janvier 2003
    Messages : 608
    Points : 658
    Points
    658
    Par défaut
    Citation Envoyé par zoom61 Voir le message
    J'obtiens le message suivant :
    Warning: Wrong parameter count for var_dump() in /var/www/v/vv/vv8/vv87.perso.sfr.fr/public_html/index.php on line 43
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo '<pre>';
    print_r($hauteur);
    echo '</pre>';
    Je préfère. A placer juste avant ton test.

  15. #15
    Membre éclairé
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Points : 673
    Points
    673
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <SCRIPT LANGUAGE="JavaScript">
       EcranHaut = screen.height;
       EcranLarg = screen.width;
     
       if (( EcranHaut < 400) || (EcranLarg < 600))
       {
    # code si inferieur
    }
       else
       {
    # code si superieur
    }
    </SCRIPT>
    Qu'est ce que tu veux faire exactement ?

  16. #16
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Si je vais un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo gettype($hauteur);
    J'obtiens : String

    Si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    settype($hauteur, "integer");
    J'obtiens : 0

    Que dois-je faire ?

  17. #17
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2010
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2010
    Messages : 80
    Points : 169
    Points
    169
    Par défaut
    Citation Envoyé par zoom61 Voir le message
    Salut,

    Le script complet est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ...
    <SCRIPT LANGUAGE="JavaScript">
       EcranHaut = screen.height;
       EcranLarg = screen.width;
    </SCRIPT>
    ...
    $hauteur = "<script>document.write(EcranHaut);</script>";
    $largeur = "<script>document.write(EcranLarg);</script>";
    if (($hauteur < 400) || ($largeur < 600))
       {echo "Hauteur : ".$hauteur." - Largeur : ".$largeur." - Inférieur";}
       else
       {echo "Supérieur";}
    ...
    Et j'obitents à l'affichage :
    "Hauteur : 800 - Largeur : 1280 - Inférieur"

    ???
    Bonjour,

    vous mélangez php et javascript qui ont deux contextes d'exécution différents.
    Ici, PHP (qui s'exécute sur le serveur, donc en premier) va interpréter votre page et générer le HTML suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ...
    <SCRIPT LANGUAGE="JavaScript">
       EcranHaut = screen.height;
       EcranLarg = screen.width;
    </SCRIPT>
    ...
    Hauteur : <script>document.write(EcranHaut);</script> - Largeur : <script>document.write(EcranLarg);</script> - Inférieur
    ...
    parce que vu de PHP, les variable $hauteur et $largeur ont le contenu textuel.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $hauteur = "<script>document.write(EcranHaut);</script>";
    $largeur = "<script>document.write(EcranLarg);</script>";
    ces variables contenant du texte vont ensuite être comparées à des valeurs numériques, mais vu de PHP la comparaison va obliger PHP à convertir la chaine en numérique, ce qu'il n'arrivera pas à faire et donnera donc la valeur 0 à comparer à vos variables $hauteur et $largeur, ce qui fait que la condition suivante est vérifiée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (($hauteur < 400) || ($largeur < 600))
    Lorsque PHP a généré sa page, elle est ensuite envoyée au navigateur, qui lui, va réaliser la substitution à l'affichage du contenu des balises <script> générées par PHP.

    C'est ce que vous pouvez vérifier à l'affichage car, de fait vous avez bien les valeurs numériques affichées. Par contre, en explorant le code HTML généré vous devriez pouvoir observer que ces valeurs numériques ne sont pas en dans le code HTML, mais plutot les balises de <script> générées.

    Tout ça pour dire que côté PHP, vous ne pourrez pas accéder de cette manière à la taille de votre viewport. Il faudra peut-être transmettre cette information lors de l'envoi de la requete HTTP au serveur pour que PHP puisse la traiter.

    HTH.

  18. #18
    Membre éclairé Avatar de tigunn
    Homme Profil pro
    Développeur de bug
    Inscrit en
    Janvier 2003
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de bug

    Informations forums :
    Inscription : Janvier 2003
    Messages : 608
    Points : 658
    Points
    658
    Par défaut
    Bon, déjà tu ne peux pas faire cela ainsi: Puisque tu ne peux récupérer les valeurs de EcranHaut et EcranLarg; ce sont des variables javascript (définit après l'interprétation du php sur le serveur, côté client).
    Deux solutions soit tu stocke ces infos dans un formulaire en champs hidden, soit tu passe par de l'AJAX.

    MAIS AVANT TOUT: je rejoins syl2095, qu'est ce que tu veux faire comme traitement selon la résolution? Cela sera peut-^tre plus facile à faire en javascript.

    Edit: ah j'ai été pris de vitesse : )

Discussions similaires

  1. Fonction recursive qui ne fonctionne pas
    Par Hightuxdotnet dans le forum Langage
    Réponses: 3
    Dernier message: 18/02/2009, 16h38
  2. fonction confirm() qui ne fonctionne pas sur IE7
    Par JackBeauregard dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 14/06/2008, 09h47
  3. Fonction mysql qui ne fonctionne pas pour un ancien postgreIste
    Par floreasy dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 15/01/2008, 18h49
  4. [SQL] Fonction SUM qui ne fonctionne pas !
    Par nigg4z dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 11/10/2007, 16h20
  5. Fonction While {} qui ne fonctionne pas
    Par zoom61 dans le forum Langage
    Réponses: 3
    Dernier message: 15/11/2006, 12h17

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