Addition impossible avec formulaire et variable !!

Signaler
Messages postés
3
Date d'inscription
samedi 19 juin 2004
Statut
Membre
Dernière intervention
6 mars 2013
-
Messages postés
1
Date d'inscription
vendredi 26 mars 2004
Statut
Membre
Dernière intervention
13 septembre 2011
-
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

Messages postés
14813
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
25 juillet 2021
156
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
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
18
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 !
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
18
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 !
Messages postés
197
Date d'inscription
mardi 20 janvier 2004
Statut
Membre
Dernière intervention
20 février 2013
1
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
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
18
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 !
Messages postés
3
Date d'inscription
samedi 19 juin 2004
Statut
Membre
Dernière intervention
6 mars 2013

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
Messages postés
1
Date d'inscription
vendredi 26 mars 2004
Statut
Membre
Dernière intervention
13 septembre 2011

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