Ir para conteúdo
Fórum Script Brasil
  • 0

Verificando dados antes de inserção em banco de dados


Jetro

Pergunta

Ola amigos

Fui programador Cobol nos anos 80 e agora estou aprendendo PHP.

O Script Brasil me tem sido muito util.

Estou com um problema de iniciante.

Criei uma tabela de cadastro de clientes http://www.spil.com.br/cadcli/cad.htm e a rotina de incersão já esta funcionando.

Eu irei colocar o CPF como o primeiro campo a fim de que quando um cadastro novo seja inserido, haja uma consulta rapida para saber se este "fulano" já esta cadastrado e se estiver, os dados sejam mostrados na tela para que possibilite alteraões nos seus dados.

Realmete preciso muito de um script para esta rotina.

Valeu mesmo

Jetro

Link para o comentário
Compartilhar em outros sites

18 respostass a esta questão

Posts Recomendados

  • 0

Para fazer isso você deve antes de continuar o processo fazer um SELECT com o CPF indicado..., pelo que vi no seu form, o nome do campo do CPF é cpfcli... logo:

<?php
//Faz as conexões com o banco de dados e escolhe a tabela, isso já tem pronto aqui no fórum
$cpf = $_POST['cpfcli'];
$sql = mysql_query("SELECT * FROM tabela WHERE campodocpf = '$cpf'"); //Substituiu tabela pelo nome da tabela onde os registros são guardados e campodocpf pela coluna onde o cpf é armazenado
$testa = mysql_num_rows($sql); //Aqui ele conta quantos resultados retornaram
if ($testa >= 1){//Se o $testa for maior ou igual a 1 é porque achou um CPF já cadastrado
echo "Esse CPF já está cadastrado";
exit;
}else{
//continua o cadastro porque o CPF não foi encontrado
}

Só vou te ressaltar um negócio, ANTES de você colocar o CPF no banco trate ele, deixe ele com os ponto e o traço (012.345.678.90) ou sem nada (01234567890), pois se você for deixar o usuário digitar livremente vai ter problemas, inclusive você pode usar uma máscara para CPF... já tem pronto no sub-fórum de javascript.

Link para o comentário
Compartilhar em outros sites

  • 0

Eu faria o seguinte:

Deixaria o campo CPF como campo único (Unique Key) - não deixaria com chave primária pois sempre coloco o campo ID nas tabelas - e faria o Insert diretamente. Se fosse retornado o erro 1062 do MySQL ("Diplicate Entry"), o CPF já estaria cadastrado, então faria um Select.

Eu faria assim pois acho o Insert mais rápido do que um Select (principalmente se houver muitos campos na tabela). Se o CPF não estiver cadastrado, apenas será feito o Insert, tornando o sistema mais rápido.

Só lembrando, Jetro, que seu sistema está coma falha de segurança: você não pode exibir os dados somente se o CPF já estiver cadastrado. O ideal é que usuários cadastrados tenham uma senha, caso contrário qualquer pessoa alterará dados de outras. ;)

[]'s

Link para o comentário
Compartilhar em outros sites

  • 0

Valeu ESerra e Beraldo;

Busquei porai e já estou neste nível ó:

O link da minha rotina é: http://www.spil.com.br/cadcli/iniciacad.htm

O Script é:

<?php

include "conexao053.php";

$cpf = $_REQUEST['cpf'];

$sql = mysql_query("SELECT * FROM cadcli WHERE cpfcli = " . $cpf);

if(!$sql)

{

echo 'Este CPF ainda não foi cadastrado.';

echo "<script language=javaScript'>window.location.href='iniciacad.htm'</script>";

}

else

{

$array = mysql_fetch_array($sql);

echo '<input name="estadocivilcli" id="estadocivilcli"

value="'.$array['estadocivilcli].'"><br /><input type="submit" value="Alterar"/></form>';

$estadocivilcli = "TESTE";

mysql_query("UPDATE cadcli SET estadocivilcli = ".$estadocivilcli);

}

mysql_close($link);

?>

Está quase funcionando, só que, acontece que os dados da tabela não se alteram.

...e acontece algo estranho também: Quando entro com "letras" aparece o erro de "CPF não cadastrado..." mas quando entro com qualquer número, segue como se fosse CPF já cadastrado... mas o meu maior problema mesmo é que os dados não se alteram no BD.

Isso é só um teste de funcionamento para o Formulario que já tenho pronto em www.spil.com.br/cadcli.cad.htm

