2013-02-14 59 views
0

在.class.php文件中,我有这个查询。使用选项值为搜索条件设置变量

public function findschedules($arricao, $depicao, $airline, $aircraft) { 
    $query = "SELECT db_schedules.*, db_aircraft.name AS aircraft, db_aircraft.registration 
      FROM db_schedules, db_aircraft 
      WHERE db_schedules.depicao LIKE '$depicao' 
      AND db_schedules.arricao LIKE '$arricao' 
      AND db_schedules.code LIKE '$airline' 
      AND db_schedules.aircraft LIKE '$aircraft' 
      AND db_aircraft.id LIKE '$aircraft' 
      AND db_schedules.enabled = '1' 
      AND db_schedules.daysofweek LIKE '%{$day}%'"; 
    return DB::get_results($query); 
} 

执行搜索时使用公共函数。但是,该文件链接到一个模板文件$this->show('airport_search.tpl');,该模板文件包含所有HTML代码,并在其中包含选择框。

<select style="border:1px solid #DCDCDC; color:#003663; font-size:11px;" class="search" name="day" id="day"> 
       <option value="0">Sunday</option> 
       <option value="1">Monday</option> 
       <option value="2">Tuesday</option> 
       <option value="3">Wednesday</option> 
       <option value="4">Thursday</option> 
       <option value="5">Friday</option> 
       <option value="6">Saturday</option> 
      </select> 

下面的线被设计成在db_schedules表的daysofweek柱以搜索字符串的一部分。我试图从airport_search.tpl的选择框中为它分配一个变量。我希望理想地从option value=""中获得变量并在查询中分配它。

AND db_schedules.daysofweek LIKE '%{$day}%'"; 

此外,daysofweek列是一个varchar(7)类型字段,具有的默认值。他们代表几天,0是星期日,1-6星期一至星期六。因此,查询的预期输出是在选择框中查找用户给出的日期。

如何根据用户在其他文件中的选择框中的输入将选项框中的变量分配给查询?

+0

你忘了问我一个问题我的无能 – 2013-02-14 00:25:31

回答

1
$day = $_POST['day']; 

是您需要从提交表单的选定选项中获取value属性。

但是,请勿使用$day。使用库MySQLi/PDO和写参数化查询,像这样:

$stmt = $pdo->prepare("...AND daysofweek LIKE ?"); 
$stmt->execute("%$day%"); 
+0

道歉,但是我从来没有用'$ _POST'工作之前和'pdo',你会不会介意它澄清多一点,它应该在何处被理想地用于它的工作? – zzwyb89 2013-02-14 00:32:55

+1

@ zzwyb89你不需要做任何特别的设置'$ _POST'。当您使用POST方法提交请求时,它会自动被PHP解序列化。如果你只是用'method = post'提交表单,你可以使用它。 'PDO'并不难,尤其是如果你已经知道如何使用'ext/mysql'。 http://www.php.net/manual/en/pdo.construct.php – 2013-02-14 00:37:20

+0

我需要做些什么来包含“所有日期”选项?预期的输出将只是表格中的所有记录。 – zzwyb89 2013-02-14 14:49:59