右键!我是一个完整的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的能力!!!
答案 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查询中声明的行。
下一步是将前两个查询转换为下拉选项,然后我就完成了!吊杆!