while循环中的boostrap崩溃返回一个结果

时间:2018-04-07 08:21:10

标签: php html mysql twitter-bootstrap

我正在尝试按部分排序项目列表。部分编号和标题在一个表上,部分内容在另一个表上。在另一个while循环中使用while循环,我想获得节名称和数字。在第二个while循环中,我想获得部分内容。部分内容有一个名为section number的列,我将其传递给查询以获取相应部分的正确内容。我的问题是我只获得第一部分而第一部分只有一个内容。结果应该是第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数据库结构

表1:

Table 1

表2:

Table 2

我刚刚发现了问题的原因。 Bootstrap崩溃以某种方式隐藏了我的查询结果的其余部分。即使我使用增量值来更改div ID。当我从循环中删除div折叠时,将返回所有结果,除了我无法再隐藏内容这一事实。

1 个答案:

答案 0 :(得分:0)

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

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

并使用prepare但将params传递给执行:https://secure.php.net/manual/en/pdostatement.execute.php