vocês podem me ajudar?

Valeu mesmo.

Jetro

Link para o comentário
Compartilhar em outros sites

  • 0

Quanto ao problema de aceitar qualquer número, você está testando a $sql, logo se ela for válida ela vai ir para o else, se for inválida, vai ficar no if, o que você tem que fazer é ver se o cfp informado é encontrado no banco, use mysql_num_rows para ver isso... ficaria mais ou menos assim:

$sql = mysql_query("SELECT * FROM cadcli WHERE cpfcli = '". $cpf."'");
$conta = mysql_num_rows($sql);

if($conta == 0)
{
echo 'Este CPF ainda não foi cadastrado.';
echo "<script language='javaScript'>window.location.href='iniciacad.htm'</script>";
}

elseif ($conta == 1){
$array = mysql_fetch_array($sql);

//rotina para buscar os dados do BD

}else{exit;}
Quanto ao fato de não estar alterando os dados é pelo simples motivo de que, pelo que eu entendi, esse script busca os dados a partir do CPF, só que você tem que buscar, colocar esses dados em um form, e utilizar um botão que vai enviar esses dados para serem alterados pelo UPDATE, ou seja, o UPDATE não pode ficar onde está no momento... ficaria algo do tipo...
<?php

include "conexao053.php";

$cpf = $_REQUEST['cpf'];

$sql = mysql_query("SELECT * FROM cadcli WHERE cpfcli = '". $cpf."'");
$conta = mysql_num_rows($sql);

if($conta == 0)
{
echo 'Este CPF ainda não foi cadastrado.';
echo "<script language='javaScript'>window.location.href='iniciacad.htm'</script>";
}

elseif ($conta == 1){
$array = mysql_fetch_array($sql);

//rotina para buscar os dados do BD

}else{exit;}

if ($_POST['Submit'] != ""){
//Aqui você coloca a rotina para fazer o update

}else{}

mysql_close($link);

?>

Link para o comentário
Compartilhar em outros sites

  • 0

Cara...!

Não altera os dados da tabela de jeito algum! :blink:

você disse: "Quanto ao fato de não estar alterando os dados é pelo simples motivo de que, pelo que eu entendi, esse script busca os dados a partir do CPF, só que você tem que buscar, colocar esses dados em um form, e utilizar um botão que vai enviar esses dados para serem alterados pelo UPDATE..."

Seria pedir demais pra você colocar esse "Form" preu ver como é?

estou tomando uma surrinha...! :D

Valeu Mesmo

Jetro

Editado por Jetro
Link para o comentário
Compartilhar em outros sites

  • 0

<?php
session_start();
include "conexao053.php";

$cpf = $_REQUEST['cpf'];

$sql = mysql_query("SELECT * FROM cadcli WHERE cpfcli = '". $cpf."'");
$conta = mysql_num_rows($sql);

if($conta == 0)
{
echo 'Este CPF ainda não foi cadastrado.';
echo "<script language='javaScript'>window.location.href='iniciacad.htm'</script>";
}

elseif ($conta == 1){
$array = mysql_fetch_array($sql);
$_SESSION['cpf'] = $cpf;
$nome = $array['nome'];
echo"<form action='AQUI O NOME DA PÁGINA QUE VAI FAZER O UPDATE' method='post'> 
Nome <input type='text' name='nome' size='30' maxlength='100' value='$nome'> 
<br> 
<input type='submit' name='submit' value='Enviar formulário'> 
</form>";

}else{exit;}

if ($_POST['submit'] != ""){
//Aqui você coloca a rotina para fazer o update
//Primeiro você pega os valores do formulário que está ai em cima
$nome = $_POST['nome'];
//Agora você faz o update...

}else{}

mysql_close($link);

?>

Ai um exemplo, pegando da tabela um valor do BD da coluna nome, pegando esse valor e jogando no form para a pessoa editar, ai o valor que a pessoa colocar no form será enviada para o update...

Caso não tenha entendido a parte do formulário, use o google para estudar o uso de formulário em páginas web.

Link para o comentário
Compartilhar em outros sites

  • 0

Legal amigo. Agradeço sua atenção. De verdade.

Mas acontece que neste caso, (link indicado) não existe justamente a "Alteração" dos dados e é exatamente nisso que eu travei. :blink:

Jetro Bernardo

Link para o comentário
Compartilhar em outros sites

  • 0

