Les $_POST et variable en php

Résolu/Fermé
Utilisateur anonyme - Modifié le 23 juil. 2017 à 08:32
 Utilisateur anonyme - 24 juil. 2017 à 15:30
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 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477
Modifié le 23 juil. 2017 à 10:01
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
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
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 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477 > Utilisateur anonyme
23 juil. 2017 à 14:00
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 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477
23 juil. 2017 à 19:18
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
23 juil. 2017 à 23:27
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 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477 > Utilisateur anonyme
24 juil. 2017 à 09:09
l'instruction est
print_r ($_POST);
0
Utilisateur anonyme > yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024
24 juil. 2017 à 12:17
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 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
24 juil. 2017 à 13:37
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 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021
24 juil. 2017 à 14:02
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 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
Modifié le 24 juil. 2017 à 15:07
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
24 juil. 2017 à 15:28
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
24 juil. 2017 à 15:30
En tout cas la faute de metre type au lieu de method c'était ... Maladroit de ma part...
0