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 :

Pb de non détection d'un test !


Sujet :

Langage PHP

  1. #1
    Membre expérimenté Avatar de shkyo
    Homme Profil pro
    Développeur Robotique - Administrateur systèmes
    Inscrit en
    Juin 2003
    Messages
    841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Robotique - Administrateur systèmes

    Informations forums :
    Inscription : Juin 2003
    Messages : 841
    Points : 1 474
    Points
    1 474
    Par défaut Pb de non détection d'un test !
    Bonjour à tous, je vous montre mon code et j'explique mon problème ensuite, ce sera plus simple...

    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
     
    $num_lg=4;
    $format='m/Y';
    for ($i=4;$i<35;$i++) {
    	echo "<tr><td class=\"white\"><p id=\"pb\">".($i-3)."/".date($format)."</p></td>";
    	if ($compteur_eau[$i][3]>=0) {
    		echo "<td class=\"darkblue\"><p align=\"center\"><input type=\"text\" name=\"lg".$num_lg."cl2\" value=\"".$compteur_eau[$i][2]."\" size=\"5%\"></p></td>";
    	} elseif (empty($compteur_eau[$i][2]) || $compteur_eau[$i][3]<0) {
    		echo "<td class=\"red\"><p align=\"center\"><input type=\"text\" name=\"lg".$num_lg."cl2\" value=\"".$compteur_eau[$i][2]."\" size=\"5%\"></p></td>";
    	}
    	echo "<td class=\"verywhite\"><p align=\"center\"><input type=\"text\" name=\"lg".$num_lg."cl3\" value=\"".$compteur_eau[$i][3]."\" size=\"4%\"></p></td>";
    	if ($compteur_eau[$i][5]>=0) {
    		echo "<td class=\"darkblue\"><p align=\"center\"><input type=\"text\" name=\"lg".$num_lg."cl4\" value=\"".$compteur_eau[$i][4]."\" size=\"5%\"></p></td>";
    	} else {
    		echo "<td class=\"red\"><p align=\"center\"><input type=\"text\" name=\"lg".$num_lg."cl4\" value=\"".$compteur_eau[$i][4]."\" size=\"5%\"></p></td>";
    	}
    	//<td class=\"darkblue\"><p align=\"center\"><input type=\"text\" name=\"lg".$num_lg."cl4\" value=\"".$compteur_eau[$i][4]."\" size=\"5%\"></p></td>
    	echo "<td class=\"verywhite\"><p align=\"center\"><input type=\"text\" name=\"lg".$num_lg."cl5\" value=\"".$compteur_eau[$i][5]."\" size=\"4%\"></td>
    	<td class=\"darkblue\"><p align=\"center\"><input type=\"text\" name=\"lg".$num_lg."cl6\" value=\"".$compteur_eau[$i][6]."\" size=\"5%\"></p></td>
    	<td class=\"verywhite\"><p align=\"center\"><input type=\"text\" name=\"lg".$num_lg."cl7\" value=\"".$compteur_eau[$i][7]."\" size=\"4%\"></p></td>
    	<td class=\"darkblue\"><p align=\"center\"><input type=\"text\" name=\"lg".$num_lg."cl8\" value=\"".$compteur_eau[$i][8]."\" size=\"5%\"></p></td>
    	<td class=\"verywhite\"><p align=\"center\"><input type=\"text\" name=\"lg".$num_lg."cl9\" value=\"".$compteur_eau[$i][9]."\" size=\"4%\"></p></td></tr>";
    	$num_lg++;
    }
    Oui je sais, ma manipulation d'index a l'air un peu esotérique, mais c'est étudier pour, comme dirait l'autre...

    Mon problème vient du test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    elseif (empty($compteur_eau[$i][2]) || $compteur_eau[$i][3]<0)
    Quand le 2ème cas se présente (val<0) cela fonctionne, par contre, il ne détecte absolument pas le 1er cas !!! Même quand la variable est vide, j'ai vérifié avec le débugger (de Zend Studio)...

    Si quelqu'un a des suggestions, je suis preneur !!! Merci d'avance !
    L'homme sage apprend de ses erreurs, l'homme plus sage apprend des erreurs des autres. - Confucius -

    Ma (petite...) chaine Youtube : https://www.youtube.com/channel/UCy-...P2tH5UwOtLaYKw
    Si vous avez quelques minutes, passez donc voir mon site http://www.photospicsandco.fr/
    Envie de tee-shirts (et goodies!) originaux et sympa ? Visitez mon site... http://www.zazzle.com/shkyo30

  2. #2
    Membre éprouvé
    Avatar de SnakemaN
    Profil pro
    Bidouille-tout Android
    Inscrit en
    Juillet 2006
    Messages
    871
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Bidouille-tout Android

    Informations forums :
    Inscription : Juillet 2006
    Messages : 871
    Points : 1 118
    Points
    1 118
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    elseif(empty($compteur_eau[$i][2]) || ($compteur_eau[$i][3]<0))
    ?
    C'est le signe d'un fou, qu'avoir honte d'apprendre
    Ubuntu 10.04 Lucid Lynx @home
    LE guide libre Linux & Ubuntu pour tous : Simple comme Ubuntu

  3. #3
    Membre expérimenté Avatar de shkyo
    Homme Profil pro
    Développeur Robotique - Administrateur systèmes
    Inscrit en
    Juin 2003
    Messages
    841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Robotique - Administrateur systèmes

    Informations forums :
    Inscription : Juin 2003
    Messages : 841
    Points : 1 474
    Points
    1 474
    Par défaut
    Citation Envoyé par SnakemaN
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    elseif(empty($compteur_eau[$i][2]) || ($compteur_eau[$i][3]<0))
    ?
    Plus de précision peut-être...

    Je veux afficher une couleur de case de tableau différente suivant que la valeur résultant d'un calcul est soit >0 soit <0 OU vide.

    Petit détails, ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    elseif (($compteur_eau[$i][2])==NULL || $compteur_eau[$i][3]<0)
    ne marche pas non plus...
    L'homme sage apprend de ses erreurs, l'homme plus sage apprend des erreurs des autres. - Confucius -

    Ma (petite...) chaine Youtube : https://www.youtube.com/channel/UCy-...P2tH5UwOtLaYKw
    Si vous avez quelques minutes, passez donc voir mon site http://www.photospicsandco.fr/
    Envie de tee-shirts (et goodies!) originaux et sympa ? Visitez mon site... http://www.zazzle.com/shkyo30

  4. #4
    Membre éprouvé
    Avatar de SnakemaN
    Profil pro
    Bidouille-tout Android
    Inscrit en
    Juillet 2006
    Messages
    871
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Bidouille-tout Android

    Informations forums :
    Inscription : Juillet 2006
    Messages : 871
    Points : 1 118
    Points
    1 118
    Par défaut
    Je parlais des parentheses..mais ca me semble peut probable finalement...
    C'est le signe d'un fou, qu'avoir honte d'apprendre
    Ubuntu 10.04 Lucid Lynx @home
    LE guide libre Linux & Ubuntu pour tous : Simple comme Ubuntu

  5. #5
    Membre éprouvé
    Avatar de SnakemaN
    Profil pro
    Bidouille-tout Android
    Inscrit en
    Juillet 2006
    Messages
    871
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Bidouille-tout Android

    Informations forums :
    Inscription : Juillet 2006
    Messages : 871
    Points : 1 118
    Points
    1 118
    Par défaut
    Je pense qu'il s'agit d'un probleme d'algebre de Boole :
    http://fr2.php.net/manual/fr/function.empty.php

    empty te renvoie true si ta variable est bien vide or un true ne va pas faire sauter le if...
    le elseif attend des valeur false pour en sortir pas true pour en entrer dedans


    il faudrais te renseigner dans ton code si la condition 1 peut etre vide sans que la premiere ne le soit et inversemement il si les deux conditionts peuvent etre true ou false en meme temps et que faire dans ces cas ....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    empty($compteur_eau[$i][2])  $compteur_eau[$i][3]<0     que faire ?
    TRUE                                    TRUE                      ?
    TRUE                                    FALSE                     ?
    FALSE                                   TRUE                      ?
    FALSE                                   FALSE                     ?
    C'est le signe d'un fou, qu'avoir honte d'apprendre
    Ubuntu 10.04 Lucid Lynx @home
    LE guide libre Linux & Ubuntu pour tous : Simple comme Ubuntu

  6. #6
    Rédacteur

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 695
    Points : 1 071
    Points
    1 071
    Par défaut
    SnakemaN, ton raisonnement est un peu abstrait, mais en fait, j'adhère.

    Pour faire plus simple, tu fais un elseif et ta condition n'est pas vérifiée, même quand tu pense qu'elle devrait.
    C'est probablement qu'elle est déjà passée dans le 1er if. Si c'est la cas, comme tu as des else ensuite, les conditions ne seront même pas testée.

    Peux-tu confirmer?
    Articles sur developpez.com
    - Gestion des exceptions avec PHP5
    - Chiffrement et hash en PHP contre l'attaque Man in the middle
    - Aedituus - Espace membre sécurisé en PHP5

  7. #7
    Membre expérimenté Avatar de shkyo
    Homme Profil pro
    Développeur Robotique - Administrateur systèmes
    Inscrit en
    Juin 2003
    Messages
    841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Robotique - Administrateur systèmes

    Informations forums :
    Inscription : Juin 2003
    Messages : 841
    Points : 1 474
    Points
    1 474
    Par défaut
    Citation Envoyé par SnakemaN
    Je pense qu'il s'agit d'un probleme d'algebre de Boole :
    http://fr2.php.net/manual/fr/function.empty.php

    empty te renvoie true si ta variable est bien vide or un true ne va pas faire sauter le if...
    le elseif attend des valeur false pour en sortir pas true pour en entrer dedans


    il faudrais te renseigner dans ton code si la condition 1 peut etre vide sans que la premiere ne le soit et inversemement il si les deux conditionts peuvent etre true ou false en meme temps et que faire dans ces cas ....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    empty($compteur_eau[$i][2])  $compteur_eau[$i][3]<0     que faire ?
    TRUE                                    TRUE                      ?
    TRUE                                    FALSE                     ?
    FALSE                                   TRUE                      ?
    FALSE                                   FALSE                     ?

    OKOK je vais creuser de ce côté-ci, il faut dire que je suis débutant en PHP, j'ai plus l'habitude de faire du C, du coup mon code ressemble peut-être plus à du C qu'à du pur PHP...
    L'homme sage apprend de ses erreurs, l'homme plus sage apprend des erreurs des autres. - Confucius -

    Ma (petite...) chaine Youtube : https://www.youtube.com/channel/UCy-...P2tH5UwOtLaYKw
    Si vous avez quelques minutes, passez donc voir mon site http://www.photospicsandco.fr/
    Envie de tee-shirts (et goodies!) originaux et sympa ? Visitez mon site... http://www.zazzle.com/shkyo30

  8. #8
    Membre éprouvé
    Avatar de SnakemaN
    Profil pro
    Bidouille-tout Android
    Inscrit en
    Juillet 2006
    Messages
    871
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Bidouille-tout Android

    Informations forums :
    Inscription : Juillet 2006
    Messages : 871
    Points : 1 118
    Points
    1 118
    Par défaut
    Ca rien avoir avec du C ca marche avec n'importe quoi !
    Ceci dit wamania as un peu résumé en plus simple, je laisse passer le café et je reviens....


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    elseif(!empty($compteur_eau[$i][2]) || ($compteur_eau[$i][3]<0))
    du lait concentré, il me faut du lait concentré !
    C'est le signe d'un fou, qu'avoir honte d'apprendre
    Ubuntu 10.04 Lucid Lynx @home
    LE guide libre Linux & Ubuntu pour tous : Simple comme Ubuntu

  9. #9
    Membre expérimenté Avatar de shkyo
    Homme Profil pro
    Développeur Robotique - Administrateur systèmes
    Inscrit en
    Juin 2003
    Messages
    841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Robotique - Administrateur systèmes

    Informations forums :
    Inscription : Juin 2003
    Messages : 841
    Points : 1 474
    Points
    1 474
    Par défaut
    Citation Envoyé par wamania
    SnakemaN, ton raisonnement est un peu abstrait, mais en fait, j'adhère.

    Pour faire plus simple, tu fais un elseif et ta condition n'est pas vérifiée, même quand tu pense qu'elle devrait.
    C'est probablement qu'elle est déjà passée dans le 1er if. Si c'est la cas, comme tu as des else ensuite, les conditions ne seront même pas testée.

    Peux-tu confirmer?

    Effectivement, c'est peut-être un problème de ce style, je vais essayer avec un "switch case", ce sera plus simple peut-être...
    L'homme sage apprend de ses erreurs, l'homme plus sage apprend des erreurs des autres. - Confucius -

    Ma (petite...) chaine Youtube : https://www.youtube.com/channel/UCy-...P2tH5UwOtLaYKw
    Si vous avez quelques minutes, passez donc voir mon site http://www.photospicsandco.fr/
    Envie de tee-shirts (et goodies!) originaux et sympa ? Visitez mon site... http://www.zazzle.com/shkyo30

  10. #10
    Membre expérimenté Avatar de shkyo
    Homme Profil pro
    Développeur Robotique - Administrateur systèmes
    Inscrit en
    Juin 2003
    Messages
    841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Robotique - Administrateur systèmes

    Informations forums :
    Inscription : Juin 2003
    Messages : 841
    Points : 1 474
    Points
    1 474
    Par défaut
    Citation Envoyé par wamania
    SnakemaN, ton raisonnement est un peu abstrait, mais en fait, j'adhère.

    Pour faire plus simple, tu fais un elseif et ta condition n'est pas vérifiée, même quand tu pense qu'elle devrait.
    C'est probablement qu'elle est déjà passée dans le 1er if. Si c'est la cas, comme tu as des else ensuite, les conditions ne seront même pas testée.

    Peux-tu confirmer?

    Suite à cette remarque fort judicieuse, j'ai essayé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    	if ($compteur_eau[$i][3]>=0 && $compteur_eau[$i][2]!=NULL) {
    		echo "<td class=\"darkblue\"><p align=\"center\"><input type=\"text\" name=\"lg".$num_lg."cl2\" value=\"".$compteur_eau[$i][2]."\" size=\"5%\"></p></td>";
    	} elseif ($compteur_eau[$i][3]<0 || $compteur_eau[$i][2]==NULL) {
    		echo "<td class=\"red\"><p align=\"center\"><input type=\"text\" name=\"lg".$num_lg."cl2\" value=\"".$compteur_eau[$i][2]."\" size=\"5%\"></p></td>";
    	}
    et cela fonctionne parfaitement !! Vicieux comme truc...

    En tout cas : à vous !
    L'homme sage apprend de ses erreurs, l'homme plus sage apprend des erreurs des autres. - Confucius -

    Ma (petite...) chaine Youtube : https://www.youtube.com/channel/UCy-...P2tH5UwOtLaYKw
    Si vous avez quelques minutes, passez donc voir mon site http://www.photospicsandco.fr/
    Envie de tee-shirts (et goodies!) originaux et sympa ? Visitez mon site... http://www.zazzle.com/shkyo30

  11. #11
    Membre expérimenté Avatar de shkyo
    Homme Profil pro
    Développeur Robotique - Administrateur systèmes
    Inscrit en
    Juin 2003
    Messages
    841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Robotique - Administrateur systèmes

    Informations forums :
    Inscription : Juin 2003
    Messages : 841
    Points : 1 474
    Points
    1 474
    Par défaut
    Citation Envoyé par shkyo
    Effectivement, c'est peut-être un problème de ce style, je vais essayer avec un "switch case", ce sera plus simple peut-être...
    Quand à ça, en fait, mauvaise idée dans mon cas...
    L'homme sage apprend de ses erreurs, l'homme plus sage apprend des erreurs des autres. - Confucius -

    Ma (petite...) chaine Youtube : https://www.youtube.com/channel/UCy-...P2tH5UwOtLaYKw
    Si vous avez quelques minutes, passez donc voir mon site http://www.photospicsandco.fr/
    Envie de tee-shirts (et goodies!) originaux et sympa ? Visitez mon site... http://www.zazzle.com/shkyo30

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

Discussions similaires

  1. preg_replace et non détection des retours a la ligne
    Par pinguix dans le forum Langage
    Réponses: 4
    Dernier message: 10/05/2013, 19h32
  2. [Écran] [HDMI] Non détection entre TV et mon PC portable
    Par geforce dans le forum Périphériques
    Réponses: 7
    Dernier message: 26/12/2012, 22h44
  3. Réponses: 0
    Dernier message: 14/03/2012, 17h08
  4. Non détection de ma carte réseau
    Par skyfer dans le forum Hardware
    Réponses: 2
    Dernier message: 16/04/2009, 13h08
  5. Non-détection lecteur CD Toshiba Satellite A210
    Par Onitsha dans le forum Périphériques
    Réponses: 1
    Dernier message: 03/12/2008, 15h05

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