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

时间:2013-06-21 13:45:11

标签: php javascript mysql

右键!我是一个完整的PHP菜鸟,但已经设法完全blag /复制/粘贴/移植到一些PHP,查询我想要查询的内容并返回给我一个下拉列表。

现在。我可以将这个再次下拉。然而。此下拉列表应基于第一个查询返回的数组返回结果。

和。最后选择此下拉列表后,应将结果打印在下表中。

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

所以就这样,我有三个查询都在MySQL中工作:

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

此查询现在以数组友好格式返回“arrange”,其中包含我只是复制和粘贴的子类别,但是为此需要以字符串和查询的形式返回。

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的能力!!!

1 个答案:

答案 0 :(得分:0)

所以我没有设法解决事情的下拉/选择方面,但我设法回答了如何从一个查询传递结果然后查询的问题 - 我也设法打印了得到一个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);

现在这就是说从第一个查询中查找Arrange的值,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']是我在select查询中声明的行。

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