Jump to content

Verificar se existe data na BD


MaFotec
 Share

Recommended Posts

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());
Link to comment
Share on other sites

<?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);
?>
Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
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
 Share

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