Ir para conteúdo

POWERED BY:

Arquivado

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

Fabiosousa

não estou incluindo dados de registro no BD Mysql

Recommended Posts

da maneira q você colocou agora o codigo, nao rolou:

 

$nome = trim($_POST['nome']);

$endereco = trim($_POST['endereco']);

 

dai modifiquei as apostrofes:

 

$nome = trim($_POST[`nome`]);

$endereco = trim($_POST[`endereco`]);

 

rolou, entrou mais um registro, so q so cria a sequencia do campo ID(q é automatico) e não mostra o conteudo que informo no formulario nos campos NOME e REGISTRO.

 

fica em branco, n aparece nada.

 

q sera?

Compartilhar este post


Link para o post
Compartilhar em outros sites

coloquei esse comando:

 

foreach($_POST as $nome => $nome) {$endereco = trim(strip_tags($endereco));}

 

e ele gravou no banco assim:

 

idcliente nome endereco

1

2

3 script

 

 

na terceira tentativa de cadastrar ele colocou no campo NOME a palavra SCRIPT

 

e será. Ja houve algum progresso. e no formulario eu coloquei outro nome, e n SCRIPT.

Compartilhar este post


Link para o post
Compartilhar em outros sites

veja no formulario:

 

<form method="post" action="cadastra_cli_teste.php">

<table width="75%" border="0">

<tr>

<td width="29%">Nome do Cliente</td>

<td width="71%"><input name="nome" type="text" size="50" maxlength="50"></td>

</tr>

<tr>

<td>Endereço</td>

<td><input name="endereco" type="text" size="50" maxlength="50"></td>

</tr>

<tr>

<td colspan="2">.</td>

</tr>

<tr>

<td> </td>

<td><input type="submit" name="Submit" value="Enviar"></td>

</tr>

</table>

</form>

 

 

na linha:

 

<td><input type="submit" name="Submit" value="Enviar"></td>

 

ta sindo esse nome como registro

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tira aquelas variáveis globais que não servem pra nada neste momento, no caso do $_POST, são apóstrofos mesmo.

 

Logo depois de declarar as variáveis $nome e $endereço faça assim:

echo $nome.$endereco;
exit;

Veja se aparece algo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

e o q substitui as GLOBAIS?

 

<?php
// Recebe variaveis globais do formulario CADASTRA_CLI_HTM.HTM
//global $nome;
//global $endereco;
echo $nome.$endereco;
exit;

// tirar espaços em branco das variaveis recebidas atraves do formulario
// $nome = trim($nome);
// $nome = trim($endereco);
foreach($_POST as $nome => $valor) {$$endereco = trim(strip_tags($valor));}
// $nome = trim($_POST[`nome`]);
// $endereco = trim($_POST[`endereco`]);

// consiste as variaveis recebidas
if (empty($nome) || empty($endereco)) {

/* comentar blocos de codigo
*/

// se campos obrigatorios nao preenchidos, recria formulario e exibe mensagem de erro
//echo('
//<html>
//<head>
//<title>Cadastra_cli.php</title>
//<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
//</head>
//<body bgcolor="#FFFFFF" text="#oooooo" link="#333399" vlink="#cc0000" alink="#663399">');

//echo ("<p><center><img src=\"topo.gif\" width=\"640\" height=\"44\"></center></p>");

//echo("<font locor=\"#FF0000\"><b>Campos(s) obrigatório(s) não preenchido(s)</br></font>");

//echo("
//<table width=\"640\" border=\"0\" cellspacing=\"0\" align=\"center\">
//<tr>
//  <td>
//	<p><b>Formulário de Inclusão:<br></b></p>
//	<form method=\"post\" action=\"cadastra_cli_teste.php\">
//	<p>Nome completo:
//	  <input type=\"text\" name=\"nome\" value=\"$nome\" size=\"25\" maxlength=\"50\"></p>
//	 </form>
//	</td>
//</tr>
//</table>
//");
//}
//else {
	// Inclui os dados na tabela clientes

	// Cria uma conexão com o servidor MYSQL passando host, username e senha

	$conec = mysql_connect ("localhost","root","estrela") or die ("Falha na conexão com o Banco de Dados");

	// Declaração SQL
	$declar = "INSERT INTO clientes (`nome`, `endereco`) VALUES ('$nome', '$endereco')";
	// $declar = "INSERT INTO clientes values ('$nome', '$endereco')";

	// Roda a query e trata o resultado
	$tipo_msg = 'I';
	if (mysql_db_query ("clinil",  $declar, $conec)) {
	   $ok = 1;
	   header("Location: exibe_mensagem.php?ok=$ok&tipo_msg=$tipo_msg");
	}
	else {
	   $ok = 2;
	   header("Location= exibe_mensagem.php?ok=$ok&tipo_msg=$tipo_msg");
	   // header("location: exibe_mensagem.php?variavel1=$variavel1&variavel2=$variavel2");
	}
	// Fechar a conexão com o servidor MYSQL (opcional)
	mysql_close ($conec);
}
?>
ai vai:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois é, denovo você tirou o que eu tinha sugerido.

 

