Ir para conteúdo

POWERED BY:

Arquivado

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

João Marcos Ferlini

Explicação de Funcionamento

Recommended Posts

Boa tarde!

 

Preciso de uma explicação sobre o funcionamento de um sistema simples de cadastro.

 

Tenho um formulário onde tem os campos (name="nomecliente" id="nomecliente", etc...), e um botão com action="cadastrarcliente.php".

 

Nesta página "cadastrarcliente.php" tem os códigos:


<?php

include("conexao.php");

$query = mysql_query("INSERT INTO `sisginweb`.`cadclientes` (`id`, `nomecliente`, `rg`, `cpf`, `datanasc`, `nomepai`, `nomemae`, `end`, `nr`, `bairro`, `cidade`, `estado`, `cep`, `feonecelular`, `foneresid`, `fonerecados`, `email`, `site`)
VALUES (NULL, '$nomecliente', rg, cpf, datanasc, nomepai, nomemae, end, nr, bairro, cidade, estado, cep, feonecelular, foneresid, fonerecados, email, site");

header("Location: home.php");

?>

Atualmente não está funcionando - Ele até direcionada para a página "home.php", mas efetuada nenhum registro.

 

Está faltando código?

Está correto?

 

Obrigado!

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Está errado.

 

$query = mysql_query("INSERT INTO `sisginweb`.`cadclientes` (`id`, `nomecliente`, `rg`, `cpf`, `datanasc`, `nomepai`, `nomemae`, `end`, `nr`, `bairro`, `cidade`, `estado`, `cep`, `feonecelular`, `foneresid`, `fonerecados`, `email`, `site`)
VALUES (NULL, '$nomecliente', rg, cpf, datanasc, nomepai, nomemae, end, nr, bairro, cidade, estado, cep, feonecelular, foneresid, fonerecados, email, site")or die(mysql_error());

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vc precisa declarar as variareis, ou ao menos usar elas.

 

Ali, vc só jogou um monte de nomes, que não possuem relação com nada.

NULL, '$nomecliente', rg, cpf
nota que existe um $nomecliente ? (variavel php não declarada), e pois um rg, que é um "nada" q não aponta para nada.

 

Vc precisa que todos os outros sejam tb variáveis e apontem para os dados enviados via POST.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Meu sistema está assim:

 

Formulário:

<form action="cadastrarclientes.php" method="post">
					<h2><b>Dados Principais:</b></h2>
					<label>Nome do Cliente: </label><input type="text" name="nomecliente" id="nomecliente"><br>
					<label>R.G.: </label><input type="text" id="rg"><label> CPF: </label><input type="text" id="cpf"><label> Data de Nascimento: </label><input type="text" id="datanasc"><br>
					<br>
					<h2><b>Filiação e Endereço:</b></h2>
					<label>Nome do Pai: </label><input type="text" id="nomepai"><label> Nome da Mãe: </label><input type="text" id="nomemae"><br>
					<label>Endereço: </label><input type="text" id="end"><label> Nº </label><input type="text" id="nr"><label> Bairro: </label><input type="text" id="bairro"><br>
					<label>Cidade: </label><input type="text" id="cidade"><label> Estado: </label><input type="text" id="estado"><label> Cep.: </label><input type="text" id="cep"><br>
					<br>
					<h2><b>Dados para Contato:</b></h2>
					<label>Telefone Celular: </label><input type="text" id="feonecelular"><label> Telefone Residencial: </label><input type="text" id="foneresid"><label> Telefone para Recados: </label><input type="text" id="fonerecados"><br>
					<br>
					<h2><b>Contato Eletrônico:</b></h2>
					<label>E-mail: </label><input type="text" id="email"><label> Site: </label><input type="text" id="site"><br>

					<input type="submit" value="Enviar"> 
				</form>

conexao.php

<?php
	
	//ip ou nome do servidor, usuario, senha, no da base dados
	$link = mysql_connect('localhost','root', '', 'sisginweb');
	
	mysql_select_db('sisginweb');

	// imprime os erros do MySQL, quando houver
	print mysql_error();

?>

cadastrarclientes.php

<?php

include("conexao.php");

	$id = $_POST['id'];
	$nomecliente = $_POST['nomecliente'];
	$rg = $_POST['rg'];
	$cpf = $_POST['cpf'];
	$datanasc = $_POST['datanasc'];
	$nomepai = $_POST['nomepai'];
	$nomemae = $_POST['nomemae'];
	$end = $_POST['end'];
	$nr = $_POST['nr'];
	$bairro = $_POST['bairro'];
	$cidade = $_POST['cidade'];
	$estado = $_POST['estado'];
	$cep = $_POST['cep'];
	$feonecelular = $_POST['feonecelular'];
	$foneresid = $_POST['foneresid'];
	$fonerecados = $_POST['fonerecados'];
	$email = $_POST['email'];
	$site = $_POST['site'];

	print mysql_error();

	$query = mysql_query("INSERT INTO `sisginweb`.`cadclientes` (`id`, `nomecliente`, `rg`, `cpf`, `datanasc`, `nomepai`, `nomemae`, `end`, `nr`, `bairro`, `cidade`, `estado`, `cep`, `feonecelular`, `foneresid`, `fonerecados`, `email`, `site`)
			VALUES (NULL, '{$nomecliente}', '{$rg}', '{$cpf}', '{$datanasc}', '{$nomepai}', '{$nomemae}', '{$end}', '{$nr}', '{$bairro}', '{$cidade}', '{$estado}', '{$cep}', '{$feonecelular}', '{$foneresid}', '{$fonerecados}', '{$email}', '{$site}'") or die(mysql_error());
	print mysql_error();
	header("Location: home.php");
 
?>

Mas está dando erro de variáveis não definidas...

 

Como eu defino as variáveis?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Depende, qual variável exatamente está dando não definida ?

 

Isso aqui:

$end = $_POST['end'];
é definir a variavel.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você está direcionando o post para está página? Dá um print_r($_POST) e vê o que retorna...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo la no formulario tem que colocar os names dos input, só o nomecliente tem o name="nomecliente", coloca nos outros tambem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Marcos,

 

Verdade. Fiz todas as alterações e parou de dar erro de variável, mas continua dando erro na minha conexão:

 

 

Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in C:\wamp\www\intranet\conexao.php on line 4 Call Stack # Time Memory Function Location 1 0.0010 258760 {main}( ) ..\cadastrarclientes.php:0 2 0.0020 261128 include( 'C:\wamp\www\intranet\conexao.php' ) ..\cadastrarclientes.php:3 3 0.0020 261512 mysql_connect ( ) ..\conexao.php:4

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 2


Serra,

 

Fiz o que você mencionou, e retornou as minhas variáveis juntamente com os dados digitados nos inputs.

 

Agora estou com problemas na minha conexão com o banco de dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A sua conexão não tem problema algum, o PHP apenas está informando que mysql_* "já era" e vai ser removido no futuro, o problema está na sua query.

 

Tente:

$query = mysql_query("INSERT INTO cadclientes (nomecliente, rg, cpf, datanasc, nomepai, nomemae, end, nr, bairro, cidade, estado, cep, feonecelular, foneresid, fonerecados, email, site)
VALUES ('$nomecliente', '$rg', '$cpf', '$datanasc', '$nomepai', '$nomemae', '$end', '$nr', '$bairro', '$cidade', '$estado', '$cep', '$feonecelular', '$foneresid', '$fonerecados', '$email', '$site'") or die(mysql_error());

Apenas ressaltando que se algum das variáveis tiver um ' no seu valor você deverá escapar com mysql_real_escape_string. Também lembrando que nunca é uma boa ideia pegar algo que vem de um formulário e jogar na query sem passar por algum tratamento.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Serra,

 

Obrigado pela ajuda. A "query" está errada mesmo...Só me ajuda mais com mais um detalhe (já querendo de mais),

 

( ! ) Deprecated: mysql_query(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in C:\wamp\www\intranet\cadastrarclientes.php on line 27 Call Stack # Time Memory Function Location 1 0.0010 258728 {main}( ) ..\cadastrarclientes.php:0 2 0.0760 269704 mysql_query ( ) ..\cadastrarclientes.php:27

 

No database selected

 

Não estou conseguindo selecionar o banco de dados...

 

Me ajuda?

 

O código de conexão do arquivo conexao.php é:

<?php

$link = mysqli_connect('localhost', 'root', '', 'sisginweb');

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vc tá misturando mysqli com mysql_

 

são duas coisas diferentes por causa do i final. Vc não pode conectar com uma lib, e tentar fazer queries com outra lib.

Escolha só uma das duas, no caso, só a mysqli, e use mysqli em tudo. (na conexão, na query..)

Compartilhar este post


Link para o post
Compartilhar em outros sites

ESerra já respondeu essa sua dúvida :)

 

 

A sua conexão não tem problema algum, o PHP apenas está informando que mysql_* "já era" e vai ser removido no futuro, o problema está na sua query.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vc tem q usar mysqli em tudo.

Assim que resolve.

 

<?php

$mysqli = new mysqli('localhost', 'root', '', 'sisginweb');

?>
$query = $mysqli->query("INSERT INTO `sisginweb`.`cadclientes` (`id`, `nomecliente`, `rg`, `cpf`, `datanasc`, `nomepai`, `nomemae`, `end`, `nr`, `bairro`, `cidade`, `estado`, `cep`, `feonecelular`, `foneresid`, `fonerecados`, `email`, `site`)
			VALUES (NULL, '{$nomecliente}', '{$rg}', '{$cpf}', '{$datanasc}', '{$nomepai}', '{$nomemae}', '{$end}', '{$nr}', '{$bairro}', '{$cidade}', '{$estado}', '{$cep}', '{$feonecelular}', '{$foneresid}', '{$fonerecados}', '{$email}', '{$site}'")or die($mysqli->error);

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.