我一直在网上和网上寻找解决我困境的解决方案大约一周,到目前为止,我所做的一切似乎都没有用。如果我提供太多代码作为示例,我会提前道歉!!!
这是我的数组片段:
$products = array(
1 => array(
'category' => 'Computer Science',
'title' => 'Programming PHP',
'author' => 'Lerdorf',
'publisher' => 'O\'Reilly',
'price' => 29.99,
'isbn' => '1412359370'
),
2 => array(
'category' => 'Computer Science',
'title' => 'CGI Programming',
'author' => 'Guelich',
'publisher' => 'O\'Reilly',
'price' => 39.99,
'isbn' => '1772355179'
),
我正在尝试拨打'类别'和作者'出于它,所以当用户点击"计算机科学"在页面上的书籍列表中,"编程PHP"和" CGI编程"如果他们点击作者的名字,只会出示他的书籍等,就会出现同样的事情......
我在页面中显示数组,方法是使用循环调用数组并显示表中的所有产品:
echo "<p>
<a href='http://bctdigital.com/~student4/php/amazon_new.php'>AmaNot</a></p>";
echo "<h3>Our Products</h3>";
echo"<table style='width:500px;' cellspacing='0'>";
echo"<tr>
<th style ='border-bottom:1px solid #000000;'>Title</th>
<th style ='border-bottom:1px solid #000000;'>Price</th>
<th style ='border-bottom:1px solid #000000;'><a href='http://bctdigital.com/~student4/php/amazon_new.php?view_product=$category'>" . $product['category'] . "</a>Category</th>
<th style ='border-bottom:1px solid #000000;'>Author</th>
</tr>";
// Loop to display all products - work on this links
foreach($products as $id => $product)
{
echo "<tr>
<td style ='border-bottom:1px solid #000000;'><a href='http://bctdigital.com/~student4/php/amazon_new.php?view_product=$id'>" . $product['title'] . "</a></td>
<td style ='border-bottom:1px solid #000000;'>$" . $product['price'] . " </td>
<td style ='border-bottom:1px solid #000000;'><a href='http://bctdigital.com/~student4/php/amazon_new.php?view_category=$title'>" . $product['category'] . "</td>
<td style ='border-bottom:1px solid #000000;'>" . $product['author'] . "</td>
</tr>";
}
echo"</table>";
}
这似乎工作正常,但是,弄清楚如何调用数组的一部分并显示它是我遇到问题的地方。
附上网址,这样你就可以看到我正在构建的东西(它是一个学校项目),出于某种原因,我可以找出所有其他更复杂的部分,以及什么不是。似乎是最困难的是什么给了我最大的麻烦!去搞清楚! 如果还有其他需要展示的内容,请告诉我,我没有表现出来。我在代码片段中加入了我认为&#34;排序功能应该去。 http://bctdigital.com/~student4/php/amazon_new.php
答案 0 :(得分:0)
要对阵列使用自定义排序,应使用usort功能。 对于类别排序,你最终会得到类似的东西:
usort($products, function cmp($a, $b) {
if ($a['category'] == $b['category']) {
return 0;
return ($a['category'] < $b['category']) ? -1 : 1;
});
答案 1 :(得分:0)
我会使用超全局$_GET
变量来确定类别。从那里开始,在循环遍历数组时将该变量用作条件测试。仅显示属于所选类别的结果。例如:
if (isset($_GET['view_category']) {
//store the category (e.g. what comes after ?view_category= in the URL)
$cat = $_GET['view_category'];
//loop through and use only those entries which match the category that was clicked
foreach ($products as $id => $product) {
if ($product['category'] == $cat) {
//display this entry and other details, etc.
}
else continue;
}
}
查看您的网站,您需要在“类别”标题下添加您的链接,以便在?view_category=
的另一侧添加其值,以便相应的条目显示在网址中,并可供{{1}使用}。
答案 2 :(得分:0)
您尚未在
之上的任何地方声明$ title<td style ='border-bottom:1px solid #000000;'><a href='http://bctdigital.com/~student4/php/amazon_new.php?view_category=$title'>" . $product['category'] . "</td>
我想,应该是
<td style ='border-bottom:1px solid #000000;'><a href='http://bctdigital.com/~student4/php/amazon_new.php?view_category=".$product['category']."'>" . $product['category'] . "</td>
此外,您需要添加:
if(isset($_GET['view_category']) && $_GET['view_category']!=''){
// here you have to pull data for the particular category and display it....
}
答案 3 :(得分:0)
有两种方法可以做到。
GET是全局变量,因此您可以使用$ _GET。
为此,您的链接必须是<td style ='border-bottom:1px solid #000000;'><a href='http://bctdigital.com/~student4/php/amazon_new.php?view_category=".$product['category']."'>" . $product['category'] . "</td>
然后你可以访问变量$ _GET ['view_category']。
这适用于任何类别。
使用ajax park你可以将类别作为param发送到你可以拥有这个逻辑的url
$products = array(
1 => array(
'category' => 'Computer Science',
'title' => 'Programming PHP',
'author' => 'Lerdorf',
'publisher' => 'O\'Reilly',
'price' => 29.99,
'isbn' => '1412359370'
),
2 => array(
'category' => 'Computer Science',
'title' => 'CGI Programming',
'author' => 'Guelich',
'publisher' => 'O\'Reilly',
'price' => 39.99,
'isbn' => '1772355179'
));
$category = $_GET['view_category'];
foreach ($products as $prodArray){
if($prodArray['category'] == $category){
//your display goes here
echo "Title: " . $prodArray['title'] . "<br>";
echo "Author: " . $prodArray['author'] . "<br>";
}
}