如何使用MYSQL数据创建“排序依据”下拉列表

时间:2012-11-01 15:34:36

标签: php html mysql

嘿伙计们我已经坚持了一段时间了,真的需要帮助。它确实很容易做到,但我只是没有看到它正确的方式。

我所拥有的是一个名为“company_list.php”的页面,在此页面上我将显示公司表中的所有公司。我想要做的是有一个下拉选择表单来排序我的结果。目前我只想按类别排序。

表公司: companyID 的categoryID 公司名 等...

表类别: 的categoryID 类别名称

**FORM**
    <form action="company_list.php" method="POST" >
<label>Category: </label>
<select name="categoryID">
<?php foreach ($categorys as $category) : ?>
<option value="<?php echo $category['categoryID']; ?>">
<?php echo $category['categoryName']; ?>
</option>
<?php endforeach; ?>
</select>
<input type="submit" value="Sort" />

PHP 这是我被困的地方,并尝试了许多不同的事情请帮助!!

    //include db here
//global
global $db;
if(isset($_POST['categoryID']) === " '.$categoryID.' ") {
$query='SELECT *
FROM company
WHERE categoryID ="'.$categoryID.'"
$db->query($query);
}
//get data
//get all cats
$query='SELECT * FROM category
ORDER BY categoryID';
$categorys=$db->query($query);
//Get all COMPANYS for cat
$query='SELECT * FROM company WHERE categoryID = "'.$categoryID.'"
ORDER BY companyName ASC';
$category_companys=$db->query($query);

我在这里撞墙,真的很喜欢一些帮助。提前谢谢。

我能够完成类似的事情,但不能在下拉列表中完成。以下是我的所作所为,但是如何将其变为下拉列表。

PHP

    global $db;
if(!isset($categoryID)) {
@$categoryID = $_GET['categoryID'];
if(!isset($categoryID)){
$categoryID=2; //I want to start by displaying companys for all categorys...not at categoryID=2
}
}
//get name of all categorys
$query='SELECT * FROM category
WHERE categoryID = "'.$categoryID.'"';
$category_results=$db->query($query);
$category_row = $category_results->fetch();
$categoryName = $category_row['categoryName'];
//get all cats
$query='SELECT * FROM category
ORDER BY categoryID';
$categorys=$db->query($query);
//Get all COMPANYS for cat
$query='SELECT * FROM company WHERE categoryID = "'.$categoryID.'"
ORDER BY companyName ASC';
$category_companys=$db->query($query);

HTML

    <!--lists all category`s in <li> not a drop down form -->
<?php foreach($categorys as $category) : ?>
<li>
<a href="company_list.php?categoryID=<?php echo $category['categoryID']; ?>" >
<?php echo $category['categoryName']; ?>
</a>
</li>
<?php endforeach; ?>
<!--Result Set-->
<table border="1px solid black" cellspacing="1px" cellpadding="2px;" style="margin-top:5px;">
<!--<h1>Company Name</h1>-->
<th>Company Name</th>
<th>Address</th>
<th>Phone</th>
<th>Email</th>
<?php foreach($category_companys as $company) : ?>
<tr>
<td><a href="company_page.php?company_id=<?php echo $company['companyID']; ?>">
<?php echo $company['companyName']; ?></a>
</td>
<td>
<?php echo $company['companyAddress']; ?>
</td>
<td>
<?php echo $company['companyPhone']; ?>
</td>
<td>
<?php echo $company['companyEmail']; ?>
</td>
</tr>
<?php endforeach; ?>
</table>

1 个答案:

答案 0 :(得分:0)

你的php语法非常糟糕:

if(isset($_POST['categoryID']) === " '.$categoryID.' ") {
                                    ^^^^^^^^^^^^^^^^^^

正在尝试将已发布的值与具有空格,单引号,句点,$ categoryID变量的值,另一个句点,另一个引号,另一个空格的字符串进行比较。

你可能想要:

if(isset($_POST['categoryID']) === $categoryID) {

代替?请注意,这很可能会导致STILL失败。来自$ _GET / $ _ POST / $ _ REQUEST超级全局的任何东西都是 STRING 。如果$ categoryID是一个整数,则比较将失败,因为类型不匹配 - 即使值相同。

P.S。格式正确(例如缩进)的代码是你的朋友。不要害怕标签。