Les $_POST et variable en php

Résolu
Utilisateur anonyme -  
 Utilisateur anonyme -
Bonjour la communauté,
J'essaye de codé une calculatrice en php et j'ai un problème aux lignes 13 à 19 inclus du document 2! Alors es-ce moi qui ai mal codé dans un des deux document ou mon logiciel qui comprend mal (mon logiciel Bit Serveur (android)).
Merci d'avance pour vos réponses!
Quentin
https://img-19.ccm2.net/9qNNWhYqLDT0nf1b_ku3fVqO3co=/9a75c1cd7f754e6a8401f4c6ac40cfb6/ccm-ugc/Screenshot_20170722-233307.jpg
https://img-19.ccm2.net/1ERZmDIMCvd683zb5PwcQbewqGA=/79746b1cb9354e618efbc7af969ca64a/ccm-ugc/Screenshot_20170722-233557.jpg

3 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonjour,
peux-tu poster le contenu de tes fichiers en texte, plutôt que poster des images?
je vois plusieurs anomalies dans ton fichier php:
- lignes 9 à 12, tu utilises tes variables avant de les avoir initialisées dans les lignes 13 à 14
- tes lignes 21, 25, 29, 33 ne servent à rien, tu ne récupères pas le résultat.
ce serait plus logique d'y mettre les lignes 9 à 12.
je te suggère de faire
print_r $_POST;
, pour comprendre ce que ton code php reçoit de la page html.
la prochaine fois, peux-tu également décrire ton problème: message d'erreur, résultat bizarre?
0
Utilisateur anonyme
 
Voila les documents en textes (désolé c'est la première fois que je pose une question sur ce forum donc je m'y prend mal)
voila le code
<!DOCTYPE html>
<head>
<title>Untitled</title>
<meta charset="UTF-8"/>
<link rel="stylesheet" href="c.css" type="text/css"/>
</head>
<body>
<?php
$rea = $nb + $nbs;
$res = $nb - $nbs;
$red = $nb / $nbs;
$m = $nb * $nbs;
$nb=$_POST['nombre'];
$nbs=$_POST['nombres'];
$c=$_POST['s'];
$a=$_POST['addition'];
$s=$_POST['soustraction'];
$d=$_POST['division'];
$m=$_POST['multiplication'];
if ($c == $a) {
$nb +$nbs;
echo $rea;
}
if ($c == $s){
$nb - nbs;
echo $res;
}
if ($c == $m){
$nb * nbs;
echo $re;
}
if ($c == $d){
$nb / $nbs;
echo $m;
}
?>
</body>
</html>

<!DOCTYPE html>
<head>
<title>Untitled</title>
<meta charset="UTF-8"/>
<link rel="stylesheet" href="c.css" type="text/css"/>
</head>
<body>
<form type="post" action="rs.php">
<label for="nombre"></label>
<input type="text" name="nombre" id="nombre"/>
<select name="s">
<option name="addition">+</option>
<option name="soustraction">-</option>
<option name="division">/</option>
<option name="multiplication">*</option>
<label for="nombres"></label>
<input type="text" name="nombres" id="nombres"/>
<input type="submit"></input>
</form>
</body>
</html>
0
Utilisateur anonyme
 
Voila le code modifié mais un autre problème apparaît:
( ! ) Parse error: syntax error, unexpected end of file in /storage/emulated/0/www/Calcul/rs.php on line 36
HELP ME PLEASE!!
<!DOCTYPE html>
<head>

