Jump to content
MaFotec

aviso que a data já existe

Recommended Posts

MaFotec

Estou a desenvolver um projecto, em que tenho um formulario com base de dados MySql,

um dos campos é uma data e quero quando clicar em inserir apareça um aviso (uma MsBox) a dizer que a data já esta a ser

utilizada (só mesmo avisar, não quero que ele impeça de inseir a data)...

já tentei de varias formas....mas nada :)

Se alguém me poder ajudar...agradecia

Share this post


Link to post
Share on other sites
brunoais

1º O que é que é um MSBox?

2º Já tentaste executar um select e comparar?


"[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

É msgbox...

já experimentei este select "SELECT count(*) FROM pessoa WHERE datepicker = 'datepicker'";

mas nada...

Share this post


Link to post
Share on other sites
Rechousa

Olá,

1º O que é que é um MSBox?

É uma Box da Microsoft :)

já experimentei este select "SELECT count(*) FROM pessoa WHERE datepicker = 'datepicker'";

mas nada...

Não te falta um $ ?

-- Em que $datepicker deverá ser a tua variável com a data
SELECT count(1) FROM pessoa WHERE datepicker = '$datepicker';


Pedro Martins

Sharing is Knowledge!

http://www.linkedin.com/in/rechousa

Share this post


Link to post
Share on other sites
brunoais

Olá,É uma Box da Microsoft :)

E como é que isso se parece? Eu nunca vi isso em contexto de browser... Pelo menos... trabalhar em web de propósito para o Windows

Dica: Eu não acredito que tenhas uma constante com o nome: datepicker


"[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

experimentei esse select..não funciona....

também deveria retornar uma mensagem, a dizer "esta data já está a ser usada"!?!!

Share this post


Link to post
Share on other sites
brunoais

Mas não funciona porque?

Dá erro? Se sim, qual é a mensagem? Se não, o que é que ele não faz que devia fazer? Se não, o que é que ele faz que não devia fazer?


"[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
KTachyon

Faz o echo da query e diz-nos o que aparece escrito. Pode ser que te possamos ajudar melhor.


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
MaFotec

Eu experimentei este codigo:

$querydata = mysql_query ("SELECT count(1) FROM pessoa WHERE datepicker = '$datepicker'") or die(mysql_error());;
$data = mysql_num_rows($querydata);

if($data > 0) {

echo 'Data já existe na BD';
exit();

}

mas ao compilar a pagina aparace logo a mensagem "data já existe na BD",  e o formulário da

pagina nem sequer aparece.....

a ideia seria ao clicar no inserir aparecer uma mensagem de aviso a dizer que

a data que está a ser inserida já existe na BD.

Share this post


Link to post
Share on other sites
brunoais

Isso é bom. Significa que ele retornou o nº de elementos na coluna com o nome: "1" sem erros. (está aqui uma dica escondida :) )


"[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
brunoais

mas nem sequer aparece o formulário para inserir a data...... :)

Pois. Isso é normal. Tu mandaste enviar aquela frase para o output e parar a execução se ele detetar que existe, pelo menos, uma linha de dados na resposta da base de dados.


"[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
brunoais

Não sei, ao certo...

Ainda n explicaste de maneira a q eu percebesse, sem dúvidas, o q queres...


"[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
mAiN_iNfEcTiOn

Olá MaFotec,

Experimenta tirar esta linha:

exit();

Deste if:

if($data > 0) {

echo 'Data já existe na BD';
exit();

}

Assim já permitirás o restante processamento, got it?

Share this post


Link to post
Share on other sites
MaFotec

já tirei esse codigo, mas agora aparece a mensagem 'Data já existe na BD' logo no topo da pagina

e aparece o formulário para inserir.

Mas o problema é que só deveria aparecer a mensagem depois de inserir a data ( e caso ela exista na BD) e nao logo que

compilo a pagina!!

a minha ideia inicial seria, que essa mensagem aparecesse numa msgbox....mas isso teria se ser em javascript

Share this post


Link to post
Share on other sites
brunoais

já tirei esse codigo, mas agora aparece a mensagem 'Data já existe na BD' logo no topo da pagina

Pois. Isso é normal. Tu mandaste enviar aquela frase para o output e parar a execução se ele detetar que existe, pelo menos, uma linha de dados na resposta da base de dados.

e aparece o formulário para inserir.

Mas o problema é que só deveria aparecer a mensagem depois de inserir a data ( e caso ela exista na BD) e nao logo que

compilo a pagina!!

Então, porque não indicares ao programa que queres isso mesmo? Sempre que executas um count de uma única coluna, ele retornará sempre uma linha de dados. Usa-a para teu proveito.

a minha ideia inicial seria, que essa mensagem aparecesse numa msgbox....mas isso teria se ser em javascript

msgbox... javascript...  msgbox <=> alert box?


"[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
brunoais

Mostra o código todo e pode ser q consiga ajudar-te.

escreve o q ele faz q n devia, escreve o q ele n faz q devia, marca linhas q achares importante, etc...

Quanto mais informação relevente (sem lixo) indicares mais fácil e melhor será a tua ajuda.


"[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

O codigo do meu formulario é este:

<?php require_once('Connections/cnx_pap.php'); ?>
<?php

$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, `datepicker`) VALUES (%s, %s)",
                       GetSQLValueString($_POST['pessoaid'], "int"),
                       GetSQLValueString($_POST['datepicker'], "date"),

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

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


mysql_select_db($database_cnx_projecto, $cnx_projecto);
$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 (datepicker) VALUES (%s)",
                       GetSQLValueString($_POST['datepicker'], "date"),
                     
  mysql_select_db($database_cnx_projecto, $cnx_projecto);
  $Result1 = mysql_query($insertSQL, $cnx_projecto) or die(mysql_error());

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

//------ Codigo que estou a usar/IMPORTANTE ------
$querydata = mysql_query ("SELECT Count(*) FROM pessoa WHERE datepicker = '$datepicker'") or die(mysql_error());;
$data = mysql_num_rows($querydata);

if($data > 0) {

echo 'Data já existe na BD';
}

//---- Fim ------
?>
<!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">
  <table align="center">
    <tr valign="baseline">
      <td nowrap="nowrap" align="right">Data(s) de Realização: </td>
      <td><span id="sprytextfield1">
      <label for="datepicker"></label>
      <input type="text" name="datepicker" id="datepicker" />
      <span class="textfieldRequiredMsg">A value is required.</span><span class="textfieldInvalidFormatMsg">Invalid format.</span></span>yyyy-mm-dd</td>
    </tr>
       <tr valign="baseline">
      <td nowrap="nowrap" align="right"> </td>
      <td><input type="submit" value="Inserir" /></td>
    </tr>
  </table>
  <input type="hidden" name="MM_insert" value="form1" />
</form>


<script type="text/javascript">
var sprytextfield1 = new Spry.Widget.ValidationTextField("sprytextfield1", "date", {format:"yyyy-mm-dd"});
</script>
</body>
</html>
<?php
mysql_free_result($RS_pessoa);
?>


O que eu pretendo é que ao clicar uma inserir, apareça um alertbox a dizer que "a data já existe na BD".

O erro que me dá é que aparece a mensagem 'Data já existe na BD' no topo da pagina e aparece o formulario em baixo, ou seja,

não devia ser assim, só deveria aparecer a mensagem depois de inserir a data e caso ela já esteja a ser usada.

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.