我正在尝试从MySQL数据库中显示$ url值,但我只能正确显示$ cat值,有人可以帮我学习如何显示$ url值。
我现在做错了。
这是部分代码。
// Loop through each subarray:
foreach ($parent as $id => $cat) {
// Display the item:
echo '<li><a href="http:' . $url . '" title="">' . $cat . '</a>';
这是完整的代码。
<?php
require_once ('./mysqli_connect.php'); // Connect to the db.
// Receives one argument: an array.
function make_list ($parent) {
// Need the main $link array:
global $link;
// Start an ordered list:
echo '<ol>';
// Loop through each subarray:
foreach ($parent as $id => $cat) {
// Display the item:
echo '<li><a href="http://' . $url . '" title="">' . $cat . '</a>';
// Check for sublink:
if (isset($link[$id])) {
// Call this function:
make_list($link[$id]);
}
// Complete the list item:
echo '</li>';
} // End of FOREACH loop.
// Close the ordered list:
echo '</ol>';
} // End of make_list() function.
// Connect to the database:
$mysqli = new mysqli("localhost", "root", "", "sitename");
$dbc = mysqli_query($mysqli,"SELECT * FROM categories ORDER BY parent_id, category ASC");
if (!$dbc) {
// There was an error...do something about it here...
print mysqli_error();
}
// Initialize the storage array:
$link = array();
while (list($id, $parent_id, $category) = mysqli_fetch_array($dbc, MYSQLI_NUM)) {
// Add to the array:
$link[$parent_id][$id] = $category;
}
make_list($link[0]);
mysqli_close($mysqli); // close the connection
?>
答案 0 :(得分:3)
$ url甚至不在图片中......看起来你正在迭代一个与MySQL结果分开的数组。你需要更像的东西:
foreach ($res as $row) {
echo '<li><a href="http:' . $row['url'] . '" title="">' . $row['cat'] . '</a>';
}
希望这有帮助。
编辑:
首先,$ url需要与列表中的其他变量一起分配() - 因为您在查询中执行SELECT *,您可能需要指定列,以便在分配中顺序正确。< / p>
然后,无法使用您正在使用的数组结构包含另一个变量...
$link[$parent_id][$id] = $category;
必须是这样的:
$link[$parent_id][$id] = array('category' => $category, 'url' => $url);
然后,迭代数组需要更改为:
foreach ($parent as $id => $ary) {
// Display the item:
echo '<li><a href="http:' . $ary['url'] . '" title="">' . $ary['category'] . '</a>';
}
答案 1 :(得分:1)
根据您提供的代码,您不会从$ parent声明$ url。您是否有机会提供存储在$ parent中的内容?
首先是第一件事!
您需要从mysqli_fetch_array调用中获取类似于此的URL(我假设url是表中的列名)
while ($row = mysqli_fetch_array($dbc, MYSQLI_NUM)) {
$id = $row['id'];
$parent_id = $row['parent_id'];
$cat = $row['category'];
$url = $row['url'];
// Add to the array:
$link[$parent_id][$id] = array('cat' => $cat, 'url' => $url);
}
然后改变你的foreach循环以提取适当的类别和网址
foreach ($parent as $id => $category_array) {
// Display the item:
echo '<li><a href="http://' . $category_array['url'] . '" title="">' . $category_array['cat'] . '</a>';