2014-09-02 120 views
-1

我有一个复选框一个HTML文件,如下所示:从PHP HTML复选框阅读并选择相应的查询

<body> 
<div id="wb_Web_Reports" style="position:absolute;left:329px;top:143px;width:510px;height:244px;z-index:4;"> 
<form name="Web_Reports" method="post" action="stsarrival.php" enctype="text/plain" id="Web_Reports"> 
<input type="submit" id="Button1" name="" value="Submit" style="position:absolute;left:210px;top:184px;width:96px;height:25px;z-index:0;"> 
<input type="text" id="ArrivalDate" style="position:absolute;left:140px;top:71px;width:253px;height:33px;line-height:33px;z-index:1;" name="ArrivalDate" value=""> 
<div id="wb_Text1" style="position:absolute;left:195px;top:34px;width:234px;height:16px;z-index:2;text-align:left;"> 
<span style="color:#000000;font-family:Arial;font-size:13px;">From Arrival Date:</span></div> 
<input type="checkbox" id="Checkbox1" name="Checkbox1" value="on" style="position:absolute;left:442px;top:71px;z-index:3;" onclick="document.getElementById('ArrivalDate').disabled=this.checked;"> 
    </form> 

php文件到这是发布(stsarrival.php)要运行一个查询,如果如果未选中复选框,则选中该复选框并运行其他查询。我写了以下内容:

if (isset($_POST['[Checkbox1]'])) { 

    $result = mysql_query("SELECT * FROM Main_Data_Table INNER JOIN Title ON 
Main_Data_Table.TitleID = Title.ID INNER JOIN Agent ON Main_Data_Table.AgentID = Agent.ID 
INNER JOIN Accommodation ON Main_Data_Table.AccommodationID = Accommodation.ID 
INNER JOIN `Host Family details` ON Main_Data_Table.HostFamilyID = `Host Family details`.ID 
INNER JOIN Transfers ON Main_Data_Table.TransferId = Transfers.ID 
INNER JOIN `Board Basis` ON Main_Data_Table.BoardBasisID = `Board Basis`.ID 
INNER JOIN `Course Booked` ON Main_Data_Table.CourseTypeID = `Course Booked`.ID"); 
} else { 

    $result = mysql_query("SELECT * FROM Main_Data_Table INNER JOIN Title ON 
Main_Data_Table.TitleID = Title.ID INNER JOIN Agent ON Main_Data_Table.AgentID = Agent.ID 
INNER JOIN Accommodation ON Main_Data_Table.AccommodationID = Accommodation.ID 
INNER JOIN `Host Family details` ON Main_Data_Table.HostFamilyID = `Host Family details`.ID 
INNER JOIN Transfers ON Main_Data_Table.TransferId = Transfers.ID 
INNER JOIN `Board Basis` ON Main_Data_Table.BoardBasisID = `Board Basis`.ID 
INNER JOIN `Course Booked` ON Main_Data_Table.CourseTypeID = `Course Booked`.ID 
    WHERE (Main_Data_Table.`Arrival Date` = '2014-09-01')"); 
} 

但是我总是得到一个查询的结果,无论是否选中该复选框。

请帮助...

感谢

回答

1

好的解决方案是非常非常简单的 - 我说来惭愧...

我写

​​

,而不是

['Checkbox1'] 

等完整的工作线为:

if (isset($_POST['Checkbox1'])&& $_POST['Checkbox1'] == 1) 

有两个额外的[] ...

谢谢大家

0

更改代码:

if (isset($_POST['Checkbox1'])== "on") { 

要:

if (isset($_POST['Checkbox1']) && $_POST['Checkbox1'] == "on") { 

也尽量不要使用mysql_*功能,因为它们是弃用!

此扩展从PHP 5.5.0开始已弃用,不推荐用于编写新代码,因为它将在未来删除。相反,应该使用mysqli或PDO_MySQL扩展。另请参阅MySQL API概述以获取进一步帮助,同时选择MySQL API。

1

isset返回一个布尔值,所以它永远不会等于字符串"on"。简单地删除:

if (isset($_POST['Checkbox1'])) { 

有没有必要检查值,则该复选框未选中

+0

没有抱歉不工作 - 相同的结果 – elstiv 2014-09-02 12:42:47

+0

然后,其他的东西是错的,因为这个代码是尽可能简单。 var_dump($ _ POST);'看起来像什么? – Steve 2014-09-02 12:46:02

+0

它返回数组(0){} – elstiv 2014-09-02 12:49:27

0

改变这样的代码键不会接线柱阵列中存在:

if (isset($_POST['Checkbox1']) && $_POST['Checkbox1'] == "on") 
{ 
} 
else 
{ 
} 
+0

没有抱歉同样的结果 – elstiv 2014-09-02 12:43:04

0

不要将复选框的值设置为打开或关闭。只要给一个或零。尝试提交您的表单,并检查通过该帖子输入了什么值。根据你的价值,你可以写出你想要的条件。

1

这样的事情...

$query = " 
SELECT * 
    FROM Main_Data_Table m 
    JOIN Title ti 
    ON m.TitleID = ti.ID 
    JOIN Agent ag 
    ON m.AgentID = ag.ID 
    JOIN Accommodation ac 
    ON m.AccommodationID = ac.ID 
    JOIN `Host Family details` d 
    ON m.HostFamilyID = d.ID 
    JOIN Transfers tr 
    ON m.TransferId = tr.ID 
    JOIN `Board Basis` b 
    ON m.BoardBasisID = b.ID 
    JOIN `Course Booked` c 
    ON m.CourseTypeID = c.ID 
"; 


if (isset($_POST['Checkbox1'])&& $_POST['Checkbox1'] == 1){ 
$query .= " WHERE m.`Arrival Date` = '2014-09-01'"; 
} 

...但不要使用“SELECT *”并且不要在列/表名中使用空格。它会驱动你的保险人