Return does not work

0

The return of method registrarProduto() is only returning false , it always enters else of if of page productos.php. Even if he registered the product all right in the bank it only shows: Failed to register product! .

products.php

<?php
require 'classes/produtos.class.php';

$p = new Produtos();

    if(empty($_SESSION['pLogin'])) {
        ?>
            <script type="text/javascript">alert("Lammer não passa daqui 
KKKKKKK!");</script>    
            <script type="text/javascript">window.location.href="index.php";
</script>   
        <?php
        exit;
    }

    if(isset($_POST['produto']) && !empty($_POST['produto'])) {

        $produto = addslashes($_POST['produto']);
        $quantidade = addslashes($_POST['quantidade']);

        $p->setProduto($produto);
        $p->setQuantidade($quantidade);
        $p->cadastrarProduto();

        if($p->cadastrarProduto()) {
            echo "Produto cadastrado com sucesso !";
        } else {
            echo "Falha ao cadastrar produto !";
        }
    }

?>
<br/>
<div align="center" class="produtos">
    <h3>CADASTRAR PRODUTOS | AssCTF</h3>
        <form method="post">
            Produto<br/>
            <input type="text" name="produto" /><br/><br/>

            Quantidades<br/>
            <input type="number" name="quantidade" /><br/><br/>

            <input type="submit" name="Cadastrar Produto" />
        </form>
</div>
<table align="center" width="400" border="1">
    <th>Produtos</th>
    <th>Quantidade</th>
<?php
$result = $p->selecionarProduto();
foreach ($result as $item) {
    ?>
    <tr align="center">
        <td><?php echo $item['produto']; ?></td>
        <td><?php echo $item['quantidade']; ?></td>
    </tr>
   <?php
}
?>
</table>

products.class.php

<?php
session_start();

class Produtos {

    private $db;
    private $produto;
    private $quantidade;

    public function __construct() {

        try {

            $this->db = new PDO("mysql:dbname=projeto_oo;host=localhost", 
"root", "");

        } catch(PDOException $e) {

            echo "FALHA: ".$e->getMessage();

        }
    }

    public function getProduto() {
        return $this->produto;
    }

    public function setProduto($value) {
        $this->produto = $value;
   }

   public function getQuantidade() {
        return $this->quantidade;
   }

   public function setQuantidade($value) {
        $this->quantidade = $value;
   }

   public function cadastrarProduto() {

        $sql = $this->db->prepare("SELECT * FROM produtos WHERE produto = 
:produto");
        $sql->bindValue(":produto", $this->produto);
        $sql->execute();

            if($sql->rowCount() == 0 ) {
                $sql = $this->db->prepare("INSERT INTO produtos SET produto 
= :produto, quantidade = :quantidade");
                $sql->bindValue(":produto", $this->produto);
                $sql->bindValue(":quantidade", $this->quantidade);
                $sql->execute();

               return true;
            } 
        return false;
    }

    public function selecionarProduto() {
        $sql = $this->db->prepare("SELECT * FROM produtos");
        $sql->execute(); 

        $array = array();

        if($sql->rowCount() > 0) {

            $array = $sql->fetchAll();

        }   
       return $array;
    }
}
?>
    
asked by anonymous 06.12.2017 / 08:10

1 answer

1

Remove this line

$p->cadastrarProduto();

What's before this if

if($p->cadastrarProduto()) {

When you place the function as a condition in if, it is executed. Then you are running the same function twice. Test and leave in comments.

    
06.12.2017 / 09:47