2014-11-08 113 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>'; 
}