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 15114 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 4 mai 2024 159
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 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
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 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
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 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
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
Rejoignez-nous