Problème de condition php

Résolu
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. $_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.
    1. >>$_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
  2. 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 ^^

    @++
    1. 3.50 + NULL = 3.50 ;)

  3. désolé mais ça ne marche toujours pas...
    1. On peut voir le code ?
  4. 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.";
    }
    
    1. 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
      1. 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...