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

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    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
    1. 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
    2. 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
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > 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
  2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    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
    1. 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
    2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Utilisateur anonyme
       
      l'instruction est
      print_r ($_POST);
      0
    3. Utilisateur anonyme > yg_be Messages postés 23437 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
    4. Reivax962 Messages postés 3742 Statut Membre 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
    5. Utilisateur anonyme > Reivax962 Messages postés 3742 Statut Membre
       
      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
  3. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    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
    1. 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
    2. Utilisateur anonyme
       
      En tout cas la faute de metre type au lieu de method c'était ... Maladroit de ma part...
      0