2013-04-24 128 views
-1

我想使用jQuery的日期选择器选择一个日期,那么当选择它从数据库中根据选定的日期 我已经寻求关于做选择查询,发现这个问题 jQuery datepicker with php and mysql 他们说我应该使用AJAX做 ,但我不明白他们在做执行! 任何人可以帮助请 我尝试做这样的事情jQuery的日期选择器UI

<script> 

$(function() { 

    $("#datepicker").datepicker({minDate: 0, showAnim: "bounce", 
    onSelect: function(dateText, inst) {<?php mysql_select_db($database_conn, $conn); 
$query_time = "SELECT reservation.R_time FROM reservation WHERE reservation.R_date='"?>dateText<?php "'" ; 
$time = mysql_query($query_time, $conn) or die(mysql_error());</script> 
+0

当PHP使用这样的,它运行在服务器上创建的页面时,不能反应到什么用户确实在浏览器上。你必须使用AJAX - 查看'$ .ajax'和'$ .get'。 – Barmar 2013-04-24 18:39:24

回答

0

更改您的JS送的ONSELECT Ajax调用,传递dateText

$("#datepicker").datepicker({ 
    minDate: 0, 
    showAnim: "bounce", 
    onSelect: function(dateText, inst) { 
     $.ajax({ 
      type: 'POST', 
      url: 'select_time.php', 
      data: {date : dateText}, 
      success: function(resp){ 
       if(false !== resp){ 
        alert(resp); 
       } 
      } 
     }); 
    } 
}); 

然后在select_time.php

<?php 
    if(!empty($_POST['date'])): 
     $mysqli = new mysqli('connection info'); //mysqli connection 
     $stmt= $mysqli->prepare('SELECT reservation.R_time FROM reservation WHERE reservation.R_date = ?'); //prepare the statement 
     $stmt->bind_param('s', $_POST['date']); //bind our parameters 
     $stmt->execute(); //execute our query 
     $stmt->store_result(); // store result so we can check rows 
     $stmt->bind_result($resTime); //we only want the reserveration time 
     $stmt->fetch(); //fetch the rows 
     if($stmt->num_rows() > 0): 
      echo $resTime; //return the time from the database 
      $stmt->close(); //close the statement 
     else: 
      return false; //row doesn't exist, return false 
     endif; 
    endif;  
?> 

这是未经测试,但我看不出有任何理由不应该工作。

-1

我想你混淆两件事情:

首先,在页面加载之前,PHP将始终运行(和为此jQuery),所以在jQuery选择器上调用PHP将无法工作。

你需要做的是创建一个Ajax功能,将触发对jQuery的ONSELECT(我一般用OnClose事件,如果它是一个弹出日历)。

的Javascript:

$("#datepicker").datepicker({ 
minDate: 0, 
showAnim: "bounce", 
onClose: function(dateText, inst) { 
    $.post('select_time.php?dateText=' + dateText, function(queryResult){ 
     // do something with the return query 
    }); 
} 
}); 

PHP页面:

$connection = mysqli_connect("localhost","username","password","db"); 

$sql = "SELECT reservation.R_time FROM reservation WHERE reservation.R_date={$_post['dateText']}"; 

if ($result = mysqli_query($connection , $sql)) 
    { 
    while ($getData = mysqli_fetch_field($result)) 
     { 
      echo $getData->R_time; 
     } 
    mysqli_free_result($result); 
    } 

mysqli_close($connection); 
+0

非常感谢,我还有一个问题,如果我想从该网页获得$时间变量是什么,是否有需要或只是变量将与日期选择原来的页面中定义的任何声明? – 2013-04-24 18:44:15

+0

请不要使用此答案中提供的MySQL。它已被弃用并充满缺陷。这是不安全的。相反,使用'MySQLI' – Ohgodwhy 2013-04-24 18:48:42

+0

对不起,我有点困惑你的问题。 PHP页面上的$ time变量将回显到javascript页面,并在响应变量queryResult(在上面的代码中)中可用。从那里你可以做你喜欢的事情。 @Ohgodwhy好点。我只是试图复制/精简OP为清晰起见而写的内容。 – theWizardsBaker 2013-04-24 18:49:34