Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

paulo123araujo

Erro para realizar cadastro

Recommended Posts

Estou fazendo um sistema de estoque e quando vou realizar o cadastro ele não mostra que realizou o cadastro, nem que deu erro.

Aqui vai o código da página cadastro.php:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Cadastro - Sistema</title>
<link href="style.css" type="text/css" rel="stylesheet"/>
<link href="custom.js" type="text/javascript"/>
</head>

<body>

<div id="add" class="txt"><a href="index.php"><img src="img/logo.png" height="50px" width="70px" style="margin-left:10px;"/>Início</a></div>

<center>
	<table style="border:1px solid thin; background:#7E0002;">
    	<tr style="background:#000000; color:#fff; height:50px;">
    		<td style="border:1px solid;" class="txt">Código do produto</td>
       		<td style="border:1px solid;" class="txt">Nome do produto</td>
        	<td style="border:1px solid;" class="txt">Número</td>
        	<td style="border:1px solid;" class="txt">Preço</td>
            <td style="border:1px solid;" class="txt">Foto</td>
    	</tr>
        <tr style="background:#C84400; color:#fff; height:50px;">
        	<form method="post" action="cadastrar_action.php">
    		<td style="border:1px solid;" class="txt"><label for="id_prod"><input type="text" name="id_prod" class="txt"/></label></td>
       		<td style="border:1px solid;" class="txt"><label for="nome_prod"><input type="text" name="nome_prod" class="txt"/></label></td>
        	<td style="border:1px solid;" class="txt"><label for="num_prod"><input type="text" name="num_prod" class="txt"/></label></td>
        	<td style="border:1px solid;" class="txt"><label for="preco_prod">R$<input type="text" name="preco_prod" class="txt"/>,00</label></td>
            <td style="border:1px solid;" class="txt">
				<label for="foto">Selecionar Foto</label>
			      	<div class="col-md-2">
					    <a href="#">
					      <img src="fotos/padrao.jpg" height="50px" width="40px">
					    </a>
				  	</div>
				<input type="file" name="foto" id="foto" value="foto" >
			</td>
        	<td style="border:1px solid;" class="txt"><input type="submit" value="Cadastrar" class="txt"/></td>
            <td style="border:1px solid;" class="txt"><input type="reset" value="Limpar" class="txt"/></td>
            </form>
    	</tr>
</center>
</body>
</html>

essa é a cadastro_action.php:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
	<title>Sistema de Cadastro</title>
	<link rel="stylesheet" type="text/css" href="style.css"/>
    <link type="text/javascript" href="custom.js"/>
