Casse tête PhP

Enzo -  
 Utilisateur anonyme -
Bonjour à tous,

voilà ca va faire 10 bonnes minutes que je me borne à retourner mon code dans tous les sens et je ne vois pas du tout l'erreur que dreamweaver me signale à la ligne de déclaration de boucle, voyez plutot :

<?php

require "calc.php";

$n1 = $_POST["nb1"];
$n2 = $_POST["nb2"];

if( !empty( $n1 == true) && if( !empty( $n2 == true)){
$calc = new Calculator();
$n1 = $_POST["nb1"];
$n2 = $_POST["nb2"];
$op = $_POST["operateur"];
$calc -> set($n1, $n2);
$res -> $calc -> $calculer ($op);
}else
$res ="?";
}
?>

Le code est encré dans un fichier contenant du code html pour créer le formulaire qui va permettre la saisie par l'utilisateur de 2 chiffres et d'un choix de calcul. Le fichier calc.php transmet le resultat du calcul $res.

Merci.

1 réponse

  1. Utilisateur anonyme
     
    Bonjour,

    Il y a plusieurs choses :

    if( !empty( $n1 == true) && if( !empty( $n2 == true)) ne signifie rien du tout, la bonne syntaxe serait ceci sans doute :

    if( !empty($n1) && !empty($n2) ) {

    Après vous mettez deux fois ceci :

    $n1 = $_POST["nb1"];
    $n2 = $_POST["nb2"];

    Pas logique,

    A la limite le code pourrait être

    <?php
    
    require "calc.php";
    
    if(isset($_POST["nb1"]) && isset($_POST["nb2"])){
    $calc = new Calculator();
    $n1 = $_POST["nb1"];
    $n2 = $_POST["nb2"];
    $op = $_POST["operateur"];
    $calc -> set($n1, $n2);
    $res = $calc ->calculer ($op);
    }else
    $res ="?";
    }
    ?> 
    


    isset($_POST["nb1"]) pour tester l'existence de l'élément dans le tableau POST

    Après $res -> $calc -> $calculer ($op); signifie quoi ?

    $res est un objet instancié dans calc.php ?

    ou c'est un résultat que vous attendez ? Dans ce cas ce serait

    $res = $calc ->calculer ($op); et non $res -> $calc -> $calculer ($op);

    Et puis une méthode d'un objet ne commence pas par $ donc sans doute il faute mettre
    $res = $calc ->calculer ($op); au lieu de $res = $calc ->$calculer ($op);

    Vous débutez en PHP ?

    Cordialement
    0
    1. Enzo
       
      Bonjour,

      Disons que j'ai commencé mes cours de php il y a un mois. Wouah on peut dire que je n'ai pas

      chomé pour les erreurs d'étourderie !

      Le fichier calc.php contient la classe calculator qui va générer le calcul souhaité à partir de la

      fonction calculer. Celle-ci retourne une valeur (noté ici $res) qui va être la réponse au calcul

      demandé par l'utilisateur. Voilà :


      <?php

      class Calculator{
      private $nb1;
      private $nb2;

      public function __construct(){
      $this -> $nb1 = 0;
      $this -> $nb2 = 0;
      }
      public function set($val1, $val2){
      $this -> $nb1 = $val1;
      $this -> $nb2 = $val2;
      }
      public function add(){
      return $this -> $nb1 + $this -> $nb2;
      }
      public function souss(){
      return $this -> $nb1 - $this -> $nb2;
      }
      public function mult(){
      return $this -> $nb1 * $this -> $nb2;
      }
      public function div(){
      if( $nb2 != 0 ){
      return $this -> $nb1 / $this -> $nb2;
      }else{
      return false;
      }
      }
      public function calculer(){
      switch ($operator){
      case "+" :
      return $this -> add();
      break;
      case "-" :
      return $this -> souss();
      break;
      case "*" :
      return $this -> mult();
      break;
      case "/" :
      return $this -> div();
      break;
      case "default" :
      return false;
      break;
      }
      }
      }

      ?>
      Je ne pense pas qu'il y ait une erreur.
      0
    2. Utilisateur anonyme
       
      Si, à priori dans calculer()

      $operator, il sort d'où ?

      Je suppose que la bonne écriture devrait être
      public function calculer($operator){
      0