Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Estou fazendo um simples insert, mas ele está inserindo 3 vezes no banco... já verifiquei o código várias vezes, mas não achei nada que colaborasse para isso.
Primeiro vou falar a sequência das páginas.
Eu tenho uma página... onde eu escolho o mês. Daí embaixo da ComboBox eu carrego uma página requisitada por AJAX em uma div, que carrega um calendário do mês escolhidos, com os dias. (Tipo uma agenda).
Daí eu clico no botão adicionar no meio do quadrado para eu adicionar uma tarefa para o dia. Quando abre o formulário no FancyBox e coloco o que eu quero e clico em Salvar, insere, porém, 3 vezes. Já dei um echo na variável e traz uma só vez a query.
Código abaixo que contém a query de inserção:
<?php
session_start();
include '../conexao.php';
$dia = $_POST['dia'];
$mes = $_POST['meses'];
$ano = $_POST['ano'];
$descricao = utf8_encode($_POST['descricao']);
$user = $_SESSION['idsrlub_usuarios'];
$sql = "select * from srlub_calendario where dia = $dia and mes = $mes and ano = $ano";
$exe = mysql_query($sql);
$row = mysql_num_rows($exe);
if($row == 3)
{
echo utf8_encode("Você já possui três tarefas para este dia! Seu limite se esgotou!");
}
else
{
################################ Aqui féra ###########################################
echo $sql = "insert into srlub_calendario (dia, mes, ano, descricao, idsrlub_usuarios)
values($dia, $mes, $ano, '$descricao', $user)";
$exe = mysql_query($sql);
echo "Tarefa inserida com sucesso!";
die();
}<?php header("Content-Type:text/html; charset=iso-8859-1", true); ?>
<?php include '../conexao.php'; ?>
<?php include 'funcoes.php'; ?>
<?php
$mes = $_GET['mes'];
$user = $_SESSION['idsrlub_usuarios'];
if($mes == 1 || $mes == 3 || $mes == 5 || $mes == 7 || $mes == 8 || $mes == 10 || $mes == 12)
$dias = 31;
elseif($mes == 2)
$dias = 28;
else
$dias = 30;
if($mes == 1){ $nome = "Janeiro"; $zero = 0; }
if($mes == 2){ $nome = "Fevereiro"; $zero = 0; }
if($mes == 3){ $nome = "Março"; $zero = 0; }
if($mes == 4){ $nome = "Abril"; $zero = 0; }
if($mes == 5){ $nome = "Maio"; $zero = 0; }
if($mes == 6){ $nome = "Junho"; $zero = 0; }
if($mes == 7){ $nome = "Julho"; $zero = 0; }
if($mes == 8){ $nome = "Agosto"; $zero = 0; }
if($mes == 9){ $nome = "Setembro"; $zero = 0; }
if($mes == 10){ $nome = "Outubro"; $zero = ''; }
if($mes == 11){ $nome = "Novembro"; $zero = ''; }
if($mes == 12){ $nome = "Dezembro"; $zero = ''; }
echo " <span class='header2'>$nome</span><br/>";
echo "<table border='0' cellspacing='2' cellpadding='2' align='center' width='100%' class='margem_e_fonte'><tr>";
$ano = date("Y");
echo "<tr>";
for($x=1;$x<8;$x++)
{
$sem = diasemana("$ano-$zero$mes-$zero$x");
echo "<td style='width:50px;color:navy;font-size:10px;font-family:verdana;text-align:center;'>
$sem
</td>";
}
echo "</tr>";
$sql = "select * from srlub_calendario where idsrlub = $user";
$exe = mysql_query($sql);
$col = 0;
for($cont = 1; $cont < $dias + 1; $cont++)
{
if($col == 7)
{
echo "</tr><tr>";
$col = 0;
}
echo "<td valign='top' style='height:100px;border:1px solid #E7E7E7' id='$cont' onmouseout=\"mudaCor(this.id,'off')\" onmouseover=\"mudaCor(this.id,'on');\">
<span style='text-align:left;font-size:10; color:#C7C7C7'> $cont </span>
<br/>
################ Aqui eu chamo a funcao Jquery #######
<a title='Adicionar' href='#calendar' class='chamar'>
<img src='images/mais.png' border='0' align='center' style='margin-top:25%;margin-left:42%;'/>
</a>
</td>";
$col++;
}
?>
jquery
<script type='text/javascript'>
jQuery(document).click(function() {
$(".chamar").fancybox({
'scrolling' : 'no',
'titleShow' : false,
'onClosed' : function() {
$("#error").hide();
}
});
$("#calendar").bind("submit", function() {
if ($("#descricao").val().length < 1 || $("#dia").val().length < 1) {
$("#error").show();
$.fancybox.resize();
return false;
}
$.fancybox.showActivity();
$.ajax({
type : "POST",
cache : false,
url : "salvar_calendario.php",
data : $(this).serializeArray(),
success: function(data) {
$.fancybox(data);
}
});
return false;
});
});
</script>Já tentou tirar o script que chama a função jQuery de dentro do for
e executar pra ver se continua inserindo 3x?
Sei que precisa do for pra gerar os links mas faça este teste apenas
para verificar se ele para de inserir 3x caso ainda não tenha testado
desta forma.
Abraços.
Então... mas não posso pq preciso daquele laço... mas se fosse isso era pra inserir 30 vezes ou 31 né.
Fiz o teste, mesmo assim inseriu 3 vezes.
Bom, PHP e MySQL não é porque pelo código postado não há loop no arquivo que salva os dados.
E não fez a mínima diferença você tirar a chamada de jQuery do loop.
Então eu acredito que seu problema esteja realmente no jQuery.
Só que eu não sou perito em jQuery para lhe ajudar neste caso.
Vou mover o tópico para a sessão apropriada.
Talvez o pessoal possa lhe dar uma força nesta questão por la.
Abraços.
Beleza =)
Consegui
Pode fechar!
Ecos o erro pode estar na chamada desta pagina.
Com o código postado realmente não há nada de errado.
Poste pra gente a pagina que chama o php que executa a query.
Abraços.