2017-09-12 26 views
1

我使用dateTimePicker.js,MySQL和PHP來生成在線事件日曆,它允許用戶在日曆中設置日期並註冊它們的名稱,所有數據是存儲在MySQL數據庫中。MySQL,PHP;檢測如果dateTimePicker日期已被採取並禁用它

數據被存儲在表是這樣的:

if (isset($_POST['from'])) 
{ 


    if ($_POST['from']!="") 
    { 

     // Recibimos el fecha de inicio y la fecha final desde el form 

     $inicio = _formatear($_POST['from']); 
     // y la formateamos con la funcion _formatear 

     $final = _formatear($_POST['from']); 

     // Recibimos el fecha de inicio y la fecha final desde el form 

     $inicio_normal = $_POST['from']; 

     // y la formateamos con la funcion _formatear 
     $final_normal = $_POST['from']; 

     // Recibimos los demas datos desde el form 
     $titulo = evaluar($_POST['title']); 

     // y con la funcion evaluar 
     $body = evaluar($_POST['title']); 

     // reemplazamos los caracteres no permitidos 
     $clase = evaluar($_POST['class']); 

//checar si fecha existe 

       // insertamos el evento 
     $query="INSERT INTO eventos VALUES(null,'$titulo','$body','','$clase','$inicio','$final','$inicio_normal','$final_normal')"; 
     $query2="INSERT INTO dbbackup VALUES(null,'$titulo','$body','','$clase','$inicio','$final','$inicio_normal','$final_normal')"; 
     // Ejecutamos nuestra sentencia sql 
     $conexion->query($query); 
     $conexion->query($query2); 

     // Obtenemos el ultimo id insertado 
     $im=$conexion->query("SELECT MAX(id) AS id FROM eventos"); 
     $row = $im->fetch_row(); 
     $id = trim($row[0]); 

     // para generar el link del evento 
     $link = "$base_url"."descripcion_evento.php?id=$id"; 

     // y actualizamos su link 
     $query="UPDATE eventos SET url = '$link' WHERE id = $id"; 

     // Ejecutamos nuestra sentencia sql 
     $conexion->query($query); 

     // redireccionamos a nuestro calendario 

    } 

則在一個日曆顯示:

var calendar = $('#calendar').calendar(options); 

      $('.btn-group button[data-calendar-nav]').each(function() 
      { 
        var $this = $(this); 
        $this.click(function() 
        { 
          calendar.navigate($this.data('calendar-nav')); 
        }); 
      }); 

      $('.btn-group button[data-calendar-view]').each(function() 
      { 
        var $this = $(this); 
        $this.click(function() 
        { 
          calendar.view($this.data('calendar-view')); 
        }); 
      }); 

      $('#first_day').change(function() 
      { 
        var value = $(this).val(); 
        value = value.length ? parseInt(value) : null; 
        calendar.setOptions({first_day: value}); 
        calendar.view(); 
      }); 
    }(jQuery)); 

所以它看起來像這樣: enter image description here

然後用戶請保存這樣的日期:

enter image description here

藍色和紅色的點是已經採取的日子,顏色只是意味着一個不同的類別,我已經鎖定星期日,星期六和日期在當前日期之前,但我不知道如何禁用已經採取的一天。

我試過使用查詢來獲取「inicio_normal」,這是存儲在我的表中的日期值,然後我將它與「$ inicio」進行了比較,該值是用戶從日曆中選擇的值(在格式化爲日期MySQL可以存儲),所以如果值是相同的,我知道日期已經被採用,如果我可以顯示消息或類似的東西,但它不起作用。

我的數據庫是這樣的:

`id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
    `title` varchar(150) COLLATE utf8_spanish_ci DEFAULT NULL, 
    `body` text COLLATE utf8_spanish_ci NOT NULL, 
    `url` varchar(150) COLLATE utf8_spanish_ci NOT NULL, 
    `class` varchar(45) COLLATE utf8_spanish_ci NOT NULL DEFAULT 'event-important', 
    `start` varchar(15) COLLATE utf8_spanish_ci NOT NULL, 
    `end` varchar(15) COLLATE utf8_spanish_ci NOT NULL, 
    `inicio_normal` varchar(50) COLLATE utf8_spanish_ci NOT NULL, 
    `final_normal` varchar(50) COLLATE utf8_spanish_ci NOT NULL, 
    PRIMARY KEY (`id`) 

任何幫助?謝謝。

+0

'dateTimePicker.js'可以是任何東西。這就是你碰巧在你的系統上有一個名爲的文件。如果它是一個常用的jQuery庫,那麼你應該包含一個鏈接。如果是自定義代碼,則應將其直接包含在您的問題中。 –

回答

0

如果你已經有數據庫中選擇的日期..只是搜索是否有巧合。如..

SELECT * FROM TABLE WHERE DATE = '$datetime' 

這會帶來什麼巧合,如果你正在試圖進入,然後只需將日期巧合的的if/else裏面的代碼。

if($query != 0) { // insert new calendar event } 
else { // display message informing an event is already set on that time } 
+0

謝謝!你的答案對我來說沒有用,因爲我的記錄曾經有分鐘和秒,我只是禁用了它,現在它正在工作。 –

0

我發現了一個非常簡單的方法來實現這一目標,datetimepricker本身不具備的功能,EN /禁用已拍攝日期或時間,所以利用查詢到的新的寄存器比較寄存器在我數據庫是最好的。

if (isset($_POST['MY_INPUT_FIELD'])) 
{ 

$chek= $_POST['MY_INPUT_FIELD']; 

     $queryt ="SELECT * FROM my_table WHERE my_tIme_in_my_table='$chek'"; 
     $RESULT_OF_QUERY = $conexion->query($queryt); 

if (mysqli_num_rows($RESULT_OF_QUERY)>0) 
    { 
//It pops up a message to the user 
     $message = "La fecha ya ha sido tomada, ingresa una nueva"; 
     echo "<script type='text/javascript'>alert('$message');</script>"; 

    } 
    elseif($_POST['MY_INPUT_FIELD']!="") 
    { 
//DO ALL THE STUFF 
    } 

的一個問題是,的DateTimePicker允許用戶添加一個時間,obviuosly日期永遠不會成爲兩個用戶怎麼一回事,因爲秒差的一樣,所以我禁用我的datetimepciker.js的時間,在這情況下,你需要使用分鐘和秒。

相關問題