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 : 51
    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 !

  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 : 40
    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))
    ?

  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 : 51
    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...

  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 : 40
    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...

  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 : 40
    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                     ?

  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 : 43
    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?

  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 : 51
    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...

  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 : 40
    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é !

  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 : 51
    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...

  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 : 51
    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 !

  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 : 51
    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...

+ 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, 20h32
  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, 23h44
  3. Réponses: 0
    Dernier message: 14/03/2012, 18h08
  4. Non détection de ma carte réseau
    Par skyfer dans le forum Hardware
    Réponses: 2
    Dernier message: 16/04/2009, 14h08
  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, 16h05

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