Addition impossible avec formulaire et variable !!

vincentpablo02
Messages postés
3
Date d'inscription
samedi 19 juin 2004
Statut
Membre
Dernière intervention
6 mars 2013
- 7 sept. 2011 à 22:30
vincentpablo
Messages postés
1
Date d'inscription
vendredi 26 mars 2004
Statut
Membre
Dernière intervention
13 septembre 2011
- 13 sept. 2011 à 22:59
bonsoir à tous,

voilà un souci que je ne trouve pas !!
j'ai un formulaire dans lequel je veux saisir une addition et laisser faire php :
formulaire basique ; 5 comme ça !!


récupération de la variable post...
$banshee=array($_POST['bansheec'],$_POST['banshee1'],$_POST['banshee2'],$_POST['banshee3'],$_POST['banshee4']) ;

ligne 2 : calcul de la somme des formulaires
$banshees=array_sum($banshee);


imaginons, dans le 1er formulaire, je tape 5+3+3, ensuite dans les autres 6+2+1..... bref

résultat de la variable $banshees = 5+6...
donc ne prend que le 1er chiffre de chaque addition !! même pas une erreur, juste le 1er chiffre !!!!!

Merci de me guider sur ce truc de fou ! est ce un pb de string ?

7 réponses

NHenry
Messages postés
14967
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
11 août 2022
161
7 sept. 2011 à 23:12
Bonjour,

Petite question, que contient réellement les items de ton tableau ?
Car si c'est "5+6+7+..." PHP ne sais pas interpréter ça comme une somme, il le prend en tant que chaine de caractères.
Donc quand il convertit en numérique, il s'arrête au premier signe qu'il ne comprend pas.

Je ne sais pas comment "exécuter" cette formule, mais je pense que tu trouveras ton bonheur sur le net en cherchant dans ce sens.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0
cod57
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
20
8 sept. 2011 à 15:57
bonjour

<?php
if(isset($_POST['chiffre']) &&  !empty($_POST['chiffre'])){
echo $resultat=array_sum($_POST['chiffre']);
$_POST=null;/*initialise pour un nouveau calcul*/
}else{
}
?>

<form action="" method="post">
chif 1
chif 2
chif 3
chif 4
chif 5

</form>




Bonne programmation !
0
cod57
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
20
8 sept. 2011 à 16:31
pour éviter de te faire poster des string

il y a une fonction is_numeric
http://php.net/manual/fr/function.is-numeric.php

<?php
$calcul=true;

if(isset($_POST['chiffre']) &&  !empty($_POST['chiffre'])){

  foreach($_POST['chiffre'] as $k => $v){
    
    if(!is_numeric($v)){
    echo $v.' un chiffre s.v.p.
';
    
    $calcul=false;
    }else{
    }
  
  }
  
  
  if($calcul!==false){
  echo $resultat=array_sum($_POST['chiffre']);
  $_POST=null;/*initialise pour un nouveau calcul*/
  }else{
  }


}else{
}
?>

<form action="" method="post">
chif 1" size="10" maxlength="30">
chif 2" size="10" maxlength="30">
chif 3" size="10" maxlength="30">
chif 4" size="10" maxlength="30">
chif 5" size="10" maxlength="30">

</form>




Bonne programmation !
0
cs_47
Messages postés
197
Date d'inscription
mardi 20 janvier 2004
Statut
Membre
Dernière intervention
20 février 2013
1
9 sept. 2011 à 14:37
Bonjour,

encore un +1 pour NHenry

si j'ai tout compris (oula ça a besoin de vacance ici ^^):
<?php

function map($sVal)
{
    $sTmp '?><?php $val ' . $sVal . ';';
    eval($sTmp);
    return $val;
}

// un exemple
$aResult = array(
'4+6+7',
'8-9+1',
);

var_dump(
array_sum(array_map('map', $aResult))
);



donnera 17 (= 4+6+7 + 8-9+1), bien sur il n'y a pas de test en cas d'erreur de saisie

bonne après midi
0

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

Posez votre question
cod57
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
20
9 sept. 2011 à 15:07
bonjour
attention avec eval

<?php
function map($sVal)
{
    $sTmp '?><?php $val ' . $sVal . ';';
    eval($sTmp);
    return $val;
}

// un exemple
$aResult = array(
'4+6+7',
'8-9+1',
);

var_dump(
array_sum(array_map('phpinfo', $aResult))
);

//eval("shell_exec("rm -rf {$_ffSERVER['DOCUMENT_ROOT']}");")
?>



Bonne programmation !
0
vincentpablo02
Messages postés
3
Date d'inscription
samedi 19 juin 2004
Statut
Membre
Dernière intervention
6 mars 2013

12 sept. 2011 à 22:50
Merci à tous pour vos nombreuses réponses !! désolé pour mon passage tardif, je teste tout cela et revient avec la bonne soluce qui convient à mon idée
0
vincentpablo
Messages postés
1
Date d'inscription
vendredi 26 mars 2004
Statut
Membre
Dernière intervention
13 septembre 2011

13 sept. 2011 à 22:59
bon je n'ai finalement rien compris avec eval etc

function map($sVal)
{
    $sTmp '$val '.$sVal.';';
    eval($sTmp);
    return $val;
}

$porteur=array($_POST['porteurc'],$_POST['porteur1'],$_POST['porteur2'],$_POST['porteur3'],$_POST['porteur4']) ;

var_dump(
array_sum(array_map('map', $porteur))
);


mais après ? comment je peux afficher le résultat ?? je suis débutant, je patauge là !
merci
0