1

我有两张桌子,customerreservationscustomer并且reservations都包含一个名为customerID. reservations包含两个名为 resStart 和 resEnd 的列,其中只有日期(YYYY-MM-DD,这是我将用于建立 $todaysdate 变量的确切格式。

我想加入这两者以生成一个包含单列customerID以及其他信息的表格,但前提是 $todaysdate 落在两个日期或两个日期之间。注意:$todaysdate 在我的文档中的其他地方建立为来自 url 的 _GET(即 day.php?date=2012-07-04),或者如果没有建立,则使用日期('Ymd')的今天日期。这部分代码不是我的问题所在,我敢肯定。我认为这是在 mySql 查询中定义信息时的语法错误。

这就是我正在使用的。一点解释:我将 PHP 代码包装在 Javascript 周围,这里的目标是为每个 resStart 生成一个单独的 DIV。Javascript 正在获取偏移变量以添加到每个 DIV 的 CSS 中,因此每个 DIV 会自动相对于它所代表的设备放置。

<?php
 $getreservations = mysql_query("
 SELECT * FROM customer LEFT JOIN reservations WHERE ( customer.customerID = reservations.customerID ) 
 AND ($todaysdate = resStart OR $todaysdate >= resStart AND $todaysdate <= resEnd )
") 

or die(mysql_error());

while( false !== ($row = mysql_fetch_assoc($getreservations)))
{
    $nameLast = $row["nameLast"];
    $nameFirst = $row["nameFirst"];
    $customerID = $row["customerID"];
    $equipID = $row["equipID"];
    $resStart = $row["resStart"];
    $resEnd = $row["resEnd"];
    $timeStart = $row["timeStart"];
    $timeEnd = $row["timeEnd"];
    $result =  strtotime($timeStart);
        $minute = date("i", $result );
        $second = date("s",$result );
        $hour = date("H", $result );

    if(true) {
 ?>
    <script language='javascript'>
    var left = $('#<?php echo("$hour$minute");?>').offset().left; 
    var top = $('#<?php echo $equipID;?>').offset().top; 

 $(document).ready(function() {
    $('#<?php echo ("$customerID$equipID");?>).css( { 'left': (pos.left + width) + 'px', 'top': (pos.top + top) + 'px' } );     
}
    </script>

<?php } 
echo ("<div class='resContainer $customerID$equipID' id=$customerID$equipID>$nameLast, $nameFirst</div> ");

    } ?>
4

3 回答 3

1
SELECT * FROM customer c INNER JOIN reservations r USING(customerID) WHERE '{$todaysdate}' BETWEEN r.resStart AND r.resEnd

但是,您也可以在 SQL: 中获取“todaysdate”,DATE(NOW())语句将是:

SELECT * FROM customer c INNER JOIN reservations r USING(customerID) WHERE DATE(NOW()) BETWEEN r.resStart AND r.resEnd

编辑:在变量周围添加引号$todaysdate以避免混淆

于 2012-04-07T22:54:05.313 回答
1
  1. 首先直接在数据库中尝试您的查询。您将获得正确的错误代码和问题所在的信息。
  2. 使用 JOIN 时,应指定连接条件,使用 USING 或 ON (table1.field=table2.field)。(参考文档:http ://dev.mysql.com/doc/refman/5.0/en/join.html )
于 2012-04-07T22:58:44.223 回答
0

试试下面的查询:

SELECT * FROM customer 
LEFT JOIN reservations  on customer.customerID = reservations.customerID 
WHERE curdate() BETWEEN r.resStart AND r.resEnd
于 2012-04-07T22:58:02.053 回答