Problème de condition php

Résolu
Ga3z Messages postés 67 Date d'inscription   Statut Membre Dernière intervention   -  
zzzer Messages postés 906 Date d'inscription   Statut Membre Dernière intervention   -
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 ?
A voir également:

9 réponses

zzzer Messages postés 906 Date d'inscription   Statut Membre Dernière intervention   181
 
C'est $ptot que tu dois tester, et pas $_POST['ptot'] ;)

0
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
Ga3z Messages postés 67 Date d'inscription   Statut Membre Dernière intervention   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
nathousme Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
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
zzzer Messages postés 906 Date d'inscription   Statut Membre Dernière intervention   181
 
3.50 + NULL = 3.50 ;)

0
nathousme Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
lol
;)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Ga3z Messages postés 67 Date d'inscription   Statut Membre Dernière intervention   6
 
désolé mais ça ne marche toujours pas...
0
PeterPeterPeter Messages postés 202 Date d'inscription   Statut Membre Dernière intervention   30
 
On peut voir le code ?
0
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
Ga3z Messages postés 67 Date d'inscription   Statut Membre Dernière intervention   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
Ga3z Messages postés 67 Date d'inscription   Statut Membre Dernière intervention   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
zzzer Messages postés 906 Date d'inscription   Statut Membre Dernière intervention   181
 
Ahah les regexp...
C'est l'horreur ça !

0