Ajax调用在DB中发布重复项

时间:2014-04-12 11:04:29

标签: javascript php jquery ajax fullcalendar

我正在使用Fullcalendar jquery和php进行事件管理。我使用ajax调用来添加事件。刷新后,该调用适用于第一个事件条目。但是对于以下事件条目,将为每个条目创建重复事件。不确定是什么造成这种情况。

这是错误:

enter image description here

这是jquery调用:

Jquery的

$('#evesav').bind('click',function(){

   $('#evesav').attr('disabled','disabled');
   var title = $('#evename').val();
   var edes = $('#evedes').val();
   var everegion = $('#everegion').val();
   var eveserv = $('#eveserv').val();

   $.ajax({
   url: 'add_events.php',
   data: 'title='+ title+'&start='+ start +'&end='+ end +'&edes='+ edes +'&everegion='+     everegion +'&eveserv='+ eveserv,
   type: "POST",
   success: function(json) {
   $('#myModal').modal('hide');
   $('#alertcon').html(json);
   $('#alert').modal('show');      
   $('#evename').val("");
   $('#evedes').val("");
   $('#evesav').removeAttr('disabled');
   $('#calendar').fullCalendar( 'refetchEvents' );

   }
   });


   $('#calendar').fullCalendar( 'rerenderEvents' );

   });

这是PHP代码:

PHP

 <?php

    if(($_POST['title'] && $_POST['start'] && $_POST['end'] && $_POST['edes'] &&           $_POST['everegion'] && $_POST['eveserv'])!= NULL)
    {
    // Values received via ajax
    $title = $_POST['title'];
    $start = $_POST['start'];
    $end = $_POST['end'];
    $edes = $_POST['edes'];
    $region = $_POST['everegion'];
    $server = $_POST['eveserv'];
    //echo $title."".$start."".$end."".$edes."".$region."".$server;
    // connection to the database
    include('includes/db.php');


    // insert the records
    $sql = "INSERT INTO evenement (title, start, end, edes, region, server) VALUES (:title, :start, :end, :edes, :region, :server)";
    $q = $bdd->prepare($sql);
    $q->execute(array(':title'=>$title, ':start'=>$start, ':end'=>$end, ':edes'=>$edes, ':region'=>$region, ':server'=>$server));
    if($q->execute(array(':title'=>$title, ':start'=>$start, ':end'=>$end, ':edes'=>$edes, ':region'=>$region, ':server'=>$server))){
var_dump($q->execute(array(':title'=>$title, ':start'=>$start, ':end'=>$end, ':edes'=>$edes, ':region'=>$region, ':server'=>$server)));
    }
    $eveid=$bdd->lastInsertId(); 


    // Get array of all source files
   $files = scandir("uploads/");
   // Identify directories
   $source = "uploads/";
   $destination = "evedata/".$eveid."/";
   mkdir("evedata/".$eveid);
   // Cycle through all source files
   foreach ($files as $file) {
   if (in_array($file, array(".",".."))) continue;
   // If we copied this successfully, mark it for deletion
   if (copy($source.$file, $destination.$file)) {
   $delete[] = $source.$file;
   }
   }
   // Delete all successfully-copied files
   foreach ($delete as $file) {
       unlink($file);
       }


       echo "Added Successfully";
       }
  else {
echo "Please Fill the data";
    }
    ?>

有人请帮助我。

1 个答案:

答案 0 :(得分:0)

我将每个事件添加形成一个控件,例如动态GUID,然后可以用来保存到DB。这样你就可以使用GUID来处理CalDAV协议了,如果你选择用你的日历这样做,并且有办法确保数据库中偶然没有任何重复。

现在,请记住,这只是一个补丁,而不是修复。因此,您可以找到一种方法来阻止多次尝试向您的数据库添加事件。无论您是否成功找到您的错误,使用控制机制或唯一标识符都是一个好主意。