</head>
<body>
	<div class='container box-mensagem-crud'>
		<?php 
		include ("conexao.php");

		// Atribui uma conexão PDO
		$conexao = conexao::getInstance();

		// Recebe os dados enviados pela submissão
		$acao  = (isset($_POST['acao'])) ? $_POST['acao'] : '';
		$cod_prod    = (isset($_POST['id_prod'])) ? $_POST['id_prod'] : '';
		$nome_prod  = (isset($_POST['nome_prod'])) ? $_POST['nome_prod'] : '';
		$num_prod  = (isset($_POST['num_prod'])) ? $_POST['num_prod'] : '';
		$preco_prod  = (isset($_POST['preco_prod'])) ? $_POST['preco_prod'] : '';
		$foto_atual		  = (isset($_POST['foto_atual'])) ? $_POST['foto_atual'] : '';
		// Valida os dados recebidos
		$mensagem = '';
		if ($acao == 'editar' && $id == ''):
		    $mensagem .= '<li>ID do registros desconhecido.</li>';
	    endif;

	    // Se for ação diferente de excluir valida os dados obrigatórios
	    if ($acao != 'excluir'):
			if ($cod_prod == ''):
				$mensagem .= '<li>Favor preencher o código do produto.</li>';
		    endif;

			if ($nome_prod == ''):
			   $mensagem .= '<li>Favor preencher o nome do produto.</li>';
		    endif;

			if ($num_prod == ''):
				$mensagem .= '<li>Favor preencher o número do chinelo.</li>';
			endif;

			if ($preco_prod == ''): 		
				$mensagem .= '<li>Favor preencher o preço do produto.</li>';
			endif;

			if ($mensagem != ''):
				$mensagem = '<ul>' . $mensagem . '</ul>';
				echo "<div class='alert alert-danger' role='alert'>".$mensagem."</div> ";
				exit;
			endif;
		endif;



		// Verifica se foi solicitada a inclusão de dados
		if ($acao == 'incluir'):

			$nome_foto = 'padrao.jpg';
			if(isset($_FILES['foto']) && $_FILES['foto']['size'] > 0):  

				$extensoes_aceitas = array('bmp' ,'png', 'svg', 'jpeg', 'jpg');
			    $extensao = strtolower(end(explode('.', $_FILES['foto']['name'])));

			     // Validamos se a extensão do arquivo é aceita
			    if (array_search($extensao, $extensoes_aceitas) === false):
			       echo "<h1>Extensão Inválida!</h1>";
			       exit;
			    endif;
 
			     // Verifica se o upload foi enviado via POST   
			     if(is_uploaded_file($_FILES['foto']['tmp_name'])):  
			             
			          // Verifica se o diretório de destino existe, senão existir cria o diretório  
			          if(!file_exists("img")):  
			               mkdir("img");  
			          endif;  
			  
			          // Monta o caminho de destino com o nome do arquivo  
			          $nome_foto = date('dmY') . '_' . $_FILES['foto']['name'];  
			            
			          // Essa função move_uploaded_file() copia e verifica se o arquivo enviado foi copiado com sucesso para o destino  
			          if (!move_uploaded_file($_FILES['foto']['tmp_name'], 'img/'.$nome_foto)):  
			               echo "Houve um erro ao gravar arquivo na pasta de destino!";  
			          endif;  
			     endif;  
			endif;

			$sql = 'INSERT INTO produto (cod_prod, nome_prod, num_prod, preco_prod, foto)
							   VALUES(:cod_prod, :nome_prod, :num_prod, :preco_prod, :foto)';

			$stm = $conexao->prepare($sql);
			$stm->bindValue(':cod_prod', $cod_prod);
			$stm->bindValue(':nome_prod', $nome_prod);
			$stm->bindValue(':num_prod', $num_prod);
			$stm->bindValue(':preco_prod', $preco_prod);
			$stm->bindValue(':foto', $nome_foto);
			$retorno = $stm->execute();

			if ($retorno):
				echo "<div class='alert alert-success' role='alert'>Registro inserido com sucesso, aguarde você está sendo redirecionado ...</div> ";
		    else:
		    	echo "<div class='alert alert-danger' role='alert'>Erro ao inserir registro!</div> ";
			endif;

			echo "<meta http-equiv=refresh content='3;URL=index.php'>";
		endif;


		// Verifica se foi solicitada a edição de dados
		if ($acao == 'editar'):

			if(isset($_FILES['foto']) && $_FILES['foto']['size'] > 0): 

				// Verifica se a foto é diferente da padrão, se verdadeiro exclui a foto antiga da pasta
				if ($foto_atual <> 'padrao.jpg'):
					unlink("fotos/" . $foto_atual);
				endif;

				$extensoes_aceitas = array('bmp' ,'png', 'svg', 'jpeg', 'jpg');
			    $extensao = strtolower(end(explode('.', $_FILES['foto']['name'])));

			     // Validamos se a extensão do arquivo é aceita
			    if (array_search($extensao, $extensoes_aceitas) === false):
			       echo "<h1>Extensão Inválida!</h1>";
			       exit;
			    endif;
 
			     // Verifica se o upload foi enviado via POST   
			     if(is_uploaded_file($_FILES['foto']['tmp_name'])):  
			             
			          // Verifica se o diretório de destino existe, senão existir cria o diretório  
			          if(!file_exists("img")):  
			               mkdir("img");  
			          endif;  
			  
			          // Monta o caminho de destino com o nome do arquivo  
			          $nome_foto = date('dmY') . '_' . $_FILES['foto']['name'];  
			            
			          // Essa função move_uploaded_file() copia e verifica se o arquivo enviado foi copiado com sucesso para o destino  
			          if (!move_uploaded_file($_FILES['foto']['tmp_name'], 'img/'.$nome_foto)):  
			               echo "Houve um erro ao gravar arquivo na pasta de destino!";  
			          endif;  
			     endif;
			else:

			 	$nome_foto = $foto_atual;

			endif;

			$sql = 'UPDATE produto SET cod_prod=:cod_prod, nome_prod=:nome_prod, num_prod=:num_prod, preco_prod=:preco_prod, foto=:foto ';
			$sql .= 'WHERE id_prod = :id_prod';

			$stm = $conexao->prepare($sql);
			$stm->bindValue(':cod_prod', $cod_prod);
			$stm->bindValue(':nome_prod', $nome_prod);
			$stm->bindValue(':num_prod', $num_prod);
			$stm->bindValue(':preco_prod', $preco_prod);
			$stm->bindValue(':foto', $nome_foto);
			$stm->bindValue(':id_prod', $id_prod);
			$retorno = $stm->execute();

			if ($retorno):
				echo "<div class='alert alert-success' role='alert'>Registro editado com sucesso, aguarde você está sendo redirecionado ...</div> ";
		    else:
		    	echo "<div class='alert alert-danger' role='alert'>Erro ao editar registro!</div> ";
			endif;

			echo "<meta http-equiv=refresh content='3;URL=index.php'>";
		endif;


		// Verifica se foi solicitada a exclusão dos dados
		if ($acao == 'excluir'):

			// Captura o nome da foto para excluir da pasta
			$sql = "SELECT foto FROM tab_clientes WHERE id = :id AND foto <> 'padrao.jpg'";
			$stm = $conexao->prepare($sql);
			$stm->bindValue(':id_prod', $id_prod);
			$stm->execute();
			$cliente = $stm->fetch(PDO::FETCH_OBJ);

			if (!empty($cliente) && file_exists('img/'.$cliente->foto)):
				unlink("img/" . $cliente->foto);
			endif;

			// Exclui o registro do banco de dados
			$sql = 'DELETE FROM produto WHERE id_prod = :id_prod';
			$stm = $conexao->prepare($sql);
			$stm->bindValue(':id', $id);
			$retorno = $stm->execute();

			if ($retorno):
				echo "<div class='alert alert-success' role='alert'>Registro excluído com sucesso, aguarde você está sendo redirecionado ...</div> ";
		    else:
		    	echo "<div class='alert alert-danger' role='alert'>Erro ao excluir registro!</div> ";
			endif;

			echo "<meta http-equiv=refresh content='3;URL=index.php'>";
		endif;
		?>

	</div>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tirei o upload da imagem para ver se era nele que estava dando erro, mas mesmo assim ele nao insere o novo cadastro no bd.

