I’m having trouble comparing two numbers in php

Asked

Viewed 87 times

0

I’m a beginner in php and I’m trying to compare two numbers but when I send the numbers to my other page ends up giving error, I would like help and if possible a very detailed explanation of what was my mistake.

Error:

Warning: Missing argument 1 for Maior::maior() e Notice: Undefined variable

Page:

<?php require_once 'maior.php'; ?>    
<!DOCTYPE html>
<html>
<head>
  <title>Exemplo</title>
  <meta charset="utf-8">
</head>
<body>
  <form action="" method="post">
    <p>
      <label>Informe o primeiro número</label><br/>      
      <input type="text" placeholder="Primeiro número" name="primeiroNumero" value="">
    </p>    
    <p>
      <label>Informe o segundo número</label><br/>
      <input type="text" placeholder="Segundo número" name="segundoNumero" value=""><br>
    </p>    
    <input type="submit"></input><br>
  </form>        
  <?php
    $post = filter_input_array(INPUT_POST);

    if (isset($post)) {    
      $primeiroNumero = $post["primeiroNumero"];
      $segundoNumero = $post["segundoNumero"];                
   ?><br/>
 <div>
 <?php
   $maior = new Maior();
   $maior->maior($primeiroNumero, $segundoNumero);
 ?>
</div>
<?php } ?>
</body>
</html>

Page 2, contains the comparison and is where the browser says the error is:

<?php
class Maior {    
     function maior($primeiroNumero, $segundoNumero){
        if ($primeiroNumero > $segundoNumero){
            echo "O primeiro número é maior que o segundo";
        }
        elseif($segundoNumero > $primeiroNumero){
            echo "O segundo número é maior que o primeiro";
        }
        else
            echo "Os números tem os mesmo valores";
    }   
}
  • What’s the mistake you’re making? Could you copy it please?

  • Warning: Missing argument 1 for Maior::maior() e Notice: Undefined variable

2 answers

1

The method is with the same class name, so it is interpreted as a method the magic method __construct. Change the method name maior() or class, so as not to obtain this error.

Edit: see more about builders on: http://php.net/manual/en/language.oop5.decon.php

Note: by good practice, define the visibility of the method, ex:

   public function comparaValores($primeiroNumero, $segundoNumero){}

0

It seems that its variable in the main code is with the same method name and also lacks the constructor in its class. Try to save the following codes:

<?php
class Maior{

    public $primeiroNumero;
    public $segundoNumero;

    public function __construct($primeiroNumero,$segundoNumero){
       $this->primeiroNumero = $primeiroNumero;
       $this->segundoNumero = $segundoNumero;
    } 

    public function maior() {

        if($this->primeiroNumero > $this->segundoNumero){
            return "O primeiro número é maior que o segundo";
        }
        elseif($this->segundoNumero > $this->primeiroNumero){
            return "O segundo número é maior que o primeiro";
        }
        else{
            return "Os números tem os mesmo valores";
         }
    }   
}
?>

and on its home page:

    $most = new Maior(10,15);
    $valueMaior = $most->maior();
    echo $valueMaior;
  • 1

    Ikaro, the builder is not required.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.