Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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!
Este código é necessário?
$nomecliente = $_POST['nomecliente'];
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, cpfnota 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.
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?
Depende, qual variável exatamente está dando não definida ?
Isso aqui:
$end = $_POST['end'];é definir a variavel.
Todas...O erro é persiste em todas as variáveis.
Você está direcionando o post para está página? Dá um print_r($_POST) e vê o que retorna...
Amigo la no formulario tem que colocar os names dos input, só o nomecliente tem o name="nomecliente", coloca nos outros tambem.
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.
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.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');
?>Alguem consegue me ajudar?
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..)
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.
Sim, entendi sobre a dúvida.
Mas como resolvo (oculto exibição)?
Poque mesmo ocultado, não está sendo feito a inserção dos dados no banco de dados.
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);
Está errado.