Php 根据mysql的div生成一个循环
首先,如果标题令人困惑,很抱歉!我正在写博客的一部分,它决定了如何显示类别中最近的文章列表(有时由日期决定)。在数据库中,每个类别都有一个“类型”集,用于确定它所放入的div是小的还是大的 我可以得到要显示的结果,但是列表中的每个链接都有自己的div,而不是包含在一个“main”类别div中 简短解释: 数据库从categories表和posts表中提取结果,如查询中所示。然后循环运行,以便可以动态创建类别框及其链接。 问题在于,div应该包含一个链接列表,而不是环绕每个单独的链接,而不是所需的集合 虽然下面的代码只显示了两个“类型”,但我计划在将来添加更多 这是密码Php 根据mysql的div生成一个循环,php,mysql,Php,Mysql,首先,如果标题令人困惑,很抱歉!我正在写博客的一部分,它决定了如何显示类别中最近的文章列表(有时由日期决定)。在数据库中,每个类别都有一个“类型”集,用于确定它所放入的div是小的还是大的 我可以得到要显示的结果,但是列表中的每个链接都有自己的div,而不是包含在一个“main”类别div中 简短解释: 数据库从categories表和posts表中提取结果,如查询中所示。然后循环运行,以便可以动态创建类别框及其链接。 问题在于,div应该包含一个链接列表,而不是环绕每个单独的链接,而不是所需的
<?
require("classes/Database.class.php");
$db = new Database(DB_SERVER, DB_USER, DB_PASS, DB_DATABASE);
$time = $_REQUEST['time'];
$db->connect();
$sql = "SELECT
cm.id,
cm.title AS cmtitle,
cm.sectionid,
cm.type AS cmtype,
cd.id,
cd.time,
cd.link,
cd.title,
cd.description,
cd.sectionid AS sectionid
FROM c_main AS cm
JOIN c_data AS cd ON cd.sectionid=cm.sectionid
WHERE cd.sectionid=cm.sectionid AND time = '".$time."' ORDER by id ASC";
$rows = $db->query($sql);
while($record = $db->fetch_array($rows)){
//determine what div to use by checking "type"
if ($record['cmtype'] == 'large') {
?>
<div class="large" >
<?
} elseif ($record['cmtype'] == 'small') {
?>
<div class="small">
<?
}
for($x =0; $x <= $db->affected_rows; ++$x)
{
if ($record['cmtype'] == 'small') {
echo $record['title'].'<br/>';
} else {
echo $record['title'].'<br/>'.$record['description'];
}
break;
}
echo '</div>';
}
$db->close();
?>
而不是这个(它是如何输出的)
这是我目前使用的mysql包装器,如果这有任何意义的话也许我完全错了,但是如果你想显示按类型分组的元素,我认为你应该直接按类型排序,这样当你开始输出HTML代码时,元素的顺序是正确的?如果你只需要2个div,一个大一个小,您应该按cmtype进行排序,然后仅当类型更改或是第一种类型时才需要创建div。如果您确定表内容,您可以使用: echo "<div class='" . $record['cmtype'] . "'>";
回声“ 也许我理解您的问题是错误的,但是您尝试在一个DIV中添加所有相关链接,然后检查php结果html(浏览器->查看源代码)您的代码将为每一行回显一个DIV,这就是您的问题/问题 我的建议是创建两个查询:一个查询选择类型A的所有链接,另一个查询选择类型B的所有链接(
WHERE type='…'
)
然后,您必须打印第一个div的起始标记:
echo '<div class="large">';
我想这就是你首先想要实现的目标我是一个php新手,所以我希望你不介意我要求澄清一下。基本上我指的是和Clash一样的东西。如果希望每个类别有一个div,则应按SQL对结果进行排序。然后遍历结果,仅当cmtype更改时才创建新的div。即使您添加了新的类别,这也很好。根据第一个建议,如果我添加更多类型的div呢?理想情况下,我会这么做。在第二部电影中,女主角们看起来仍然很怪异。它们似乎都合并在一个div中。第一个建议是,您必须为每种类型的div创建一个新查询。对于后者…我忘记关闭div,根据编辑我的答案,div现在只显示每种类型的第一个结果。添加了另一个循环,可能仍然不完美,但这是一个很好的基础,我相信你可以通过一点思考来解决剩下的问题。谢谢,经过一点修改,真正做到了。我打算添加更多类型的div,那么这仍然是一个解决方案吗? echo "<div class='" . $record['cmtype'] . "'>";
echo '<div class="large">';
while(($record = $db->fetch_assoc($rows)) !== FALSE){
echo htmlspecialchars($record['title']),'<br/>';
}
echo '</div>';
$currenttype = '';
while(($record = $db->fetch_assoc($rows)) !== FALSE) {
$currenttype = $record['cmtype'];
echo '<div class="',htmlspecialchars($record['cmtype']),'">';
while($record['cmtype'] == $currenttype
&& ($record = $db->fetch_assoc($rows)) !== FALSE) {
// output link according to your type:
echo htmlspecialchars($record['title']);
}
echo '</div>';
}