2011-04-12 9 views
0

私はこのコードを使用してきた大使館の休日:データベースからの大使館のために営業時間を取り、大使館が現在開いているか否かを判断する PHPの営業時間&

$rawsql = "SELECT 
* 
FROM 
    _erc_foffices n 
INNER JOIN 
    _erc_openings o ON n.id = o.branch_id AND o.dotw = DAYOFWEEK(CURRENT_DATE()) 
INNER JOIN 
    _erc_openings_times t ON o.id = t.opening_id 
WHERE 
(
    UNIX_TIMESTAMP(CURRENT_TIMESTAMP()) BETWEEN UNIX_TIMESTAMP(CONCAT(CURRENT_DATE(), ' ', t.open)) AND UNIX_TIMESTAMP(CONCAT(CURRENT_DATE(), ' ', t.close)) 
) 
AND 
(
    n.id = %d 
) 
;"; 

$sql = sprintf($rawsql, mysql_real_escape_string($id)); 

$result = mysql_query($sql); 

/*These if & while statements decide whether or not the information should be displayed. If no results are returned from the query above then an alternative message is shown.*/ 

if(mysql_num_rows($result) > 0) { 
    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { 

     echo "<div class='address'><p>" . $row["title"] . "<br/>"; 
     echo $row["address_1"] . "<br/> " . $row["address_2"] . "<br/> " . $row["address_3"] . "<br/> " . $row["address_4"] . "<br/> " . $row["address_5"] . "</p>"; 
     echo "<div class='buttons'><img src='http://localhost/erc/images/texttouser_button.png'/><br/><a href='" . $row["url"] . "' target='blank'><img src='http://localhost/erc/images/website_button.png'/></a></div></div>"; 
     echo "<div class='email'>" . $row["email"] . "</div>"; 
     $extra_notes = $row["extra"]; 

    } 
} else { 

     $embassy_closed = mysql_query("SELECT * FROM _erc_foffices WHERE id = '$embassy_id'"); 

     while($row = mysql_fetch_array($embassy_closed)) 
         { 

     echo "<div class='address'><p>" . $row["title"] . "<br/>"; 
     echo $row["address_1"] . "<br/> " . $row["address_2"] . "<br/> " . $row["address_3"] . "<br/> " . $row["address_4"] . "<br/> " . $row["address_5"] . " <font color='red'>The embassy is closed.</font></p>"; 
     echo "<div class='buttons'><img src='http://localhost/erc/images/texttouser_button.png'/><br/><a href='" . $row["url"] . "' target='blank'><img src='http://localhost/erc/images/website_button.png'/></a></div></div>"; 
     echo "<div class='email'>" . $row["email"] . "</div>"; 
     $extra_notes = $row["extra"]; 


         } 


} 

。そうでない場合は、「大使館が閉鎖されました」というメッセージが表示されます。今私は祝日で追加する必要があるので、私はこのように見えるようにクエリを変更した:

$rawsql = "SELECT 
    * 
    FROM 
     _erc_foffices n 
    INNER JOIN 
     _erc_openings o ON n.id = o.branch_id AND o.dotw = DAYOFWEEK(CURRENT_DATE()) 
    INNER JOIN 
     _erc_openings_times t ON o.id = t.opening_id 
     LEFT JOIN 
    _erc_holidays h ON h.branch_id = n.id 
    WHERE 
    (
     UNIX_TIMESTAMP(CURRENT_TIMESTAMP()) BETWEEN UNIX_TIMESTAMP(CONCAT(CURRENT_DATE(), ' ', t.open)) AND UNIX_TIMESTAMP(CONCAT(CURRENT_DATE(), ' ', t.close)) 
    ) 
    AND 
    (
     n.id = %d 
    ) 
     AND 
(
    UNIX_TIMESTAMP(CURRENT_TIMESTAMP()) 
    NOT BETWEEN UNIX_TIMESTAMP(h.begins_at) AND UNIX_TIMESTAMP(h.ends_at) 
) 
     ;"; 

が、これは2回だけアドレス/電子メールなどを出力します。

私が間違っていることを誰かが指摘できますか?任意のヘルプ

編集用

感謝:私はちょうど第二のクエリを使用している場合/他のループ、今、これを修正しました。

答えて

0

2番目のクエリとif/elseループを使用して、私が望むように動作しています。

0

私はエキスパートではなく、あなたのジョインは非常に複雑に見えますが、私の経験では、あなたのクエリに重複がある場合、適切にグループ化されていないため、GROUP BYすべてあなたの質問に含まれています。

希望に役立ちます。

ところで...どこであなたの祝日のデータを入手しましたか?私は現時点で全く同じことを探していますが、私はこの記事をどのように見つけたのですか。

+0

こんにちはデイブ、私たちのスタッフの一員は、すべての大使館のウェブサイトを通過し、手動でデータを収集しています。 –

関連する問題