</head>
<body>
<?php
$nb=print_r ['nombre'];
$nbs=print_r ['nombres'];
$c=print_r ['s'];
$a=print_r ['addition'];
$s=print_r ['soustraction'];
$d=print_r ['division'];
$m=print_r ['multiplication'];
$rea = $nb + $nbs;
$res = $nb - $nbs;
$red = $nb / $nbs;
$m = $nb * $nbs;
if ($c == $a) {
$nb +$nbs;
echo $rea;

if ($c == $s){
$nb - nbs;
echo $res;

if ($c == $m){
$nb * nbs;
echo $re;

if ($c == $d){
$nb / $nbs;
echo $m;
?>
</body>
</html>
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Utilisateur anonyme
 
peux-tu ajouter
print_r $_POST;
, pour comprendre ce que ton code php reçoit de la page html, et partager ce que cela affiche.
tu as supprimé les accolades fermantes, je pense que c'est cela qui cause l'erreur "parse".
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
suggestion pour ton select en html:
<select name="s"> 
<option value="+">+</option> 
<option value="-">-</option> 
<option value="/">/</option> 
<option value="*">*</option> 
</select> 

et le php récupérera dans $_POST['s'] le "value" sélectionnée.
0
Utilisateur anonyme
 
Voila le message d'erreur apres le code:

( ! ) Parse error: syntax error, unexpected '$_POST' (T_VARIABLE) in /storage/emulated/0/www/Calcul/rs.php on line 7

Code
<!DOCTYPE html>
<head>

</head>
<body>
<?php
$nb=print_r $_POST['nombre'];
$nbs=print_r $_POST['nombres'];
$c=print_r $_POST['s'];
$a=print_r $_POST['addition'];
$s=print_r $_POST['soustraction'];
$d=print_r _POST['division'];
$m=print_r $_POST['multiplication'];
$rea = $nb + $nbs;
$res = $nb - $nbs;
$red = $nb / $nbs;
$m = $nb * $nbs;
	if ($c == $a) {
	$nb +$nbs;
	echo $rea;
	}
	if ($c == $s){
	$nb - nbs;
	echo $res;
	}
	if ($c == $m){
	$nb * nbs; 
	echo $re;
	}
	if ($c == $d){
	$nb / $nbs;
	echo $m;
	}
	?>
	</body>
	</html>
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Utilisateur anonyme
 
l'instruction est
print_r ($_POST);
0
Utilisateur anonyme > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
Ca marche MERCIII,
Mais un autre message d'erreur apparait:
( ! ) Notice: Undefined index: soustraction in /storage/emulated/0/www/Calcul/rs.php on line 7 à 13.
Sauriez vous m'aider?
0
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
Bonjour,

Les <option> ne renvoient pas de valeur, seul le <select> en renvoie une.
C'est pour ça que les $_POST['soustraction'], ['addition'], etc. n'existent pas.

Donc il ne faut pas faire $c == $a (resp. $s $d $m), mais $c == '+' (resp. '-' '/' '*')
Et supprimer les lignes $a = $_POST (resp. $s $d $m)

Xavier
0
Utilisateur anonyme > Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention  
 
Merci de ta réponse ainsi qu'a yg_be,
Mais voila un nouveau message d'erreur la je pense que ca vient de logiciel mais bon le voilà:
Parse error: syntax error, unexpected ')' in /storage/emulated/0/www/Calcul/rs.php on line 14
Et voila la ligne 14
	if ($c == +){

Help me please
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,

Première erreur je pense .... le TYPE dans la FORM.
On utilise METHOD et non TYPE.
https://www.w3schools.com/tags/tag_form.asp


Voici ton code corrigé :
<!DOCTYPE html>
  <head>
    <title>Untitled</title>
    <meta charset="UTF-8"/>
    <link rel="stylesheet" href="c.css" type="text/css"/>
  </head>
  <body>
    <form method="post" action="rs.php">
      <label for="nombre"></label>
      <input type="text" name="nombre" id="nombre"/>
      <select name="s">
        <option name="addition">+</option>
        <option name="soustraction">-</option>
        <option name="division">/</option>
        <option name="multiplication">*</option>
      </select>
      <label for="nombres"></label>
      <input type="text" name="nombres" id="nombres"/>
      <input type="submit" value="envoyer" />
    </form>
  </body>
</html>

fichier rs.php
<?php
//affichage des erreurs PHP
error_reporting(E_ALL);
ini_set('display-errors','on');

//Recupération PROPRE des variables AVANT de les utiliser

$nb =!empty($_POST['nombre']) ? $_POST['nombre'] : NULL;
$nbs = !empty($_POST['nombres']) ? $_POST['nombres'] : NULL;
$c = !empty($_POST['s']) ? $_POST['s'] : NULL;

if($nb && $nbs){
  
  switch($c){
    
    case "addition":
     $rea = $nb + $nbs;
    break;
    case "soustraction":
     $rea = $nb - $nbs;
    break;
    case "division":
     $rea = $nb / $nbs;
    break;
    case "multiplication":
     $rea = $nb * $nbs;
    break;
    default:
     $err = "Merci de choisir un type d'opération ";
      break;
  }
    
}else{
  $err = "Aucun chiffre n'a été saisi !";
}

if(!empty($err)){
   echo $err;
}else{
  echo $rea;
}

?>



NB : Pour poster du code sur le forum.. merci d'utiliser la coloration syntaxique (les balises de code).
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

Cordialement, 
Jordane                                                                 
0
Utilisateur anonyme
 
MILLE MERCI A TOUS,
merci de m'avoir informé et conseillé et merci jordane des fichier que tu m'as donne! Juste un petit pb que je peux résoudre seul, merci a tous!!
0
Utilisateur anonyme
 
En tout cas la faute de metre type au lieu de method c'était ... Maladroit de ma part...
0