<?php 
		include ("conexao.php");

		$conexao = conexao::getInstance();

		$acao  = (isset($_POST['acao'])) ? $_POST['acao'] : '';
		$cod_prod    = (isset($_POST['id_prod'])) ? $_POST['id_prod'] : '';
		$nome_prod  = (isset($_POST['nome_prod'])) ? $_POST['nome_prod'] : '';
		$num_prod  = (isset($_POST['num_prod'])) ? $_POST['num_prod'] : '';
		$preco_prod  = (isset($_POST['preco_prod'])) ? $_POST['preco_prod'] : '';
		$foto_atual		  = (isset($_POST['foto_atual'])) ? $_POST['foto_atual'] : '';
		// Valida os dados recebidos
		$mensagem = '';
		if ($acao == 'editar' && $id == ''):
		    $mensagem .= '<li>ID do registros desconhecido.</li>';
	    endif;

	    // Se for ação diferente de excluir valida os dados obrigatórios
	    if ($acao != 'excluir'):
			if ($cod_prod == ''):
				$mensagem .= '<li>Favor preencher o código do produto.</li>';
		    endif;

			if ($nome_prod == ''):
			   $mensagem .= '<li>Favor preencher o nome do produto.</li>';
		    endif;

			if ($num_prod == ''):
				$mensagem .= '<li>Favor preencher o número do chinelo.</li>';
			endif;

			if ($preco_prod == ''): 		
				$mensagem .= '<li>Favor preencher o preço do produto.</li>';
			endif;

			if ($mensagem != ''):
				$mensagem = '<ul>' . $mensagem . '</ul>';
				echo "<h3 class=\"txt\">".$mensagem."</h3> ";
				exit;
			endif;
		endif;



		// Verifica se foi solicitada a inclusão de dados
		if ($acao == 'incluir'):

			$sql = 'INSERT INTO produto (cod_prod, nome_prod, num_prod, preco_prod)
							   VALUES(:cod_prod, :nome_prod, :num_prod, :preco_prod)';

			$stm = $conexao->prepare($sql);
			$stm->bindValue(':cod_prod', $cod_prod);
			$stm->bindValue(':nome_prod', $nome_prod);
			$stm->bindValue(':num_prod', $num_prod);
			$stm->bindValue(':preco_prod', $preco_prod);
			$retorno = $stm->execute();

			if ($retorno):
				echo "<h3>Registro inserido com sucesso, aguarde você está sendo redirecionado ...</h3> ";
		    else:
		    	echo "<h3>Erro ao inserir registro!</h3> ";
			endif;

			echo "<meta http-equiv=refresh content='3;URL=index.php'>";
		endif;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Habillitei o error info, mas mesmo assim ele não apresenta nenhum erro, ele mostra a tela sem nenhuma informação:

