Return does not work

Asked

Viewed 78 times

0

The Return of the method registrarProduto() is only returning false, he always gets into the else of if of the page products.php. Even he registering the product all straight in the bank it shows only: Failure to register product !.

php products.

<?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;
    }
}
?>

1 answer

1

Remove that line

$p->cadastrarProduto();

Who is before that if

if($p->cadastrarProduto()) {

When you set the function as a condition in if, it runs. Then you are running the same function twice in a row. Test and leave in the comments.

  • Oops, that’s right, buddy! Thank you very much.

  • All right, anything, we’re there.

Browser other questions tagged

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