Ir para conteúdo

POWERED BY:

Arquivado

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

Viper33

[Resolvido] Problema de inclusão

Recommended Posts

Caros colegas o meu problema é básico mas não consegui resolver. Para testar o banco criei um form de "cliente" e outro "cadastrar_cliente". A tabela só tem um dado pois o intuito é apenas testar o funcionamento. Outra dúvida é qual Collation usar. Meu banco é InnoDB. Segue abaixo meu código:

 

conexao.php

 

<?php
   $servidor  = "localhost";
   $usuarioBD = "root";
   $senhaBD   = "";
   $bd        = "dados";
   $con=mysql_connect($servidor,$usuarioBD,$senhaBD);
   mysql_select_db($bd);
?>

frm_cliente.php

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Cadastro de Cliente</title>
</head>

<body>

<form method="post" action="cadastrar_cliente.php">
<input type = "hidden" name="operacao" value="incluir" />
 <label>Nome
 <input name="txtnome" type="text" id="txtnome" size="50" maxlength="50" />
 </label>
 <p>
   <label>
   <input name="Enviar" type="submit" id="Enviar" value="Incluir" />
   </label>
 </p>
</form>
<p> </p>
</body>
</html>

 

cadastrar_cliente.php

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
<?
   $operacao = $_POST["operacao"];
include "conexao.php";
if($operacao=="incluir")
{
 	$nome = $_POST["txtnome"];
         $sql="INSERT INTO tbcliente(nome) VALUES ('$nome')";
         $res=mysql_query($sql)or die(mysql_error());
 	echo "Produto incluído com sucesso!"   	
   }
   else
   {
    	echo "Não foi possível incluir";    
   }
?>
<body>
</body>
</html> 

Compartilhar este post


Link para o post
Compartilhar em outros sites

echo "Produto incluído com sucesso!";

coloque o Ponto e Virgula no final do echo

 

Coloquei mas não resolveu. Quando clico em incluir aparece apenas uma página em branco sem aviso nenhum. Se eu usar INSERT INTO `tbcliente`(`nome`) VALUES ("Paulo") diretamente pelo banco funciona. Uso Mysql.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alterei e continua na mesma. Depois do clique em incluir observo que lá na barra de endereço aparece o seguinte: file:///C:/xampp/htdocs/Dados/cadastrar_cliente.php.

Ou seja ele está passando os dados para o outro form, mas não funciona.

Compartilhar este post


Link para o post
Compartilhar em outros sites

da um var_dump() em tudo que parecer suspeito e coloque

 

<?php
ini_set('display_errors',true);
error_reporting(E_ALL);
?>

Coloque isso /\ nas primeiras linhas da página cadastrar_cliente.php... Eu testei aqui e funcionou perfeitamente

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na mesma. Pior é que testei um programa de um colega meu e funcionou normal. Não usei as mesmas configurações que a dele pois o código dele é bem complexo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode ser as configurações do seu servidor recomendo você usar o easyPHP é fácil, leve e eficiente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvido: desinstalei e e reinstalei o xampp e está tudo funcionando normal.

E no Collation do banco: usei utf8_general_ci

Até agora está cadastrando normal com os acentos.

Grato ao colega que me ajudou nos post anteriores.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos Lá...Seu Codigo tá bem Mal Feito, Qualquer iniciante de Internet que entrar na sua Pagina vai poder colocar SQL Injection ou Sacanear seu Banco de Dados..

Tente Aprender Orientação a Objeto(eu tb Preciso e muito Ainda)..

Sua Conexao com OOP seria Assim...

 

A Identação do Codigo é Fundamental, Para seu codigo ser legivel a Outro Programador e para você mesmo;;

 

 

 

<?php
class conexao{

private $con;
private $servidor = "localhost";
private $user = "root";
private $senha = "";
private $db = dados;

public function Conecta(){
	// Eu Utilizaria o PDO para Conexoa..
	//Pq Seguraçã é tudo..
	$this->con = mysql_connect($this->servidor,$this->user,$this->senha);
	// você precisa definir qual Conexao você selecionou o Banco de Dados
	// pQ aSSIM SE você TIVER 10 CONEXOES EM 10 SERVIDORES DIFERENTES..
	// eles vão precisar Saber Aonde que tá..
	mysql_select_db($this->db, $this->con);		
}

}
?>

 

Para Codigos em PHP você não precisa Instaciar as TAG do HTML, só quando você for realmente utilizar o HTML..

 

Inclui Aqueel HTML Todinho e..

<form method="post" action="cadastrar_cliente.php">
<label>Nome</label><input name="txtnome" type="text" id="txtnome" size="50" maxlength="50" />
<input type="submit" value="Enviar" />
</form>

 

