Jump to content
MaFotec

Verificar se existe data na BD

Recommended Posts

MaFotec

Olá,

Estou a fazer um formulario em PHP e a BD em MySql, gostaria de saber como faço

para quando estiver a inserir a data, avisar se a data já existe na BD

Alguém me pode ajudar........

Share this post


Link to post
Share on other sites
SecretStory

Fazes uma consulta e verificas se o resultado dessa consulta é igual à data que pretendes inserir...

Share this post


Link to post
Share on other sites
filiperainho

Tal como foi referido em cima tens de fazer um

Select count(*) from tabela where campoData = 'dataInserida'

e se o resultado for 0 então não existe nenhum, senão já existe.


Programador - C# ; C ; PHP ; JavaScript ; CSS ; HTML ; iniciante em Android.

Share this post


Link to post
Share on other sites
MaFotec

Olá eu coloquei este codigo

  <?php
$queryVerificaData = mysql_query("SELECT count(*) FROM pessoa WHERE datepicker = 'datepicker'")or die(mysql_error());
$verificaData = mysql_num_rows($queryVerificaData);

if($verificaData > 0) {

echo 'Está data já existe!';
exit();

}
?>

e não funciona alguem me pode ajudar...........

Share this post


Link to post
Share on other sites
tobias

meteste datapick, mas tens é que meter a variável que vem do formulário...


Cumprimentos,Tobias Cintrão


"O que se pensa começa no que se ouve"
"Inspiração == Interrupção momentânea da estupidez"

Share this post


Link to post
Share on other sites
mAiN_iNfEcTiOn

Conforme diz o tobias, onde tens:

$queryVerificaData = mysql_query("SELECT count(*) FROM pessoa WHERE datepicker = 'datepicker'")or die(mysql_error());

Deveria ser:

$queryVerificaData = mysql_query("SELECT count(*) FROM pessoa WHERE datepicker = '" . mysql_real_escape_string($_POST['datepicker'])."'")or die(mysql_error());

Share this post


Link to post
Share on other sites
MaFotec

já alterei o codigo, mas quando faço F12, aparece logo a mensagem "Está data já existe",

provavelmente está colocado no sitio errado

Share this post


