Problème de condition php

Résolu
Ga3z Messages postés 67 Statut Membre -  
zzzer Messages postés 938 Statut Membre -
Bonjour,
j'ai un formulaire avec des input "mext" et "mint"
je veux tester qu'au moins une des deux valeurs mext ou mint n'est pas nulle
sur la feuille où je récupère mes données, j'ai

$mint = $_POST['mint'];
$mext= $_POST['mext'];
$ptot = $_POST['mint']*3.50 + $_POST['mext']*3;
if (empty($_POST['ptot'])) {
echo"Vous n'avez pas spécifié le linéaire à réserver ! ";
}
else

et ça marche pas: si une des valeurs est nulle ça me donne le message d'erreur !!!
pourtant mathématiquement si mint = 0 et mext =1 ptot = 3 et donc n'est pas nul ?!!!
Où me suis-je trompé à votre avis ?
Configuration: Windows XP
Firefox 2.0.0.16

9 réponses

  1. zzzer Messages postés 938 Statut Membre 181
     
    C'est $ptot que tu dois tester, et pas $_POST['ptot'] ;)

    0
  2. PeterPeterPeter Messages postés 202 Date d'inscription   Statut Membre Dernière intervention   30
     
    $_POST['ptot'] != $ptot


    Je ne sais pas si tu vois ce que je veux dire, mais ça t'aidera déjà un peu :)

    $_POST['ptot'] est déclaré nul part que dans ta condition donc logiquement il sera toujours vide.
    0
    1. Ga3z Messages postés 67 Statut Membre 6
       
      >>$_POST['ptot'] est déclaré nul part que dans ta condition donc logiquement il sera toujours vide.

      damned !!!

      bon j'ai contourné le problème: j'ai mis un input caché sur mon formulaire qui reprend la valeur calculée (y en avait déjà un mais il était disabled, donc je pouvais pas en récupérer la valeur: c'était juste à titre indicatif)
      et donc j'ai récupéré la valeur de cet imput caché et fait ma condition:
      $ptotal = $_POST['ptotal'];
      elseif ($_POST['ptotal'] == 0) {
      echo"Vous n'avez pas spécifié le linéaire à réserver ! ";
      }
      et là ça fonctionne
      merci pour votre aide
      0
  3. nathousme Messages postés 14 Statut Membre
     
    Bonjour,

    Le probleme c'est que quand tu mets ça :

    $mint = $_POST['mint'];
    $mext= $_POST['mext'];
    $ptot = $_POST['mint']*3.50 + $_POST['mext']*3;
    if (empty($_POST['ptot'])) {
    echo"Vous n'avez pas spécifié le linéaire à réserver ! ";
    }
    else

    Si aucun champ n'est renseigné :
    ça te donne => $ptot = ' ' *3.50 + ' ' *3;
    on peux pas mutliplier une valeur qui n'existe pas.

    donc tu dois mettre :
    $mint = $_POST['mint'];
    $mext= $_POST['mext'];
    if ($mint == '' ) $mint = 0;
    if ($mext == '' ) $mext = 0;

    $ptot = ($mint*3.50) + ($mext*3);
    if ($_POST['ptot'] == 0) {
    echo"Vous n'avez pas spécifié le linéaire à réserver ! ";
    }
    else
    ...

    Je pense que ça doit marcher ^^

    @++
    0
    1. zzzer Messages postés 938 Statut Membre 181
       
      3.50 + NULL = 3.50 ;)

      0
  4. nathousme Messages postés 14 Statut Membre
     
    lol
    ;)
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Ga3z Messages postés 67 Statut Membre 6
     
    désolé mais ça ne marche toujours pas...
    0
    1. PeterPeterPeter Messages postés 202 Date d'inscription   Statut Membre Dernière intervention   30
       
      On peut voir le code ?
      0
  7. Utilisateur anonyme
     
    Salut,
    je veux tester qu'au moins une des deux valeurs mext ou mint n'est pas nulle 

    if (isset($_POST['mint'],$_POST['mext'])){
    $mint=$_POST['mint'];
    $mext=$_POST['mint'];
         if ($mint==0){
             echo "Valeur nulle interdite ! ";
        }elseif ($mext==0){
             echo "Valeur nulle interdite ! ";
        }else{
             //ton traitement ici
        }
    }else{
            echo "Champs non remplis.";
    }
    
    0
  8. Ga3z Messages postés 67 Statut Membre 6
     
    oups je n'ai pas répondu où il fallait, désolé ! je remets ma réponse ici:

    bon j'ai contourné le problème: j'ai mis un input caché sur mon formulaire qui reprend la valeur calculée (y en avait déjà un mais il était disabled, donc je pouvais pas en récupérer la valeur: c'était juste à titre indicatif)
    et donc j'ai récupéré la valeur de cet imput caché et fait ma condition:

    $ptotal = $_POST['ptotal'];
    elseif ($_POST['ptotal'] == 0) {
    echo"Vous n'avez pas spécifié le linéaire à réserver ! ";
    }
    et là ça fonctionne
    merci pour votre aide
    0
  9. Ga3z Messages postés 67 Statut Membre 6
     
    ah j'ai trouvé une solution plus simple et entièrement en php: avec une regex (on m'a un peu aidé, je dois avouer)!

    $regex = '^$|^[0-9]+$';
    if ( (empty($_POST['mint']) && empty($_POST['mext'])) || !( ereg($regex, $_POST['mint']) && ereg($regex, $_POST['mext']) ) ) {
    echo "Vous vous êtes trompé en saisissant votre linéaire!"
    }

    si ça peut servir pour d'autres...
    0
  10. zzzer Messages postés 938 Statut Membre 181
     
    Ahah les regexp...
    C'est l'horreur ça !

    0