1

2つのテーブルがcustomerありreservationsます。customer両方に。reservationsという行が含まれていますcustomerIDreservations日付のみを含むresStartおよびresEndという名前の2つの列が含まれています(YYYY-MM-DD。これは、$todaysdate変数を確立するために使用する正確な形式です。

これら2つを結合して、他の情報とともに1つの列を持つテーブルを作成したいのですcustomerIDが、$todaysdateが2つの日付またはその間にある場合に限ります。注:$ todaysdateは、マイドキュメントの他の場所で_GET from url(つまり、day.php?date = 2012-07-04)として確立されるか、確立されていない場合は、今日の日付とdate('Ymd')のいずれかとして確立されます。コードのこの部分は私の問題が存在する場所ではありません、私はそれを確信しています。mySqlクエリで情報を定義しているときに、どこかで構文エラーだと思います。

これが私が取り組んでいるものです。簡単な説明:私はJavascriptの周りにPHPコードをラップしています。ここでの目標は、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 に答える