【发布时间】:2015-02-27 07:34:55
【问题描述】:
- 我有 3 张桌子。
-
company表、departments表和imei numbers表。 - 有 2 个下拉列表。
- 数据库中的第一个公司列表。
- 选择公司后,应显示所选公司的所有 IMEI 号码以及第二个下拉列表,其中包含所选公司数据库中的部门列表。
代码:
$query = mysql_query ("SELECT `imei` FROM `devicemanager` WHERE `companyid` = '".$_SESSION['companyid']."' ORDER BY `imei` ASC");
- 现在选择了一家公司。
- 然后从下一个列表中选择一个部门。
- 然后它应该显示所选部门和所选公司的所有IMEI号码。
代码:
$query = mysql_query ("SELECT `imei` FROM `devicemanager` WHERE `companyid` = '".$_SESSION['companyid']."' AND `depid` = '".$_SESSION['depid']."' ORDER BY `imei` ASC");
- 如果您想选择同一公司的另一个部门,它应该显示第二个部门和所选公司的所有IMEI号码。
- 到目前为止一切正常。
- 我为此使用了
IF循环。 - 它检查 depid
$_SESSION['depid']的会话变量值。 - 当您想查看另一家公司的imei号码时,您选择另一家公司。
- 那么
$_SESSION['companyid']就会被改变。 - 但
$_SESSION['depid']将保留之前选择的部门的depid。 - 因此,由于
$_SESSION['depid']不为空,else部分将再次执行。 - 意思是
代码:
$query = mysql_query ("SELECT `imei` FROM `devicemanager` WHERE `companyid` = '".$_SESSION['companyid']."' AND `depid` = '".$_SESSION['depid']."' ORDER BY `imei` ASC");
将被执行。
- 但是,在此查询中,
$_SESSION['companyid']将是第二个选择的公司的公司 ID,$_SESSION['depid']将是之前选择的部门的部门 ID。 - 表示
$_SESSION['depid']不属于选中的$_SESSION['companyid']。 - 数据库中没有该组合的任何 IMEI 号码。
- 所以,由于无法执行查询,所以没有给出第二选择公司的IMEI号码列表。
- 我也尝试了
unset($_SESSION['depid']),但没有成功。 已经选择了有部门的公司,如何查看二次选择公司的IMEI号码列表?
还有其他方法吗?不止
IF循环
整个代码工作
<?php
session_start();
//$_SESSION['companyid'] = $_POST['companyid'];
//$_SESSION['depid'] = $_POST['depid'];
(isset($_POST['companyid']) ? $_SESSION['companyid'] = $_POST['companyid'] : unset($_SESSION['companyid']));
(isset($_POST['depid']) ? $_SESSION['depid'] = $_POST['depid'] : unset($_SESSION['depid']));
include "dbconnect.php";
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<?php
echo "<input type='hidden' id='comp' value='".$_SESSION['companyid']."'/>";
echo "<input type='hidden' id='dept' value='".$_SESSION['depid']."'/>";
echo "<input type='hidden' id='dept2' value='".$_SESSION['depid2']."'/>";
echo "<form method='post'>";
if ($_SESSION['depid'] == 0){
$companyid = $_POST['companyid'];
echo "<select name='companyid' id='companyid' onchange='form.submit()'>";
echo "<option value=''>Select Company</option>";
$query = mysql_query ("SELECT * FROM `company` ORDER BY `companyid` ASC") or die (mysql_error());
while ($row = mysql_fetch_assoc($query)){
echo "<option ".(($_SESSION['companyid'] == $row['companyid'])? 'selected==selected':'')." value='".$row['companyid']."'>".$row['company']."</option>";
}
echo "</select></br>";
$depid = $_POST['depid'];
$query = mysql_query("SELECT `depid`, `department` FROM `department` WHERE `companyid` = '".$_SESSION['companyid']."' ORDER BY `depid` ASC") or die (mysql_error());
echo "</br>";
echo "<select name='depid' id='depid' onchange='form.submit()'>";
echo "<option value=''>Select Department</option>";
while ($row = mysql_fetch_assoc($query)){
echo "<option ".(($_SESSION['depid'] == $row['depid']) ? 'selected==selected':'')." value='".$row['depid']."'>".$row['department']."</option>";
}
echo "</select></br>";
//$query = "SELECT `depid`, `department` FROM `department` WHERE `companyid` = '".$_SESSION['companyid']."'";
//echo $query;
$query = mysql_query("SELECT `depid`, `department` FROM `department` WHERE `companyid` = '".$_SESSION['companyid']."'") or die (mysql_error());
echo "<table>";
echo "<tr>";
echo "<th>IMEI NO.</th>";
echo "</tr>";
echo "</table>";
$query = mysql_query ("SELECT `imei` FROM `devicemanager` WHERE `companyid` = '".$_SESSION['companyid']."' ORDER BY `imei` ASC");
echo "<table>";
while ($row = mysql_fetch_assoc($query)){
echo "<tr>";
echo "<td>".$row['imei']."</td>";
echo "</tr>";
}
echo "</table>";
}
else {
$companyid = $_POST['companyid'];
echo "<label>test</label>";
echo "<select name='companyid' id='companyid' onchange='form.submit()'>";
echo "<option value=''>".$row['company']."</option>";
$query = mysql_query ("SELECT * FROM `company` ORDER BY `companyid` ASC") or die (mysql_error());
while ($row = mysql_fetch_assoc($query)){
echo "<option ".(($_SESSION['companyid'] == $row['companyid'])? 'selected==selected':'')." value='".$row['companyid']."'>".$row['company']."</option>";
}
echo "</select></br>";
$depid = $_POST['depid'];
$query = mysql_query("SELECT `depid`, `department` FROM `department` WHERE `companyid` = '".$_SESSION['companyid']."' ORDER BY `depid` ASC") or die (mysql_error());
echo "</br>";
echo "<label>test</label>";
echo "<select name='depid' id='depid' onchange='form.submit()'>";
echo "<option value=''>Select Department</option>";
while ($row = mysql_fetch_assoc($query)){
echo "<option ".(($_SESSION['depid'] == $row['depid']) ? 'selected==selected':'')." value='".$row['depid']."'>".$row['department']."</option>";
}
echo "</select></br>";
//$query = "SELECT `imei` FROM `devicemanager` WHERE `companyid` = '".$_SESSION['companyid']."' AND `depid` = '".$_SESSION['depid']."'";
//echo $query;
echo "<table>";
echo "<tr>";
echo "<th>IMEI NO.</th>";
echo "</tr>";
echo "</table>";
$query = mysql_query ("SELECT `imei` FROM `devicemanager` WHERE `companyid` = '".$_SESSION['companyid']."' AND `depid` = '".$_SESSION['depid']."' ORDER BY `imei` ASC");
echo "<table>";
while ($row = mysql_fetch_assoc($query)){
echo "<tr>";
echo "<td>".$row['imei']."</td>";
echo "</tr>";
}
echo "</table>";
}
echo "</form>";
?>
</body>
</html>
【问题讨论】:
-
您的代码块中似乎可能有一些无关的
`字符(例如else {`),这些字符可能是在尝试格式化代码时遗留下来的。请检查您在问题中的代码,以验证这些字符是否确实在您使用的代码中。如果它们不在您的实际代码中,请删除它们。 -
你的代码容易被sql注入。