2014-11-08 55 views
0

我正在創建一個人們可以預留表格的地方。 這是一個學校的項目。我可以使這個PDO更短

但重點是,我想檢查我的數據庫,如果表已經保留爲選定的日期&時間,如果真的,向它添加一個類,所以它變成紅色,或類似的東西。

我現在有這個代碼,但我不想爲表2 - 18做同樣的事情,因爲我會得到巨大的代碼。必須有一個更簡單的方法。 任何人有任何想法?

<? 
    $date = $_GET['date']; 
    $time = $_GET['time']; 
    ?> 
    <button class="table 
    <? 
    $table1 = $con->prepare("SELECT * FROM `table` WHERE `table` = 1 AND `date` = ? AND `time` = ?"); 
    $table1->bindValue(1, $date); 
    $table1->bindValue(2, $time); 
    $table1->execute(); 
    if($tafel1->rowCount() > 0) { echo "active";} 
    ?>"></button> 
+2

只是你的參數表'='列呢?。你可以用' - > execute([$ table,$ date,$ time])'而不是' - > bindValue'調用進一步縮短代碼。 – mario 2014-11-08 13:34:18

+0

您也可以選擇所有'表'字段的特定日期和時間。如果表中不存在這個選擇 - 那麼它是活動的,否則 - 不是。 – 2014-11-08 13:35:35

回答

1

像這樣的做工精美,服用預處理語句的充分利用:

$date = $_GET['date']; 
$time = $_GET['time']; 
$query = $con->prepare(" 
    SELECT `id` -- if you don't have an ID column, replace with any column really 
    FROM `table` 
    WHERE `table` = ? 
     AND `date` = ? 
     AND `time` = ? 
    LIMIT 1 -- you're only interested in existence, so limit 1 is more efficient 
"); 
foreach(range(1,18) as $table) { 
    $query->execute(array($table, $date, $time)); 
    if($query->rowCount() > 0) $class = "table active"; 
    else $class = "table"; 

    echo '<button class="'.$class.'"></button>'; 
}