php - 基于 MySQL 查询禁用页面加载时的选择选项

标签 php jquery mysql

就像标题所说,我有一个选择选项输入,我需要根据它们是否已添加到表中两次来禁用某些选项,如果它们已被添加到表中两次,则禁用特定时间选项选择下拉菜单。

在下面的示例代码中,您可以在表中看到 2017 年 1 月 18 日中午 12:15 已有两个条目。因此,当我加载页面时,如果选择日期为 1/18/2017,则需要在选项列表中禁用 12:15 PM。因此,如果我加载页面并选择 1/18/2017 作为日期,则中午 12:15 的选项将被禁用。

我觉得我应该能够使用一个单独的 php 文件来做到这一点,该文件将使用 QUERY 和 COUNT 从表中获取数据,但我只是不确定如何攻击它。

示例表:

TIMESTAMP           Datepicker  Timepicker
2017-01-17 08:44:15 01/21/2017  12:00 PM
2017-01-17 09:52:00 01/20/2017  11:30 AM
2017-01-17 10:07:09 01/18/2017  12:15 PM
2017-01-17 10:08:58 01/18/2017  12:15 PM

选择选项示例:

<input class="dateselect" id="datepicker" name="datepicker" type="text" placeholder="Select Date">
                            <select class="timeselect" id="timepicker" name="timepicker">
                            <option value="10-15 Minutes">Select Time</option>
                            <option value="08:00 AM">08:00 AM</option>
                            <option value="08:15 AM">08:15 AM</option>
                            <option value="08:30 AM">08:30 AM</option>
                            <option value="08:45 AM">08:45 AM</option>
                            <option value="09:00 AM">09:00 AM</option>
                            <option value="09:15 AM">09:15 AM</option>
                            <option value="09:30 AM">09:30 AM</option>
                            <option value="09:45 AM">09:45 AM</option>
                            <option value="10:00 AM">10:00 AM</option>
                            <option value="10:15 AM">10:15 AM</option>
                            <option value="10:30 AM">10:30 AM</option>
                            <option value="10:45 AM">10:45 AM</option>
                            <option value="11:00 AM">11:00 AM</option>
                            <option value="11:15 AM">11:15 AM</option>
                            <option value="11:30 AM">11:30 AM</option>
                            <option value="11:45 AM">11:45 AM</option>
                            <option value="12:00 PM">12:00 PM</option>
                            <option value="12:15 PM">12:15 PM</option>
                            <option value="12:30 PM">12:30 PM</option>
                            <option value="12:45 PM">12:45 PM</option>
</select>

任何帮助将不胜感激,我在网上找到的所有内容并不完全是我想要的。

PHP 暂定文件:

$host_name  = "xxxxxxx";
$database   = "xxxxxx";
$user_name  = "xxxxx";
$password   = "xxxxx";


$connect = mysqli_connect($host_name, $user_name, $password, $database);

$sql = "SELECT Datepicker, 
   Timepicker

FROM shuttlerequests
   INNER JOIN (SELECT Datepicker
           FROM   shuttlerequests
           GROUP  BY Timepicker
           HAVING COUNT(id) > 1) dup
       ON shuttlerequests.Datepicker = dup.Timepicker;";

if ($connect->query($sql) === TRUE) {
return $sql;
} else {
echo "Error: " . $sql . "<br>" . $connect->error;
}

最佳答案

我认为你走在正确的道路上。我将创建一个 PHP 文件,该文件根据输入日期参数​​返回“不可用”时间的列表。然后,根据我返回的列表,适本地禁用/启用选项。试试这个示例:

Javascript

function getTimes() {
    var date = $('#datepicker').val();

  //REPLACE THIS WITH A CALL TO YOUR PHP FILE WHICH SHOULD RETURN THE DISABLED TIMES FOR A GIVEN DATE.
  $.ajax({
    url: 'getdisabledtimes.php',
    data: { date: date },
    success: handleTimes
  });
}

function handleTimes(obj) {
  //INITIALLY SET ALL OPTIONS TO ENABLED
  $('#timepicker option').removeAttr('disabled');
  //DISABLE THE OPTIONS THAT WERE RETURNED FROM THE FUNCTION
  for (var i in obj) {
      $('#timepicker option[value="' + obj[i] + '"]').attr('disabled','disabled');
  }
}

jsFiddle:https://jsfiddle.net/mspinks/3y69qygu/4/

-请注意单击“获取时间”按钮后禁用的时间。此示例中的“获取时间”按钮模拟在代码中选择日期。这将根据您的实现(点击、按键、模糊等)而有所不同。

可能的 PHP(尚未测试)

$host_name  = "xxxxxxx";
$database   = "xxxxxx";
$user_name  = "xxxxx";
$password   = "xxxxx";


$connect = mysqli_connect($host_name, $user_name, $password, $database);

$sql = "SELECT Datepicker, 
   Timepicker

FROM shuttlerequests
   INNER JOIN (SELECT Datepicker
           FROM   shuttlerequests
           GROUP  BY Timepicker
           HAVING COUNT(id) > 1) dup
       ON shuttlerequests.Datepicker = dup.Timepicker;";


$result = $connect ->query($sql);

if ($result->num_rows > 0) {
    //CREATE AN ARRAY FOR STORAGE OF EACH TIME ENTRY (TIMEPICKER)
    $disabledTimes = array();
    //ITERATE THROUGH EACH DATA ROW THAT WAS RETURNED
    while( $row = mysql_fetch_assoc( $result)) {
        //ADD THE 'TIMEPICKER' ENTRY TO THE ARRAY
        //NOTE: YOU MAY NEED TO FORMAT THE TIME STRING TO MATCH THE SELECT LIST. SHOULD BE IN THIS FORMAT: "08:00 AM"
        array_push($disabledTimes , $row["Timepicker"]);
    }
    //SERIALIZE THE ARRAY INTO A JSON STRING. THIS SHOULD OUTPUT SOMETHING LIKE "['08:00 AM','12:30 PM']"
    echo(json_encode($myArray));
} else {
    echo "[]"; //NO RESULTS HERE
}

关于php - 基于 MySQL 查询禁用页面加载时的选择选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41705814/

相关文章:

php - 使用 Postfix 传输电子邮件

javascript - 带有自己的搜索表单的数据表

javascript - 像 PHP 的日期和 strtotime 一样使用 Moment.js

javascript - 从选择输入中显示和隐藏多个输入框

python - 将包含字典列表中两个不同值的相同键的字典的 json 列表中的值插入到 MYSQL 数据库

PHP_Doctrine 2.0 _连接管理

jquery - 如何同时在两个文本框控件中写入文本

javascript - 无法调用未定义的方法 'toLowerCase'

php 在字符串中找到一些文本(如果它在那里)

c# - ASP.Net (C#) & SQL Server - 或 - PHP & MySQL 的性能?