【问题标题】:boostrap collapse in while loop returns one resultwhile 循环中的 bootstrap 崩溃返回一个结果
【发布时间】:2018-04-07 08:21:10
【问题描述】:

我正在尝试按部分订购项目列表。章节编号和标题在一张表中,章节内容在另一张表中。在另一个while循环中使用一个while循环,我想获取部分名称和编号。在第二个 while 循环中,我想获取部分内容。部分内容有一个名为部分编号的列,我将其传递给查询以获得适当部分的正确内容。我的问题是我只得到第一部分,第一部分只有一个内容。结果应该是第 1 节下的 5 个内容和第 2 节下的 6 个内容。我已经看到使用数组的类似问题和解决方案,但由于我还是个新手,我无法让它为我工作。

这是我的查询:

$host   = 'localhost';
$dbname = 'myDB';
$username = "root";
$password = "";
$pdo = new PDO('mysql:dbname=myDB;host=localhost', $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$i = 0;
$j= 0;
$cId = $_GET['cId'];

$z_content = $pdo->prepare("SELECT * FROM `cur_sections` WHERE `course_id` ='$cId'");
$z_content->execute();

while($obj = $z_content->fetch())
{
    $section_no = $obj['sect_num'];
    $section_name = $obj['section_name'];
    $i++;

    echo '<div style="padding-bottom: 10px;">
    <a   data-toggle="collapse" href="#demo'.$i.'" ><div 
    class="section_bck">
    Section '.$section_no.': <b>'.$section_name.'</b>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp<i class="fa fa-chevron-down" style="float:right;"></i></div></a>
    </div>';

    $p_content = $pdo->prepare("SELECT * FROM `course_material` WHERE `sect_num` ='$section_no' AND course_id='$cId'");
    $p_content->execute();

    while($obj2 = $p_content->fetch())
    {
        $j++;
        $lecture_title = $obj2['lecture_title'];
        $type_f = $obj2['file_type'];

        echo '
        <div id="demo'.$i.'" class ="collapse">
            <div style="padding-bottom: 10px;">
                <div class="section_bck_alt">
                    <i class="fa fa-'.$type_f.'"></i>&nbsp&nbspLecture '.$j.': '.$lecture_title.'
                </div>
            </div>
        </div>';
    }
}

更新: $cId 的值是 3,我从页面 url 获得。 数据库结构

表 1:

表 2:

我刚刚找到了问题的原因。 Bootstrap 崩溃以某种方式隐藏了我的其余查询结果。即使我使用增量值来更改 div ID。当我从循环中删除 div collapse 时,所有结果都会返回,除了我不能再隐藏内容的事实。

【问题讨论】:

  • 是不是因为你在你的第二个 SQL - `sect_num` ='1' AND
  • 我这样做是为了测试查询,我已将其改回$section_no,但结果相同
  • 请分享数据库截图,让我知道 $cid 的价值...所以我可以帮助你。
  • @TanmayPatel 谢谢,我已将信息添加到我的问题中
  • SQL 注入警报。不要将 $_GET 传递给 SQL。使用准备好的语句和位置参数。

标签: php html mysql twitter-bootstrap


【解决方案1】:

您确定从正确的数据库中读取数据吗?因为你定义了变量但从不使用它们:

$host   = 'localhost';
$dbname = 'myDB';
....
$pdo = new PDO('mysql:dbname=myDB;host=localhost', $username, $password);

并使用准备但将参数传递给执行:https://secure.php.net/manual/en/pdostatement.execute.php

【讨论】:

    猜你喜欢
    • 2013-12-18
    • 2021-09-24
    • 2013-10-27
    • 1970-01-01
    • 2016-07-22
    • 2019-06-07
    • 1970-01-01
    • 1970-01-01
    • 2022-11-30
    相关资源
    最近更新 更多