Casse tête PhP

Fermé
Enzo - 6 oct. 2011 à 16:02
 Utilisateur anonyme - 6 oct. 2011 à 16:54
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.
A voir également:

1 réponse

Utilisateur anonyme
6 oct. 2011 à 16:16
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
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
Utilisateur anonyme
6 oct. 2011 à 16:54
Si, à priori dans calculer()

$operator, il sort d'où ?

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