2017-01-17 3 views
0

タイトルには選択オプションがあります。テーブルに2回追加されたオプションを無効にする必要があります。テーブルを2回クリックしてから、選択ドロップダウンで特定の時間オプションを無効にします。MySQLクエリに基づいてページのロード時に選択オプションを無効にする

下のサンプルコードでは、午後12時15分に、2011年1月18日の2つのエントリが既に表にあります。だから私はページを読み込むときに、私は12月15日をオプションリストで無効にする必要があります。したがって、ページを読み込み、日付として1/18/2017を選択した場合、午後12時15分のオプションは無効になります。

私は、QUERYとCOUNTを使ってテーブルからデータを取得する別のPHPファイルでこれを行うことができるはずですが、これをどのように攻撃するかはわかりません。

例表:

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

答えて

0

私はあなたが正しい軌道に乗っていると思います。私は入力された日付のパラメータに基づいて "利用できない"時間のリストを返す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/

無効回-notice "ゲット・タイムズ" ボタンをクリックした後。このサンプルの「Get Times」ボタンは、コード内の日付の選択をシミュレートします。これは実装(クリック、キーアップ、ぼかしなど)に基づいて異なります。

可能な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 
} 
+0

まず第一には、あなたの素晴らしい答えをありがとう、私は、Ajaxリクエストのために重複したエントリを取得するためにPHPファイルを把握しようとしていますそれだけでは機能しません。私はphpファイルで私の質問を更新しました。 –

+0

データのシリアライズ機能をお探しですか? –

+0

私は「関数をシリアライズする」ことを理解していません。 –

関連する問題