U18IjWu.png

<?php 
		ini_set('display_errors', true);
		error_reporting(E_ALL);
		
		include ("conexao.php");

		// Atribui uma conexão PDO
		$conexao = conexao::getInstance();

		// Recebe os dados enviados pela submissão
		$acao  = (isset($_POST['acao'])) ? $_POST['acao'] : '';
		$cod_prod    = (isset($_POST['id_prod'])) ? $_POST['id_prod'] : '';
		$nome_prod  = (isset($_POST['nome_prod'])) ? $_POST['nome_prod'] : '';
		$num_prod  = (isset($_POST['num_prod'])) ? $_POST['num_prod'] : '';
		$preco_prod  = (isset($_POST['preco_prod'])) ? $_POST['preco_prod'] : '';
		$foto_atual		  = (isset($_POST['foto_atual'])) ? $_POST['foto_atual'] : '';
		// Valida os dados recebidos
		$mensagem = '';
		if ($acao == 'editar' && $id == ''):
		    $mensagem .= '<li>ID do registros desconhecido.</li>';
	    endif;

	    // Se for ação diferente de excluir valida os dados obrigatórios
	    if ($acao != 'excluir'):
			if ($cod_prod == ''):
				$mensagem .= '<li>Favor preencher o código do produto.</li>';
		    endif;

			if ($nome_prod == ''):
			   $mensagem .= '<li>Favor preencher o nome do produto.</li>';
		    endif;

			if ($num_prod == ''):
				$mensagem .= '<li>Favor preencher o número do chinelo.</li>';
			endif;

			if ($preco_prod == ''): 		
				$mensagem .= '<li>Favor preencher o preço do produto.</li>';
			endif;

			if ($mensagem != ''):
				$mensagem = '<ul>' . $mensagem . '</ul>';
				echo "<h3 class=\"txt\">".$mensagem."</h3> ";
				exit;
			endif;
		endif;



		// Verifica se foi solicitada a inclusão de dados
		if ($acao == 'incluir'):

			$sql = 'INSERT INTO produto (cod_prod, nome_prod, num_prod, preco_prod)
							   VALUES(:cod_prod, :nome_prod, :num_prod, :preco_prod)';

			$stm = $conexao->prepare($sql);
			$stm->bindValue(':cod_prod', $cod_prod);
			$stm->bindValue(':nome_prod', $nome_prod);
			$stm->bindValue(':num_prod', $num_prod);
			$stm->bindValue(':preco_prod', $preco_prod);
			$retorno = $stm->execute() or exit(print_r($stm->errorInfo(), true));;

			if ($retorno):
				echo "<h3>Registro inserido com sucesso, aguarde você está sendo redirecionado ...</h3> ";
		    else:
		    	echo "<h3>Erro ao inserir registro!</h3> ";
			endif;

			echo "<meta http-equiv=refresh content='3;URL=index.php'>";
		endif;
		?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Provavelmente não está entrando em nenhum if.

