PHP 下拉列表,用于查询另一个下拉列表以查询结果


PHP dropdown to query for another dropdown to query for results

对!我是一个完整的PHP菜鸟,但已经设法完全吹嘘/复制/粘贴/嫁接了一些PHP,这些PHP查询我希望它查询的内容并返回给我一个下拉菜单。

现在。我可以把它混为另一个下拉菜单。然而。此下拉列表应基于从第一个查询返回的数组返回结果。

和。最后,一旦选择了此下拉列表,它应该在下表中打印结果。

我知道我应该使用 Javascript 来临时存储下拉列表返回的值。

因此,我有三个查询都可以在MySQL中使用:

select id, name, replace(replace(arrange, 'c,', ''), '|', ',')
from cats
limit 10;

此查询现在以数组友好的格式返回"排列",其中包含我只是复制和粘贴的子类别,但为此希望以字符串和查询的形式返回。

select id, name, Group_concat(replace(replace(arrange, 'i,', ''), '|', ',')) As          Products_in_Category from cats
where id in (ARRAY FROM PREVIOUS QUERY REPLACE);

现在这返回了一个庞大的数组,你猜对了,我想定义为一个字符串和查询来返回最终查询。

select p.id,substring(c.name, 1, 60) As Name, c.code, sum(qty) As Sold
from cart c
join prods p on c.item = p.id
and order_status = ('Processed Order')
and p.id in ([ARRAY RETURNED FROM PREVIOUS GROUP_CONCAT)
group by code
order by sold desc

因此,我为 PHP 编写的代码是:

<?php  
$host = '';
$user = '';
$pass = '';
$db = '';
//Database Connection
mysql_connect($host, $user, $pass)
or die('Could not connect: ' . mysql_error());
mysql_select_db($db)
or die ('Could not select database ' . mysql_error());
// SQL QUERY TO NAME 
$sql = "select id, name, replace(replace(arrange, 'c,', ''), '|', ',')
from kcommerce_cats
where arrange like ('c,%')";
$result = mysql_query($sql);
echo "<select name='type'>";
while($row = mysql_fetch_assoc($result)){
echo '<option value="'.$row['name'].'">'.$row['name'].'</option>';
}
echo "</select>";
?>

那么我现在如何选择替换为字符串。

然后我如何查询该替换为第二个下拉列表的 In。

从那里开始,魔鬼应该如何将group_concat声明为要查询的字符串以进行最后

的查询。

除此之外,我希望能够将所有这些放在 HTML 表中。

在这里问了很多,但我脑子里有我想要的原则,只是没有PHP能力!!

所以我还没有设法解决事情的下拉/选择方面,但我设法回答了如何从一个查询传递结果然后针对该查询进行查询的问题 - 我也设法在 HTML 表中打印结果。

因此,为了查询最终将成为整个页面及其下拉列表基础的类别:

$query = "select id, name, replace(replace(arrange, 'c,', ''), '|', ',') As Arrange
from cats
where arrange like ('c,%') limit 10";
$result = mysql_query($query);
if (!$result) {
$message  = 'Invalid query: ' . mysql_error() . "'n";
$message .= 'Whole query: ' . $query;
die($message);
}

上面是执行第一个查询,以准备将结果存储为字符串。

while ($row = mysql_fetch_array($result)) {
$arrange = $row['Arrange'];
}
echo $arrange;
mysql_free_result($result);

现在这是说从第一个查询中查找排列的值,echo 会将其打印出来,以便您可以确认返回的值。重要的部分是代码中现在用于存储该数组的$arrange。

//Query Subcategories
$query = "select id, name, Group_concat(replace(replace(arrange, 'i,', ''), '|', ',')) As     Products from cats
where id in (".$arrange.")";

这是子类别查询,其中包含针对$arrange结果进行查询的重要附加功能。

$result = mysql_query($query);
if (!$result) {
$message  = 'Invalid query: ' . mysql_error() . "'n";
$message .= 'Whole query: ' . $query;
die($message);
}
while ($row = mysql_fetch_array($result)) {
$prodsarray = $row['Products'];
}
echo "<br>";
echo $prodsarray;

然后,我重复了上述过程,将 Group Concat 作为字符串返回,然后可以根据上面第二个查询的第一行使用该字符串。

$query = "select p.id As ID,substring(c.name, 1, 100) As Name, c.code As Code, sum(qty) As     Sold, 
p.price As Price, format(p.price*1.2,2) As VAT, p.rrp As RRP, p.cost As Cost
from cart c
join prods p on c.item = p.id
and order_status = ('Processed Order')
and p.id in (".$prodsarray.")
and date_ordered < now()-interval 3 month
group by code
order by sold desc";
// Perform Query
$result = mysql_query($query);
// Check result
// This shows the actual query sent to MySQL, and the error. Useful for debugging.
if (!$result) {
$message  = 'Invalid query: ' . mysql_error() . "'n";
$message .= 'Whole query: ' . $query;
die($message);
}

下一步是将此查询的结果回显到表中。

echo "<table class='equalDivide' cellpadding='0'cellspacing='0' width='100%' border = '3'><tr>";
echo "<td width = '5%' align='center'>ID</td>";
echo "<td width = '35%'align='center'>Name</td>";
echo "<td width = '15%' align='center'>Code</td>";
echo "<td width = '7.5%' align='center'>Sold</td>";
echo "<td width = '7.5%' align='center'>Price</td>";
echo "<td width = '7.5%' align='center'>VAT</td>";
echo "<td width = '7.5%' align='center'>RRP</td>";
echo "<td width = '7.5%' align='center'>Cost</td>";
echo "</tr></table><br>";

以上是字段名称的硬编码。

 // Use result
 // Attempting to print $result won't allow access to information in the resource
 // One of the mysql result functions must be used
 // See also mysql_result(), mysql_fetch_array(), mysql_fetch_row(), etc.
while ($row = mysql_fetch_array($result)) {
echo "<table class='equalDivide' cellpadding='0'cellspacing='0' width='100%' border = '1'><tr>";
echo "<td width = '5%'>".$row['ID']."</td>";
echo "<td width = '35%'>".$row['Name']."</td>";
echo "<td width = '15%'>".$row['Code']."</td>";
echo "<td width = '7.5%'>".$row['Sold']."</td>";
echo "<td width = '7.5%'>".$row['Price']."</td>";
echo "<td width = '7.5%'>".$row['VAT']."</td>";
echo "<td width = '7.5%'>".$row['RRP']."</td>";
echo "<td width = '7.5%'>".$row['Cost']."</td>";
echo "</tr></table>";
}

这是用结果填充表的循环,请注意 ['Sold'] 下行是我在选择查询中声明的行。

下一步是将前两个查询转换为下拉选择,然后我就完成了!繁荣!