$nome = trim($_POST['nome']);
$endereco = trim($_POST['endereco']);
Tudo que está acima disso você tira, tudo mesmo.

 

E depois disso que eu escrevi acima, você coloca isso:

echo $nome.$endereco;
exit;

Compartilhar este post


Link para o post
Compartilhar em outros sites

me retornou os dados q coloquei no formulario nos campos NOME e ENDEREÇO.

 

enchuguei o codigo todo:

 

<?php
$nome = trim($_POST['nome']);
$endereco = trim($_POST['endereco']);
echo $nome.$endereco;
exit;

if (empty($nome) || empty($endereco)) {

	$conec = mysql_connect ("localhost","root","estrela") or die ("Falha na conexão com o Banco de Dados");

	$declar = "INSERT INTO clientes (`nome`, `endereco`) VALUES ('$nome', '$endereco')";

	$tipo_msg = 'I';
	if (mysql_db_query ("clinil",  $declar, $conec)) {
	   $ok = 1;
	   header("Location: exibe_mensagem.php?ok=$ok&tipo_msg=$tipo_msg");
	}
	else {
	   $ok = 2;
	   header("Location= exibe_mensagem.php?ok=$ok&tipo_msg=$tipo_msg");

	}

	mysql_close ($conec);
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

poxa cara, nao foi.

 

tirei e so deu tela em branco.

 

caramba!!

 

seguinte:

 

qdo da certo, chama uma pagina MENSAGEM.PHP e grava no banco(mesmo sem registro em NOME e ENDERECO) mas gera automatico outro registro.

 

e qdo n rola(q foi o caso agora) n chama esa pagina MENSSAGEMPHP fica na pagina de cadastro mesmo PHP e da tela em branco.

 

falta pouco

 

 

nao ta passadno do 1o. IF

 

sara algo na linha ?

 

if (empty($nome) || empty($endereco)) {

Compartilhar este post


Link para o post
Compartilhar em outros sites

CARAAAAAAAAAMMMMMMMMMMMBAAAAAAAAA

você É FERA.

 

Vamos só ver a menssagem de "Inclusão Efetuada!" da pagina "exibe_mensagem.php"

 

que não ta mostrando.

 

a pagina: exibe_mensagem.php

 

 

<?php

global $ok;
$ok = trim($ok);

echo ("<p><center><img src=\"topo.gif\" width=\"640\" height=\"44\"></center></p>");

if ($tipo_msg == 'I') {
   // se inclusão OK
   if ($ok == 1) {
	  echo ("<br><br>");
	  echo ("<center><b><font size = 4> Inclusão Efetuada</font></b></center>");
	  echo ("<br>");
	  echo ("<center><b> <a href=\"cadastra_cli.htm\">Voltar</a></b></center>");
	  }

	  // se deu erro no cadastro
   if ($ok == 2) {
	  echo ("<br><br>");
	  echo ("<center><b><font size = 4> Erro - Cadastro não Efetuado</font></b></center>");
	  echo ("<br>");
	  echo ("<center><b> <a href=\"cadastra_cli.htm\">Voltar</a></b></center>");
	  }
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu tirei 01 "=" da linha

 

if ($tipo_msg == 'I') { e o global $ok;

 

e mostrou a mensagem de "Inclusão efetuada" bem certinho.

 

se eu tirar da mesagem "02" de erro se " cadastrar nao efetuado" , aparece as sduas mensagem de uma vez so de inclusão e de não inclusão.

 

tem como da um jeito?

 

pra finalizar,

 

Qdo eu preeenchesse errado o formulario, ou preenchesse com um nome q ja foi cadastrado ele me da uma mensagem!

 

por favor

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mesma coisa da variável superglobal, mas nesta situação como está vindo da URL, você deve utilizar $_GET.

 

$ok = $_GET['ok'];
$tipo_msg = $_GET['tipo_msg'];

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza ta rolando legal.

 

Só q se eu fizer um teste e n digitar nada no formulario, ele n me da nenhuma mensagem e fica na mesma pagina de inclusao em branca. E se eu digitar a mesa coisa q ja foi cadastrada me da a mensagem de "inclusao efetuada" e adiciona outro registo igual ao anterior dai fica duplicado no banco.

 

como resolvo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fabiosousa está usando o mysql_db_query ("clinil", $declar, $conec)

esse comando substitue o mysql_select_db?

 

Outra coisa, Fabiosousa, habilite no seu php.ini a exibição das mensagens de erro pois pode facilitar a solucão de problemas...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ai já é questão de lógica, é só pensar um pouco mais que a ficha vai cair.

 

Veja, se você tem um if, um único if verifica se os campos estão vazios, se estiverem não vai entrar neste if, naturalmente ele vai passar por ele, e o que tem fora dele? Nada.... logo, concluímos que não vai fazer nada. Imagem Postada

 

E para não incluir registros já existentes você precisa verificar antes se o registro já foi incluído.

 

O que o bdexterholland recomendou é bastante viável para visualizar os erros e ficar mais fácil o entendimento. No arquivo php.ini existe uma diretiva chamada display_errors que você pode colocar on, caso esteja off.

 

A questão da função mysql_db_query() eu já havia recomendado fazer a troca, mas ele voltou.

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.