Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 根据mysql的div生成一个循环_Php_Mysql - Fatal编程技术网

Php 根据mysql的div生成一个循环

Php 根据mysql的div生成一个循环,php,mysql,Php,Mysql,首先,如果标题令人困惑,很抱歉!我正在写博客的一部分,它决定了如何显示类别中最近的文章列表(有时由日期决定)。在数据库中,每个类别都有一个“类型”集,用于确定它所放入的div是小的还是大的 我可以得到要显示的结果,但是列表中的每个链接都有自己的div,而不是包含在一个“main”类别div中 简短解释: 数据库从categories表和posts表中提取结果,如查询中所示。然后循环运行,以便可以动态创建类别框及其链接。 问题在于,div应该包含一个链接列表,而不是环绕每个单独的链接,而不是所需的

首先,如果标题令人困惑,很抱歉!我正在写博客的一部分,它决定了如何显示类别中最近的文章列表(有时由日期决定)。在数据库中,每个类别都有一个“类型”集,用于确定它所放入的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>';
}