你如何使用显示表中的数据两个笨连接表[关闭]

问题描述 投票:1回答:1

你如何使用显示表中的数据两个笨连接表

我想在表视图中显示学生表和父表中的数据。我已经使用了父ID为两个表的外键。

我用这个代码,但它不能正常工作。

这是我的模型

function fetch_data()
{
    $sql = "SELECT * FROM student As st LEFT JOIN parent As pt ON st.p_id =pt.p_id";

    $query = $this->db->query($sql);
    if($query->num_rows() > 0) 
    {
        return $query->result();


    }else{
        return false;
    }

}

这是我的控制器

function index()
{
    $this->load->model('Tableview_model');


    $student_data= $this->Tableview_model->fetch_data();
    $data["student_data"]  =  $student_data;

    $parent_data=$this->Tableview_model->fetch_data();
    $data["parent_data"]  =  $parent_data;

    $this->load->view('register_students', $data);


}

这是视图

    <tbody>
        <?php
        if( !empty($student_data && $parent_data ) ) 
        {
        foreach ($student_data AS $student) {


        ?>
        <tr>
            <td><?php echo $student->student_code; ?></td>
            <td><?php echo $student->f_name; ?> <?php echo $student->l_name; ?></td>
            <td><?php echo $student->tel; ?></td>

            <?php
            }

        ?>
            <td></td>

            <?php
            foreach ($parent_data AS $parent) {
            ?>
            <td><?php echo $parent->f_name; ?> <?php echo $parent->l_name; ?></td>
            <?php
            }

             ?>
        </tr>
        <?php 

            }
        ?>

    </tbody>

enter image description here

但输出是错误的,我得到父母的名字和学生F名称和L名姓氏。和父场犯规正确显示

php sql codeigniter join html-table
1个回答
1
投票

不知道,你已经在使用JOIN两个表你为什么夹板数据转换成2个不同的阵列和循环,就可以实现你的目标为:

<?php
foreach ($student_data AS $student) {
?>
<tr>
<td><?php echo $student->student_code; ?></td>
<td><?php echo $student->f_name; ?> <?php echo $student->l_name; ?></td>
<td><?php echo $student->tel; ?></td>
<td><?php echo $student->tel; ?></td>
<?php
if(isset($student->f_name) && isset($student->l_name)){ // using isset() because of LEFT JOIN
?>
<td><?php echo $student->f_name; ?> <?php echo $student->l_name; ?></td>
<?php
}
?>

您已经获得从您的查询这里的所有信息:

$data["student_data"]  =  $student_data;

所以,没有必要运行两次查询,当您在您的查询中使用JOIN。这是不必要的:

$parent_data=$this->Tableview_model->fetch_data();
$data["parent_data"]  =  $parent_data;

在发行代码/说明:

使用qazxsw POI IST qazxsw POI,它会重复,直到qazxsw POI结束。但使用foreach()第二<tr>,它会重复,直到foreach结束,这将增加foreach()<td>

我简单的话,你在重复列不列,如果你使用你的循环一次,这个问题将得到解决。

边注:代替原始查询的,你需要使用foreach。就像是:

<td>
© www.soinside.com 2019 - 2024. All rights reserved.