【问题标题】:Replace the "values" of the foreign key using codeigniter使用 codeigniter 替换外键的“值”
【发布时间】:2017-04-06 21:29:20
【问题描述】:

我制作了一个获取 2 个表的值的程序。我的意思是我的程序 只获取表的“id”(外键),但它没有显示对应的值编号。

我的桌子:

“cursadas”包括:(id,user_id[是表“usuarios”的列“id”的外键],subject_id[是表“id”列的外键”材料”]、等级、日期)

“usuarios”包括:(id、用户名、姓名、姓氏、密码、类型、状态、日期)

“材料”包括:(id、career_id、姓名、描述、小时数)

看一下,我的程序显示了这个表:

我的目标是展示这张桌子(绿色的):

不知道该怎么做,这是我的代码:

我的视图文件(“home”):

    <html>

    <head>



    </head>

<body>

    <div class="container"> 
    <div class="row">
    <div class="col-md-12">

        <h2 align="center">TABLE:Study</h2>

        <input id="busqueda_tabla" type="text">
            <table class="table table-hover" align="center" border="1" cellspacing="0" cellpadding="0" width="700" id="tabla_busqueda">
                <thead>
                    <th>id</th>
                    <th>User</th>
                    <th>Subject</th>
                    <th>Grade</th>
                    <th>Date</th>
                    <th>Action</th>
                </thead>

<tbody>
    <?php

    if (count($records) > 0 && $records != false) {
        foreach($records as $record) {

            echo "<tr>
                      <td>".$record['id']."</td>
                      <td>".$record['user_id']."</td>
                      <td>".$record['subject_id']."</td>
                      <td>".$record['grade']."</td>
                      <td>".$record['date']."</td>
                      <td align='center'>

                         <button type='button' class='btn btn-primary'>EDIT</button></a> |

                         <button type='button' class='btn btn-danger'>DELETE</button></a>

                  </tr>";
        }

       }
    ?>

</tbody>

    </table>

        </div>
        </div>
        </div>

</body>
</html>

我的控制器文件(“主页”)

    <?php

    class Home extends CI_Controller{

         public function __construct(){
             parent::__construct();

             $this->load->model("Crudmodel");

        }


 public function index(){

    # get all data in Study table
    $selectStudys = $this->Crudmodel->selectStudys();


    foreach ($selectStudys as $key => $study) 
    {
        # get UserNames
        $user = $this->Crudmodel->getName($study['user_id']);

        #get Subject Names
        $subject = $this->Crudmodel->getSubName($study['subject_id']);


        #append both NEW VALUES to same array

        if(!empty($user[0]['username'])){
        $data[$key]['user_id'] = $user[0]['username'];

        }else{
         $data[$key]['user_id'] = ''; // or anything as your else condition you can use as error handler 
        }
        if(!empty($subject[0]['name'])){
        $data[$key]['subject_id'] = $subject[0]['name'];

        }else{
           $data[$key]["subject_id"] = "";
          // or anything you can use as error handler
        }

    }


    $data['records'] = $selectStudys;
    $this->load->view('home', $data);

}

}
?>

我的模型文件:

       <?php

    class Crudmodel extends CI_Model{

        public function __construct(){
         parent::__construct();

         $this->load->database();

        }


function selectStudys()
{
    $query= $this->db->query("SELECT * FROM cursadas");
    if($query->num_rows()>0){
       $result = $query->result_array();
     }else{
      $result = array();
    }
    return $result;
}

function getName($name)
{
    $query= $this->db->query("SELECT username FROM usuarios WHERE id = $name ");
    if($query->num_rows()>0){
    $result = $query->result_array();
    }else{
    $result = "";
    }
          // or anything you can use as error handler
    return $result;
  }


function getSubName($subject)
{
    $query= $this->db->query("SELECT name FROM materias WHERE id = $subject ");
  if($query->num_rows()>0){
     $result = $query->result_array();
  }else{
      $result = "";
          // or anything you can use as error handler
  }
      return $result;
}


 function CombineResults($subject, $name){
  // you can also use this
   $query = $this->db->query("SELECT sub.name, user.username FROM materias sub, Users user WHERE sub.id=$subject AND user.id = $name");
   if($query->num_rows()>0){
        return $query->result();
         }else{
           return array();
              // or anything you can use as error handler
        }
    }       
  }
    ?>

【问题讨论】:

    标签: php codeigniter fetch


    【解决方案1】:

    我在想你为什么要使用这么长的脚本,你可以简单地使用 MySQL Join 来完成。

    这里是查询

    SELECT a.id ID,b.username User, c.name, a.grade, a.date
    FROM cursadas a 
    JOIN usuarios b ON a.user_id=b.id 
    JOIN materias c ON c.id=a.subject_id
    

    这里是 SQLFIDDLE 的链接。 Click Here

    型号代码:

    function your_function_name()
    {
        $result = NULL;
        $query=$this->db->query('SELECT a.id ID,b.username User, c.name, a.grade, a.date FROM cursadas a JOIN usuarios b ON a.user_id=b.id JOIN materias c ON c.id=a.subject_id');
         if($query->num_rows()>0){
            $result = $query->result_array();
          }
        return $result;
    }
    

    控制器代码:

    function your_controller_function()
    {
      $this->load->model('your_model');
      $data['records'] = $this->your_model->your_function_name();
      $this->load->view('home', $data);
    }
    

    查看代码:

    <table>
    <tr><th>ID</th><th>User</th><th>Subject</th><th>Grade</th><th>Date</th><th>Action</th></tr>
    <?php
    if($records)
    {
      foreach($records as $rc)
      {
       <tr><td><?php echo $c->id;?></td>
       <td><?php echo $c->username;?></td>
       <td><?php echo $c->name;?></td>
       <td><?php echo $c->grade;?></td>
       <td><?php echo $c->date;?></td>
       <td><a href="#">Edit</a><a href="#">Delete</a></td></tr>
       }
    }
    ?>
    </table>
    

    【讨论】:

    猜你喜欢
    • 2016-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多