【问题标题】:Populate Two Drop Down Lists in PHP在 PHP 中填充两个下拉列表
【发布时间】: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注入。

标签: php mysql session


【解决方案1】:

首先,你真的应该清理你的查询并使用mysqli

更改代码:

$_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']));

【讨论】:

  • 我们不能用 mysql 做这个吗? Coz,不然我得从头学mysqli了。
  • Mysql 太旧了。你真的应该使用mysqli。
  • 它给出了一个错误“解析错误:语法错误,C:\xampp\htdocs\test\test_b.php 中第 5 行的意外 T_UNSET”
猜你喜欢
  • 2015-03-14
  • 1970-01-01
  • 2022-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多