Solucionado (ver solução)
Solucionado
(ver solução)
10
respostas

IF com string vazia

Alguém pode me dizer o que está errado? Quero que ele entre no IF caso não haja aquele código cadastrado no banco de dados, e no ELSE caso já exista para que as informações daquele do banco sejam alteradas, porém quando rodo ele adiciona outro produto no BD e não edita, ou seja, ta entrando direto no IF e pulando o ELSE.

function cadastraJogo($conexao, $codigo, $nome, $empresa, $ano, $modalidade, $valor, $descricao) {

        if($codigo ==""){
            $query = "insert into jogo (nome, empresa, ano, modalidade, valor, descricao) values ('{$nome}', '{$empresa}', {$ano}, '{$modalidade}', {$valor}, '{$descricao}')";
        }else{
            $query = "update jogo set nome = '{$nome}', empresa = '{$empresa}', ano = {$ano}, modalidade = '{$modalidade}', valor = {$valor}, descricao = '{$descricao}' where codigo = {$codigo}";
        }

        return mysqli_query($conexao, $query);
10 respostas

vc pode usar a funcao empty para verificar a string vazia... de todo jeito, a variavel codigo nao deve estar vazia, por isso entra no if. Nao eh que ele ta pulando o else.

Então, mas mesmo quando ela não tá vazia ele entra no if, quando deveria entrar no else. Só pode entrar no if se estiver vazia, mas não tá acontecendo.

De que forma você está chamando a função Cesar?

if (cadastraJogo($conexao, $codigo, $nome, $empresa, $ano, $modalidade, $valor, $descricao)){ // chama a função que cadastra o jogo
        ?>
            <p class="text-success text-center texto"> Jogo adicionado com sucesso.</p>
        <?php }  
        else { 
                $msgErro = mysqli_error($conexao); ?>
                <p class="text-danger text-center texto"> O jogo não foi adicionado</br><?=$msgErro?></p>
                <?php
                }?>

Qual o valor de $codigo no momento que você chama a função cadastraJogo()? Dá um var_dump e posta o resultado aqui pra gente.

$jogo = buscaJogo($conexao, $codigo);
var_dump($codigo);

Assim ele retorna: string(2) "41"

function cadastraJogo($conexao, $codigo, $nome, $empresa, $ano, $modalidade, $valor, $descricao) {
        var_dump($codigo);

Assim ele retorna NULL

Eu tenho minha pagina cadastraJogo.php nela tem um formulário que quando o usuário da submit envia as informações para uma pagina chamada adicionaJogo.php e de lá vai para o BD, pelo que entendi, quando clico em editar, ele envia o numero do código (ID) para a página cadastroJogo.php e com isso recupera os dados daquele cadastro no meu fomulário, mas quando eu edito e dou um submit ele não ta passando o código, por isso ta sempre incluindo um novo cadastro ao invés de editar.

to passando o código da mesma maneira que os outros dados.

<form class="form-group" action="adicionaJogo.php" method="POST">
                <table class="table">
                    <tr>
                        <td><label>Codigo:</label></td><td><input class="form-control" type="text" name="nome" value="<?=$jogo['codigo']?>" readonly></td>
                    </tr>

e na página adicionajogo.php

<?php 

        $codigo = $_POST['codigo'];        
        $nome = $_POST['nome'];
        $empresa = $_POST['empresa'];
        $ano = $_POST['ano'];
        $modalidade = $_POST['modalidade'];
        $valor = $_POST['valor'];
        $descricao = $_POST['descricao'];

        var_dump($codigo);

        if (cadastraJogo($conexao, $codigo, $nome, $empresa, $ano, $modalidade, $valor, $descricao)){ /
solução!

Acho que sei o problema Cesar, o seu input está com o atributo name com o valor de nome ou seja, está assim name="nome" fazendo com que $_POST['codigo'] não exista, troque para name="codigo" e testa ai, talvez seja isso.

Nossa, tempão me debatendo, e o problema era esse. Bom pra aprender a ficar mais esperto e ler direito as coisa hahaha.

Obrigado Daniel!

Esses errinhos bobos que sempre levam muuuito tempo da gente sempre acontecem. xD

Até.