Agr você vai Pegar Todo Essa Informação que tava o seu Cliente Passou.. e Cadastrar no Banco de Dados e devolver uma Resposta para ele..

 

Retire Aquele HTML da Pagina

E Tenta Abrir o PHP com <?php ?>

 

require_once('conexao.php');
$con = new conexao();
$con->Conecta();

// tudo que vier do Usuario você precisa validar..
// Aqui você não ta usando nenhum FrameWork, então sugiro você utilizar uma Coisinha Simples..
// addslashes();
$texto = addslashes($_POST["txtnome"]);
if(!isset($texto)){
//troca o Index para a pagina que você tava cadastrando..
header("Location: index.php");	
}
// Se Der Errado da um var_dump(); ou um echo na Variavel sql e verifica o que tá Passando..
$sql = "insert into tbcliente(nome) values ('$texto')";
$query = mysql_query($sql) or  die("Erro na inserção");
if($query){
echo "Produto Incluido com Sucesso!";

}else{

echo "Não foi Posivel";	
}

 

Eu Sugiro que você Faça esse Codigo e se Esforçe Bastante para melhorar.. Tá Faltando Profissional de T.I no mercado e mesmo assim ganhamos uma Micharia....

Se você não gosta de Codigos é melhor você escolher outra profissão ..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pelas dicas. Hoje novamente o xampp tornou a dar problema. Por isso resolvi usar o Easy PHP.

 

Estou com problema na chave estrangeira.

 

Tenho a tabela de cliente que possui como foreign key o código da cidade. No form inicial tenho o seguinte código:

 

<select name="cidade" style="width:200px;">

<?php

$sql="SELECT * FROM tbcidade";

$res=mysql_query($sql);

while($dados=mysql_fetch_array($res))

{

echo " <option value='".$dados["cdcidade"]."'>".$dados["nmcidade"]." </option>\n";

}

?>

</select>

 

No form que recebe esses dados tenho:

 

<?php

$nome = $_POST["txtnome"];

$cpf = $_POST["txtcpf"];

$telefone = $_POST["txttel"];

$endereco = $_POST["txtrua"];

$numero = $_POST["txtnum"];

$complemento = $_POST["txtcomp"];

$bairro = $_POST["txtbairro"];

$cdcidade = $_POST["cidade"];

$cep = $_POST["txtcep"];

$email = $_POST["txtemail"];

include "conexao.php";

$sql="INSERT INTO tbcliente (nome , cpf, telefone, endereco, numero, complemento, bairro, cdcidade, cep, email)VALUES ('$nome','$cpf', '$telefone', '$endereco','$numero','$complemento', '$bairro','$cdcidade', '$cep','$email')";

$res=mysql_query($sql)or die(mysql_error());

?>

 

Mas aparece a seguinte mensagem (na tabela o código da cidade é int):

 

Notice: Undefined index: cidade in C:\Program Files\EasyPHP-12.0\www\Teste\cadastrar.php on line 9

INSERT INTO tbcliente (nome , cpf, telefone, endereco, numero, complemento, bairro, cdcidade, cep, email) VALUES ('','', '', '','','', '','', '','')Incorrect integer value: '' for column 'cdcidade' at row 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvido. Faltou colocar o include da conexão no formulário inicial. O interessante é que no código de um colega, ele não colocou nenhuma include e mesmo assim no form inicial dele as cidades são listadas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Defina exatamente o que você quer e se possivel poste todo o codigo tambêm leia este

topico pois ele pode te ajudar .

 

Ache o erro , eu nao tinha prestado muita atenção mais vi que o seu erro era de inserção, no bloco:

mysql_select_db($bd);

Você deve inserir a variavel que faz conexão.

mysql_select_db($bd, $con);

Ou então colocar só

mysql_connect($servidor,$usuarioBD,$senhaBD);

Sem definir como uma variavel

Então o codigo todo ficará assim:

<?php
   $servidor  = "localhost";
   $usuarioBD = "root";
   $senhaBD   = "";
   $bd        = "dados";
   $con = mysql_connect($servidor,$usuarioBD,$senhaBD);
   mysql_select_db($bd, $con);
?>

Resolvido

Compartilhar este post


Link para o post
Compartilhar em outros sites

Daniel,

 

Grato pela sua dica. Mas do jeito que eu tinha feito funcionou. O código abaixo é da conexão e bastou dar uma include na página que resolveu.

E Lampaed vou testar os códigos que você sugeriu para ver.

 

<?php

$servidor = "localhost";

$usuarioBD = "root";

$senhaBD = "";

$bd = "dados";

$con=mysql_connect($servidor,$usuarioBD,$senhaBD);

mysql_select_db($bd);

?>

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.