0

我仍在尝试了解 MVC 我有一个直接的 php/mysql 页面,该页面基本上通过获取 select * FROM table1 然后循环遍历结果集并在每个循环上运行 Join 以查找子项目信息来工作。

但我不知道如何将其拆分并在 MVC 中执行。

代码如下所示,任何帮助或正确方向的指针都会受到重视!

mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
$query="SELECT * FROM building";
$result=mysql_query($query);

$num=mysql_numrows($result);

$i=0;
while ($i < $num) {
    //for loop make a table
    //this is the heading info

    $b_id=mysql_result($result,$i,"id");
    $address=mysql_result($result,$i,"address");
    $description=mysql_result($result,$i,"description");

?>
    <table width="772px" border="0" align="center" cellpadding="5" cellspacing="0">
     <tr bgcolor="#4682B4" height="50">
      <td width="5%"></td>
      <td><font size="4" face="tahoma" color="white"><strong><? echo $address; ?><a href="http://localhost:8888/project-add.php?b_id=<? echo $b_id; ?>">Add Project</a></strong></font></td>
      <td bgcolor="#4682B4" align="center" width="50%"><input id="lnk<? echo $i; ?>" type="button" value="[+] Expand" onclick="toggle_visibility('tbl<? echo $i; ?>','lnk<? echo $i; ?>');"></td>
     </tr>
     <tr>
      <td colspan="3">
       <table width="103%" border="1" cellpadding="5" cellspacing="0" id="tbl<? echo $i; ?>" class="tbl">

        <?
        $query="SELECT project.id AS p_id, project.name AS p_name, project.description AS p_des, project.building_id as p_b_id, building.id AS b_id, building.address AS b_name
            FROM project JOIN building
            ON project.building_id = building.id
            WHERE building_id='$b_id'";
        $proj_result=mysql_query($query);
        $proj_num=mysql_numrows($proj_result);

        $j=0;
        while ($j < $proj_num) { //while 1

            $p_id=mysql_result($proj_result,$j,"p_id");
            $p_name=mysql_result($proj_result,$j,"p_name");
            $p_des=mysql_result($proj_result,$j,"p_des");
            $b_name=mysql_result($proj_result,$j,"b_name");


        ?>
        <tr>
         <td width="5%"></td>
         <td width="45%"><? echo $p_name; ?></td>
         <td width="50%" align="center">XXXXXXX</td>
        </tr>

        <?
            $j++;
        } //end while 1
        ?>
      </table>
      </td>
     </tr>
    </table>
    <?
    $i++;
}



mysql_close();
?>
4

2 回答 2

1

在现有代码库之上添加框架绝不是一件好事。尤其是如果您使用的是像 CodeIgniter 这样从根本上破坏的东西。

相反,您应该研究 OOP 以及这种范式的原则和法律。像SOLIDLoD这样的东西。

您应该研究的另一件事是放弃古老的mysql_*API。它不再维护。社区甚至已经开始推动deprecation ,这在文档中的红框中非常明显。建议开始使用PDOMySQLi。如果您选择 PDO,这里有很好的教程

接下来是:将 HTML 与应用程序逻辑分开。PHP 本身是一种很好的模板语言。好好利用它。这篇文章可能会有所帮助。

此外,关于 MVC 中的模型主题,您可能会发现此评论很有用。

于 2012-07-25T05:12:38.033 回答
0

好的,不知道人们是否会对我的解决方案大喊大叫,但这就是我最终这样做的方式:感谢所有回复

public function index()
{

    $data['building'] = $this->building_model->get_building();

    $this->load->view('templates/header', $data);

    foreach ($data['building'] as $building_item)
    {
            $data['address']  = $building_item['address'];
            $data['id']  = $building_item['id'];
            $this->load->view('building/tbl1', $data);
            $data['project'] = $this->building_model->get_project($building_item['id']);
            $this->load->view('building/tbl2', $data);
            $this->load->view('building/tbl3');             

    }

    $this->load->view('templates/footer');

}
于 2012-07-25T13:29:04.410 回答