Não?

<?php

// Conecta ao BD

mysql_pconnect("localhost", "USER", "SENHA");
mysql_select_db("BANCO");

// Pega os dados do form, e passa para variáveis

$nome = $_POST[nome];

// Consulta os dados do BD

$sql = mysql_query("SELECT * FROM `teste` WHERE `descr` LIKE '$nome'");

while($l = mysql_fetch_array($sql)) {

$descr = $l["descr"];
}

echo "<HTML>";
echo "<BODY>";
echo "<form method='post' action='busca.php'>";
echo "O resultado da pesquisa é:<input type='text' name='nome'value='$descr'>";
echo "</form>";
echo "<BODY>";
echo "<HTML>";
?>

Essa parte busca um dado do BD e joga num campo, basta colocar a rotina para UPDATE e o botão de enviar...

Link para o comentário
Compartilhar em outros sites

  • 0

Você não sabe fazer um UPDATE? No seu primeiro post já tinha a rotina de update...

mysql_query("UPDATE cadcli SET nome = '$nome' WHERE cpf = '".$_SESSION['cpf']."'");

Olá

Revirei tudo e não achei este Post.

Fiquei curioso... você pode me direcionar de alguma forma?

Att.

Jetro Bernardo

Link para o comentário
Compartilhar em outros sites

  • 0

Claro... o quote do seu post com a rotina de update está ai em baixo.. clique na setinha para ser levado ao post original...

Valeu ESerra e Beraldo;

Busquei porai e já estou neste nível ó:

O link da minha rotina é: http://www.spil.com.br/cadcli/iniciacad.htm

O Script é:

<?php

include "conexao053.php";

$cpf = $_REQUEST['cpf'];

$sql = mysql_query("SELECT * FROM cadcli WHERE cpfcli = " . $cpf);

if(!$sql)

{

echo 'Este CPF ainda não foi cadastrado.';

echo "<script language=javaScript'>window.location.href='iniciacad.htm'</script>";

}

else

{

$array = mysql_fetch_array($sql);

echo '<input name="estadocivilcli" id="estadocivilcli"

value="'.$array['estadocivilcli].'"><br /><input type="submit" value="Alterar"/></form>';

$estadocivilcli = "TESTE";

mysql_query("UPDATE cadcli SET estadocivilcli = ".$estadocivilcli);

}

mysql_close($link);

?>

Está quase funcionando, só que, acontece que os dados da tabela não se alteram.

...e acontece algo estranho também: Quando entro com "letras" aparece o erro de "CPF não cadastrado..." mas quando entro com qualquer número, segue como se fosse CPF já cadastrado... mas o meu maior problema mesmo é que os dados não se alteram no BD.

Isso é só um teste de funcionamento para o Formulario que já tenho pronto em www.spil.com.br/cadcli.cad.htm

vocês podem me ajudar?

Valeu mesmo.

Jetro

Link para o comentário
Compartilhar em outros sites

  • 0

Claro... o quote do seu post com a rotina de update está ai em baixo.. clique na setinha para ser levado ao post original...

Olá amigo.

Agora entendi o que se passa.

Esse "UPDATE" a que você se refere, não fui eu quem criou. Foi apenas um estudo proposto por um outro colega (phpbb) em http://www.phpbbrasil.com.br/phpBB/viewtopic.php?t=11421

Mas não funcionou e lá, fiquei sem resposta. (lá, você pode constatar a data do meu ultimo post) Por isso, vim para o ScriptBrasil e estou obtendo mais respostas. Msa de qualquer forma, o resultado é o mesmo. Não consigo entender a lógica desse UBDATE. Não consigo o fazer funcionar e até agora. Estou Travado nesse ponto.

Eu precisaria de um script simples de tudo, de como se Alterar dados de uma tabela e não consigo encontrar em lugar nenhum.

Att.

Jetro Bernardo

Editado por Jetro
Link para o comentário
Compartilhar em outros sites

  • 0

Olá Victor

Meu problema é a "mesclagem" do Formulário HTM com o UPDATE entende?

Eu não sei como fazer para "Printar" os dados obtidos da consulta e disponibiliza-los para alteração.

Neste link http://www.phpbbrasil.com.br/phpBB/viewtop...p=108481#108481 o Estevão estava me entendendo e quase chegou onde eu estava precisando. Mas sumiu! :blink:

Att.

Jetro

Editado por Jetro
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...