【发布时间】:2016-04-02 04:40:00
【问题描述】:
我对 PHP 数组不太熟悉,我有以下代码可以生成查询以输出所需的结果。
$allstore = $_POST['store'];
function createSelect($allstore)
{
if (empty($allstore))
return "";
$querySelect = "";
$queryJoin = "";
$baseTable = "";
foreach ($allstore as $store => $value) {
if (!$querySelect) {
$baseTable = $store;
$querySelect = "SELECT " . $store . ".item_no, " . $store . ".actual_price, " . $store . ".selling_price, " . $store . ".qty as " . $store;
} else {
$querySelect .= ", " . $store . ".qty as " . $store;
$queryJoin .= "
INNER JOIN " . $store . " ON " . $baseTable . ".item_no = " . $store . ".item_no";
}
}
$querySelect .= " FROM " . $baseTable;
$query = $querySelect . $queryJoin;
return $query;
}
//Stores to be shown
$allstore = ['s_M9' =>0 , 's_M10' =>1];
$query = (createSelect($allstore));
$result = mysql_query($query);
//rest of code...
正如您在上面看到的,在最顶部有 $allstore = $_POST['store'];,它根据以前的 form POST 方法 收集值,该方法具有带有 name=store[] 的复选框。
现在根据显示的功能,如果我像这样创建自己的键和值
$allstore = ['s_M9' =>0 , 's_M10' =>1];
输出准确地显示了我正在寻找的内容。但是问题在于如何让$allstore 根据用户在上一页(复选框)上选择的内容来内爆那些商店s_M9, s_M10?我的意思是,用户可以选择其中一个 store 或 Both stores 。如何在不手动插入的情况下将这些括号之间的检查结果内爆?
谢谢
编辑:
<?php
echo "<form action='somewhere.php' method='POST'>";
$query = "SELECT * from stores_list ORDER BY short Asc";
$result = mysql_query($query);
if(mysql_num_rows($result)>0){
$num = mysql_num_rows($result);
for($i=0;$i<$num;$i++){
$row = mysql_fetch_assoc($result);
echo "<input type=checkbox name=store[] value={$row['short']} style='width:20px; height:20px;'>{$row['short']}";
}
}
else{
//No Stores Available
echo "No Stores Found !";
}
echo "</td><input type='submit' value='Search'/></form>";
【问题讨论】:
-
你能发布你的html吗
-
好的,等一下
-
天哪,这会很有趣。让我指出,您正在将用户输入注入 MySQL 查询的 program 部分,这可能比将它们注入“值”部分更糟糕。你真的,真的不应该这样做。
-
题外话,停止使用mysql_*函数,学习PDO。
标签: php mysql arrays checkbox implode