我是这里的新手,也是php的新手。我虽然不是stackoverflow的新手:)
我正在创建一个简单的报告系统,我希望从数据库生成菜单和页面。
我看到this video on YouTube并设法使用以下代码创建菜单。
我有一个名为Reports
的数据库表,其列名为rep_id
,rep_date
,rep_ledit_date
,rep_by
,department
,{{1 },position
和report
。
基于上述方法,我使用此代码创建了一个菜单。
rep_to
因此,我创建了一个名为<?php
require ("includes/db.php");
mysqli_select_db($con, '$db_name');
$sql = "SELECT * FROM reports";
$result = mysqli_query($con, $sql) or die (mysqli_error($con));
$represult=mysqli_fetch_assoc($result);
$rep_by=$represult['rep_by'];
$report=$represult['report'];
?>
<li> Menu
<ul>
<?php do
{
?>
<li><a href="reports.php?rep_id=<?php echo $represult['rep_id']; ?>"> <?php echo $represult['rep_by'] . " (" . $represult['rep_date'] . ")"; ?></a></li>
<?php
} while ($represult=mysqli_fetch_assoc($result));
//$represult['rep_by'];
//$represult['report'];
//$represult['report'] ;
?>
</ul>
</li>
的页面,以查看数据库中内容的详细信息。我想要的是看到以下 rep_by(rep_date)作为标题并作为内容报告。
我可能也希望在内容中使用其他列。那么菜单和reports.php
应该有什么样的代码来实现我想要的。我所做的是以下内容,它只在单击所有菜单链接时输出第一行。
reports.php
答案 0 :(得分:1)
report.php:
<?php
require ('includes/db.php');
mysqli_select_db($con, $db_name);
$sql= 'SELECT * FROM Reports WHERE rep_id = ?';
$stmt = $con->prepare($sql);
$id = $_GET['rep_id'];
$stmt->bind_param('i', $id);
$stmt->execute();
$stmt->bind_result($rep_id, $rep_date, $rep_ledit_date, $rep_by, $department, $position, $report, $rep_to);
$stmt->fetch();
?>
<h1><?php echo "$rep_by ($rep_date)"; ?></h1>
<?php echo $report; ?>
reports.php(稍微调整一下)
<?php
require ('includes/db.php');
mysqli_select_db($con, $db_name);
$sql = 'SELECT * FROM Reports';
$stmt = $con->prepare($sql);
$stmt->execute();
$stmt->bind_result($rep_id, $rep_date, $rep_ledit_date, $rep_by, $department, $position, $report, $rep_to);
?>
Menu
<ul>
<?php while ($stmt->fetch()) { ?>
<li><a href="report.php?rep_id=<?php echo $rep_id; ?>"> <?php echo "$rep_by ($rep_date)"; ?></a></li>
<?php } ?>
</ul>
答案 1 :(得分:0)
由于PHP标记和HTML的混合,您的代码有点令人困惑所以我将其重新编写为100%PHP。
require ("includes/db.php");
mysqli_select_db($con, '$db_name');
$sql = "SELECT * FROM reports";
$result = mysqli_query($con, $sql) or die (mysqli_error($con));
echo '<li>'
. '<ul>'
;
while ($represult = mysqli_fetch_assoc($result)) {
echo '<li>'
. '<a href="reports.php?rep_id=' . $represult['rep_id'] . '">'
. $represult['rep_by']
. ' (' . $represult['rep_date'] . ')'
. '</a>'
. '</li>'
;
}
echo '</ul>'
. '</li>'
;
我在原始代码中看到的主要问题是您正在进行两次此调用:
$represult=mysqli_fetch_assoc($result);
一个在$result = mysqli_query(…)
附近,另一个在do
/ while
循环的尾端。此外,不确定do
/ while
循环的值,因此我将其重构为简单的while
循环。最后,重组为100%PHP,我做了一些格式化的连接,使其更容易阅读&amp;看看整体逻辑的结构。
编辑:原始海报添加了额外的代码,说问题是它只返回第一个结果。问题 - 再次是缺少while
循环。这是我重构的代码版本:
require ("includes/db.php");
mysqli_select_db($con, '$db_name');
$sql= "SELECT * FROM reports";
$result = mysqli_query($con, $sql) or die (mysqli_error($con));
while ($represult = mysqli_fetch_assoc($result)) {
echo '<h1>'
. $represult['rep_by']
. ' ('
. $represult['rep_date']
. ')'
. '</h1>'
. $represult['report']
;
}