Link to post
Share on other sites
MaFotec
<?php require_once('Connections/cnx_pap.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $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 pessoa (pessoaid, descricao, objectivos, orcamento, datepicker) VALUES (%s, %s, %s, %s, %s)",
                       GetSQLValueString($_POST['pessoaid'], "int"),
                       GetSQLValueString($_POST['descricao'], "text"),
                       GetSQLValueString($_POST['objectivos'], "text"),
                       GetSQLValueString($_POST['orcamento'], "text"),
                       GetSQLValueString($_POST['datepicker'], "date"),


  mysql_select_db($database_cnx_pap, $cnx_pap);
  $Result1 = mysql_query($insertSQL, $cnx_pap) or die(mysql_error());

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


mysql_select_db($database_cnx_pap, $cnx_pap);
$query_RS_pessoa = sprintf("SELECT * FROM pessoa WHERE pessoaid = %s", GetSQLValueString($colname_RS_pessoa, "int"));
$RS_pessoa = mysql_query($query_RS_pessoa, $cnx_pap) or die(mysql_error());
$row_RS_pessoa = mysql_fetch_assoc($RS_pessoa);
$totalRows_RS_pessoa = mysql_num_rows($RS_pessoa);

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  $insertSQL = sprintf("INSERT INTO pessoa (descricao, objectivos, orcamento, datepicker) VALUES (%s, %s, %s, %s, %s, %s, %s)",
                       GetSQLValueString($_POST['descricao'], "text"),
                       GetSQLValueString($_POST['objectivos'], "text"),
                       GetSQLValueString($_POST['orcamento'], "text"),
                       GetSQLValueString($_POST['datepicker'], "date"),
                  

  mysql_select_db($database_cnx_pap, $cnx_pap);
  $Result1 = mysql_query($insertSQL, $cnx_pap) or die(mysql_error());

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

  
  $queryVerificaData = mysql_query("SELECT count(*) FROM pessoa WHERE datepicker = '" . mysql_real_escape_string($_POST['datepicker'])."'")or die(mysql_error());
$verificaData = mysql_num_rows($queryVerificaData);

if($verificaData > 0) {

echo 'Está data já existe!';
exit();

}
?>
<!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=utf-8" />
<title>Untitled Document</title>
<script src="SpryAssets/SpryValidationTextField.js" type="text/javascript"></script>
<link href="SpryAssets/SpryValidationTextField.css" rel="stylesheet" type="text/css" />
</head>

<body>
<form action="<?php echo $editFormAction; ?>" method="post" name="form1" id="form1" onSubmit="return enviardados()">
  <table align="center">
    <tr valign="baseline">
      <td nowrap="nowrap" align="right"> </td>
      <td> </td>
    </tr>
    <tr valign="baseline">
      <td align="right" valign="top" nowrap="nowrap"><p>Identificação da Pessoa:</p></td>
      <td><p>
        <label for="textfield"></label>
        <label for="textarea"></label>
        <label for="textfield2"></label>
        <label for="descricao"></label>
        <textarea name="descricao" cols="45" rows="5" id="descricao"></textarea>
      </p></td>
    </tr>
    <tr valign="baseline">
      <td align="right" valign="top" nowrap="nowrap">Objectivos:</td>
      <td><textarea name="objectivos" cols="45" rows="5"></textarea></td>
    </tr>
    <tr valign="baseline">
      <td align="right" valign="top" nowrap="nowrap">Orçamento (previsão):</td>
      <td valign="baseline"><textarea name="orcamento" cols="30"></textarea></td>
      
    </tr>
    <link type="text/css" href="jQuery/css/redmond/jquery-ui-1.8.13.custom.css" rel="stylesheet" />
<script type="text/javascript" src="jQuery/js/jquery-1.5.1.min.js"></script>
<script type="text/javascript" src="jQuery/js/jquery-ui-1.8.13.custom.min.js"></script>
<script type="text/javascript">



$(function() {
      $( "#datepicker" ).datepicker({
         showOn: "button",
         buttonImage: "images/calendar.gif",
         buttonImageOnly: true,
         dateFormat: 'yy-mm-dd'
      });
   });
</script>

    
    <tr valign="baseline">
      <td nowrap="nowrap" align="right">Data(s) de Realização: </td>
      <td><label for="datepicker"></label>  


  <p><span id="sprytextfield1">
      <input type="text" name="datepicker" id="datepicker" />
<span class="textfieldInvalidFormatMsg">Invalid format.</span></span>            </tr>


    <tr valign="baseline">
      <td nowrap="nowrap" align="right"> </td>
      <td><input type="submit" value="Inserir Actividade" />
      <input type="reset" name="limpar" id="limpar" value="Limpar" /></td>
    </tr>
  </table>
  
  <input type="hidden" name="MM_insert" value="form1" />
</form>



<script language="JavaScript" >
function enviardados(){

if(document.form1.descricao.value=="")
{
alert( "O campo  'Identificação da Pessoa' deve ser preenchido!" );
document.form1.descricao.focus();
return false;
}

if(document.form1.orcamento.value=="")
{
alert( "O campo 'Orçamento' deve ser preenchido!" );
document.form1.orcamento.focus();
return false;
}

if(document.form1.objectivos.value=="")
{
alert( "O campo 'Objectivos' deve ser preenchido!" );
document.form1.objectivos.focus();
return false;
}

if(document.form1.date.value=="")
{
alert( "O campo 'Data de Realização' deve ser preenchido!" );
document.form1.datepicker.focus();
return false;
}


return true;
}

</script>


<p> </p>

</body>
</html>
<?php
mysql_free_result($RS_pessoa);
?>

Share this post


Link to post
Share on other sites
nokas90

Boas,

Eu tambem estou a tentar fazer uma cena parecida, mas no meu eu gostava de saber

se a data existe e se existir mostrar os dados correspondentes a mesma!!

preciso de ajuda...... ;)

Share this post


Link to post
Share on other sites
brunoais

$queryVerificaData = mysql_query("SELECT count(*) FROM pessoa WHERE datepicker = '" . mysql_real_escape_string($_POST['datepicker'])."'")or die(mysql_error());
$verificaData = mysql_num_rows($queryVerificaData);

if($verificaData > 0) {

echo 'Está data já existe!';
exit();

}

Se pensasses no q tens aí n virias aqui por causa desse problema. Se pensares um pouco reparas que, se mandaste o MySQL contar o nº de resultados ele irá sempre devolver uma linha. E perante isso mysql_num_rows($queryVerificaData) irá sempre retornar 1.

Sê minimamente esperto Eu não vou dizer como resolver o problema porque a sua resolução é extremamente simples. Pensa um pouco e irás chegar à resposta.

Outras coisas:

O intval faz praticamente o mesmo que o cast para integer (sendo que o cast é mais rapido). Usa-o em vez do intval.

Tu desperdiças demasiados recursos! Porque razão é que irás executar o mysql_real_escape_string() sobre um inteiro? Isso só serve para desperdiçar tempo a executar algo simples de executar.

Usa a concatenação de strings, é mais rápido que o sprintf().

para que é que usas um código destes?

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

Não era melhor fazer algo mais explicito e direto dependendo de como é possível chamar essa página?


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
MaFotec

Continuo sem perceber a explicação, eu só quero que quando estou a escrever a data

apareca uma mensagem a dizer que a data já existe......... :)

Share this post


Link to post
Share on other sites
brunoais

Primeiro fazes um select procurando pela data. Se não for retornado nada é porque não existe e pode-se inserir.

Alternativamente, podes usar o método de tentar fazer e resolver o erro em caso de erro ou continuar se tudo estiver bem.

São 2 maneiras diferentes em q 1 executa 1 query e outra executa 2.

AVISO: Este método não é melhor que o do yoda, é simplesmente uma alternativa e deve ser avaliado caso a caso. Reduzir o nº de queries à DB não significa melhor desempenho do programa.

Nota: Para isto funcionar é preciso que a data seja única (UNIQUE) ou chave primária (PRIMARY KEY) senão não funciona


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.