Dê var_dump() nas variáveis importante, coloque echo's nos blocos para acompanhar a execução. Assim você vê os valores e qual é o fluxo da execução. Se preferir, pode usar um debugger como XDebug, mas os echo/var_dump já ajudam bastante

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dei o var_dump nas strings, mas mesmo assim não consegui achar o porque dele não executar o "acao=incluir".

http://imgur.com/YpujRqp

<?php 
		ini_set('display_errors', true);
		error_reporting(E_ALL);
		
		include ("conexao.php");

		// Atribui uma conexão PDO
		$conexao = conexao::getInstance();

		// Recebe os dados enviados pela submissão
		$acao  = (isset($_POST['acao'])) ? $_POST['acao'] : '';
		$cod_prod    = (isset($_POST['id_prod'])) ? $_POST['id_prod'] : '';
		$nome_prod  = (isset($_POST['nome_prod'])) ? $_POST['nome_prod'] : '';
		$num_prod  = (isset($_POST['num_prod'])) ? $_POST['num_prod'] : '';
		$preco_prod  = (isset($_POST['preco_prod'])) ? $_POST['preco_prod'] : '';
		$foto_atual		  = (isset($_POST['foto_atual'])) ? $_POST['foto_atual'] : '';
		$mensagem='';

	    // Se for ação diferente de excluir valida os dados obrigatórios
	    if ($acao != 'excluir'):
			if ($cod_prod == ''):
				$mensagem .= '<li>Favor preencher o código do produto.</li>';
		    endif;

			if ($nome_prod == ''):
			   $mensagem .= '<li>Favor preencher o nome do produto.</li>';
		    endif;

			if ($num_prod == ''):
				$mensagem .= '<li>Favor preencher o número do chinelo.</li>';
			endif;

			if ($preco_prod == ''): 		
				$mensagem .= '<li>Favor preencher o preço do produto.</li>';
			endif;

			if ($mensagem != ''):
				$mensagem = '<ul>' . $mensagem . '</ul>';
				echo "<h3 class=\"txt\">".$mensagem."</h3> ";
				exit;
			endif;
		endif;



		// Verifica se foi solicitada a inclusão de dados
		if ($acao == 'incluir'):

			$sql = 'INSERT INTO produto (cod_prod, nome_prod, num_prod, preco_prod)
							   VALUES(:cod_prod, :nome_prod, :num_prod, :preco_prod)';

			$stm = $conexao->prepare($sql);
			$stm->bindValue(':cod_prod', $cod_prod);
			$stm->bindValue(':nome_prod', $nome_prod);
			$stm->bindValue(':num_prod', $num_prod);
			$stm->bindValue(':preco_prod', $preco_prod);
			$retorno = $stm->execute() or exit(print_r($stm->errorInfo(), true));;
			var_dump ($retorno);
			
			
		endif;
		
		var_dump($acao, $cod_prod, $nome_prod, $num_prod, $preco_prod);
		?>

Compartilhar este post


Link para o post
Compartilhar em outros sites
não consegui achar o porque dele não executar o "acao=incluir".

verifique de onde vem essa variavel; se entendi bem,está vindo vazia..

(dica: verifique seu formulario com atenção)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui consertar.
O que estava ocorrendo era que o nome de uma variável estava errada, dai não cadastrava, e também o "acao=incluir" tava sendo recebido via post, coloquei ele no form da minha página com o valor "incluir" e funcionou perfeitamente. Obrigado pela ajuda!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.