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

Verificação antes do envio do formulário


Portal do Químico

Pergunta

Seguinte pessoal, eu estou até agora: 01:25AM (Horário de Brasilia), tentando fazer essa droga funcionar.

Estou precisando verificar um campo antes que o formulário seja enviado, ou seja, quando eu trocar desse campo deve se fazer uma verificação para que retorne se o valor já estiver presente no banco de dados.

Please, alguém me de uma luz nessa BIG DOUBT...

Vou postar o codigo da página que uso para inserir o código:

<?php require_once('../../Connections/portal_quimico_conexao.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  $insertSQL = sprintf("INSERT INTO paginas_secoes (nome, descricao) VALUES (%s, %s)",
                       GetSQLValueString($_POST['nome'], "text"),
                       GetSQLValueString($_POST['descricao'], "text"));

  mysql_select_db($database_portal_quimico_conexao, $portal_quimico_conexao);
  $Result1 = mysql_query($insertSQL, $portal_quimico_conexao) or die(mysql_error());

  $insertGoTo = "index.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
    $insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $insertGoTo));
}

mysql_select_db($database_portal_quimico_conexao, $portal_quimico_conexao);
$query_rs_secao_cadastro = "SELECT * FROM paginas_secoes";
$rs_secao_cadastro = mysql_query($query_rs_secao_cadastro, $portal_quimico_conexao) or die(mysql_error());
$row_rs_secao_cadastro = mysql_fetch_assoc($rs_secao_cadastro);
$totalRows_rs_secao_cadastro = mysql_num_rows($rs_secao_cadastro);
?><!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>Portal do Qu&iacute;mico - Cadastro de Se&ccedil;&otilde;es</title>
</head>

<body>
<form method="post" name="form1" action="<?php echo $editFormAction; ?>">
  <table align="center">
    <tr valign="baseline">
      <td nowrap align="right">Nome:</td>
      <td><input type="text" name="nome" value="" size="32"></td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right" valign="top">Descrição:</td>
      <td><textarea name="descricao" cols="50" rows="5"></textarea>
      </td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">&nbsp;</td>
      <td><input type="submit" value="Registrar Se&ccedil;&atilde;o"></td>
    </tr>
  </table>
  <input type="hidden" name="MM_insert" value="form1">
</form>
<p>&nbsp;</p>
</body>
</html>
<?php
mysql_free_result($rs_secao_cadastro);
?>

PS: Li, Re-li e não consegui utilizar o ajax (Nunca utilizei). Portanto, se for preciso usar, claro que se não for pedir de mais, poste um passo a passo e porque foi feito isso.

Obrigado, qualquer coisa é só falar!

OBS: O CAMPO A SER VERIFICADO É O CAMPO NOME!

Editado por Portal do Químico
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Olá amigo utilizando o Jquery você resolve o problema facilmente

Vamos lá

Primeiro entre no site www.jquery.com e baixe a versão mais nova

Feito isso coloque o jquery.js que você baixou dentro de uma pasta no seu site, ou onde desejar.

Coloque a chamada ao seu script js dentro da tag header do seu arquivo por exemplo <script type="text/javacript" src="pasta/jquery.js"></script>

Beleza meio caminho andado. Agora crie um arquivo PHP que consulta o nome no banco de dados por exemplo consultaNome.php

<?php

//esse post você vai receber via AJax com o uso do Jquery

$nome = $_POST['nome'];

$sql = "SELECT nome FROM suatabela WHERE nome = '$nome'";

//faz a consulta

//verifica se retornou algo

if(mysql_num_rows($sql) > 0)

{

// estou retornando 1 para informar ao Jquery que encontrou registro, esse retorno pode ser qualquer coisa até mesmo "nome duplicado" o que você quiser basta tratar no Jquery mais adiante

echo 1;

}

else

{

echo 0;

}

?>

Agora vamos ao Ajax com Jquery

<script type="text/javascript">

$(document).ready(function(){

//no campo input nome precisa ter o id="nome" também.

// aqui estou dizendo ao Jquery que ele execute os processos abaixo quando o campo com id="nome" for alterado

$('#nome').change(function(){

//essa é a função do Jquery que faz o Ajax, chamando o arquivo php que vai receber o valor do campo nome

$.post('consultaNome.php', { nome: $('#nome').val() } function(data) {

// se retornar 1 como definimos no arquivo consultaNome.php é porque já existe no banco então damos um alert informando e limpamos o campo nome e damos foco a ele

if(data == 1)

{

alert('Nome já cadastrado');

$('#nome').val('');

$('#nome').focus();

}

});

});

});

</script>

é isso qualquer dúvida pode me mandar um e-mail rafaeleo@gmail.com

Abraços

Seguinte pessoal, eu estou até agora: 01:25AM (Horário de Brasilia), tentando fazer essa droga funcionar.

Estou precisando verificar um campo antes que o formulário seja enviado, ou seja, quando eu trocar desse campo deve se fazer uma verificação para que retorne se o valor já estiver presente no banco de dados.

Please, alguém me de uma luz nessa BIG DOUBT...

Vou postar o codigo da página que uso para inserir o código:

<?php require_once('../../Connections/portal_quimico_conexao.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  $insertSQL = sprintf("INSERT INTO paginas_secoes (nome, descricao) VALUES (%s, %s)",
                       GetSQLValueString($_POST['nome'], "text"),
                       GetSQLValueString($_POST['descricao'], "text"));

  mysql_select_db($database_portal_quimico_conexao, $portal_quimico_conexao);
  $Result1 = mysql_query($insertSQL, $portal_quimico_conexao) or die(mysql_error());

  $insertGoTo = "index.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
    $insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $insertGoTo));
}

mysql_select_db($database_portal_quimico_conexao, $portal_quimico_conexao);
$query_rs_secao_cadastro = "SELECT * FROM paginas_secoes";
$rs_secao_cadastro = mysql_query($query_rs_secao_cadastro, $portal_quimico_conexao) or die(mysql_error());
$row_rs_secao_cadastro = mysql_fetch_assoc($rs_secao_cadastro);
$totalRows_rs_secao_cadastro = mysql_num_rows($rs_secao_cadastro);
?><!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>Portal do Qu&iacute;mico - Cadastro de Se&ccedil;&otilde;es</title>
</head>

<body>
<form method="post" name="form1" action="<?php echo $editFormAction; ?>">
  <table align="center">
    <tr valign="baseline">
      <td nowrap align="right">Nome:</td>
      <td><input type="text" name="nome" value="" size="32"></td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right" valign="top">Descrição:</td>
      <td><textarea name="descricao" cols="50" rows="5"></textarea>
      </td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">&nbsp;</td>
      <td><input type="submit" value="Registrar Se&ccedil;&atilde;o"></td>
    </tr>
  </table>
  <input type="hidden" name="MM_insert" value="form1">
</form>
<p>&nbsp;</p>
</body>
</html>
<?php
mysql_free_result($rs_secao_cadastro);
?>

PS: Li, Re-li e não consegui utilizar o ajax (Nunca utilizei). Portanto, se for preciso usar, claro que se não for pedir de mais, poste um passo a passo e porque foi feito isso.

Obrigado, qualquer coisa é só falar!

OBS: O CAMPO A SER VERIFICADO É O CAMPO NOME!

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...