MySQL, PHP; Определить, если dateTimePicker уже используется дата, и отключить ее

Я использую dateTimePicker.js, MySQL и PHP для создания онлайн-календаря событий, он позволяет пользователям устанавливать дату в календаре и регистрировать ее под своими именами, все данные хранятся в базе данных MySQL.

Данные хранятся в таблице следующим образом:

    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));

Так это выглядит так:
введите описание изображения здесь

Затем пользователь сохраняет дату как это:

введите описание изображения здесь

Синие и красные точки — это уже занятые дни, цвет означает просто другую категорию, я заблокировал воскресенья и субботы и даты до текущей даты, но я не могу понять, как отключить день, который уже занят ,

Я попытался с помощью запроса получить «inicio_normal», то есть значение даты, хранящееся в моей таблице, а затем сравнил его с «$ inicio», то есть значением, которое пользователь выбирает из календаря (до того, как оно отформатировано до даты, которую MySQL может сохранить ), поэтому, если значения одинаковы, я знаю, что дата уже занята, и с помощью IF я могу показать сообщение или что-то подобное, но это не сработало.

Моя база данных выглядит так:

 `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`)

Любая помощь ?, Спасибо.

1

Решение

Если у вас уже есть дата, выбранная в вашей базе данных … просто поиск, если есть совпадение. Подобно..

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

Другие решения

Я нашел очень простой способ добиться этого, сам по себе datetimepricker не имеет функции для включения / отключения уже взятой даты или времени, поэтому лучше использовать запрос для сравнения нового регистра с регистрами в моей базе данных.

  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 позволяет пользователям добавлять время, очевидно, что DATE никогда не будет одинаковым для двух пользователей из-за разницы в секундах, поэтому я отключил время в моем datetimepciker.js, если вам нужно использовать минуты и секунды. ,

0

По вопросам рекламы [email protected]