Les $_POST et variable en php [Résolu/Fermé]

Signaler
Messages postés
71
Date d'inscription
samedi 22 juillet 2017
Statut
Membre
Dernière intervention
16 juin 2018
-
Messages postés
71
Date d'inscription
samedi 22 juillet 2017
Statut
Membre
Dernière intervention
16 juin 2018
-
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

Messages postés
13932
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 janvier 2021
784
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?
Messages postés
71
Date d'inscription
samedi 22 juillet 2017
Statut
Membre
Dernière intervention
16 juin 2018
3
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>
Messages postés
71
Date d'inscription
samedi 22 juillet 2017
Statut
Membre
Dernière intervention
16 juin 2018
3
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>
Messages postés
13932
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 janvier 2021
784 >
Messages postés
71
Date d'inscription
samedi 22 juillet 2017
Statut
Membre
Dernière intervention
16 juin 2018

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".
Messages postés
13932
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 janvier 2021
784
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.
Messages postés
3668
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 janvier 2021
981
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
Messages postés
71
Date d'inscription
samedi 22 juillet 2017
Statut
Membre
Dernière intervention
16 juin 2018
3 >
Messages postés
3668
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 janvier 2021

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
Messages postés
3668
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 janvier 2021
981 >
Messages postés
71
Date d'inscription
samedi 22 juillet 2017
Statut
Membre
Dernière intervention
16 juin 2018

C'est parce que tu n'as pas mis les guillemets autour de +
if ($c == '+'){
Messages postés
13932
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 janvier 2021
784 >
Messages postés
71
Date d'inscription
samedi 22 juillet 2017
Statut
Membre
Dernière intervention
16 juin 2018

if ($c == '+'){
Messages postés
71
Date d'inscription
samedi 22 juillet 2017
Statut
Membre
Dernière intervention
16 juin 2018
3 >
Messages postés
13932
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 janvier 2021

Ahh merci, mais il me remet ca:
Notice: Undefined index: nombres/nombre/s
Et voila le code
<!DOCTYPE html>
<head>

</head>
<body>
<?php
$nb=print_r ($_POST['nombre']);
$nbs=print_r ($_POST['nombres']);
$c=print_r ($_POST['s']);
$rea = $nb + $nbs;
$res = $nb - $nbs;
$red = $nb / $nbs; 
$m = $nb * $nbs;
	if ($c == '+'){
	$nb +$nbs;
	echo $rea;
	};
	if ($c == '-'){
	$nb - $nbs;
	echo $res;
	};
	if ($c == '*'){
	$nb * $nbs; 
	echo $m;
	};
	if ($c == '/'){
	$nb / $nbs;
	echo $m;
	};
	?>
	</body>
	</html>

Comment cela ce fait t- il?
Messages postés
31082
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 janvier 2021
3 189
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                                                                 
Messages postés
71
Date d'inscription
samedi 22 juillet 2017
Statut
Membre
Dernière intervention
16 juin 2018
3
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!!
Messages postés
71
Date d'inscription
samedi 22 juillet 2017
Statut
Membre
Dernière intervention
16 juin 2018
3
En tout cas la faute de metre type au lieu de method c'était ... Maladroit de ma part...