Php 良好编码实践

Php 良好编码实践,php,mysql,html,coding-style,Php,Mysql,Html,Coding Style,我将于今年6月毕业,因此在此之前,我想为在该行业工作做好准备: My Question: 例如,我想使用列表框列出表中的所有歌曲,我就是这样实现的: playlist.php <tr id='' > <td width="" class="">&nbsp;&nbsp;<font color=#00000 />Select Songs</td> <td width="" colspan=""> <select

我将于今年6月毕业,因此在此之前,我想为在该行业工作做好准备:

My Question:
例如,我想使用列表框列出表中的所有歌曲,我就是这样实现的:

playlist.php

<tr id='' >
<td  width="" class="">&nbsp;&nbsp;<font color=#00000 />Select Songs</td>
<td width="" colspan="">
<select size='25'multiple='multiple' id="select_songs" name="playlist_songs[]">
<?php
display_songs_list();
?>
</select></td>
</tr>

是否建议采用这种实施方式。我还可以做些什么来提高可伸缩性/可维护性/可重用性。请在这方面指导我。是否建议遵循任何行业编码标准,如果是,请选择您喜欢的标准。谢谢。

恕我直言,但首先,您应该真正将与数据库对话的代码与给出用户错误的代码分开,它们是两件不同的事情。因此,如何在php中实现这一点的想法可能是一个函数,该函数查询数据库并返回一个关联数组,其中包含另一个函数随后打印的所有结果。此外,您应该有一个更通用的数据库类,所有查询都要经过这个类。这是首选的原因,因为您可以在稍后的时间点轻松地切换数据库,只需对代码进行最小的更改,但是如果在每个函数中调用mysql\u query,它可能会变得更复杂

内联样式属性color=00000已弃用,可杀死小猫。了解CSS。 除了表格数据之外,不鼓励使用表格。想想电子表格,用CSS来代替布局。 使用硬编码空格也不可取如果它没有任何意义,请学习使用CSS添加空格。 从同一函数中回显HTML或Javascript是不好的。Javascript警报将在调用函数时导致无效的HTML语法。 将数据库调用和HTML紧密地混合在一起是不好的。查看MVC分离。 在半成品页面中间向用户输出一个随机的、毫无意义的JavaScript警告是不正确的。您应该显示一个专用的错误页面。请参阅MVC,它可以帮助您实现这一点。 为属性混合单引号和双引号是不一致的,并且使代码更难阅读。请坚持使用一种引号。 标记中没有显示提交所选选择选项的表单
对于php来说,这是一个相当好的方法

我通常将代码拆分为模型/视图/控制器类型的模型

控制器是当URL到达服务器时运行的程序。它:-

从屏幕抓取并检查任何get/POST变量。 启动任何请求的操作,例如数据库更新。 启动一些模型函数以获取下一屏幕的数据。 使用一个或多个查看功能格式化下一屏幕。 注意控制器本身不发出任何html

模型函数负责数据库访问和应用业务规则

视图函数发出html标记等


除了一般的整洁性之外,这种方法的最大优点是处理顺序与字段在屏幕上的显示顺序无关。因此,它确实使程序更易于维护。

首先,您可以尝试将数据操作与视图分离,这样您就可以使用playlist.php查询数据库并生成需要显示的条目的数组/stdClass对象,构建阵列后,您测试阵列中是否有足够的入口,例如超过0个入口,然后调用include playlist_view.php,如果没有任何基于查询的入口,您可以使用error.php视图或任何类似视图。也可以作为另一个开始,我真的希望您在布局中没有继续使用表当表按预期的方式使用时,也就是显示表格数据时,表没有问题!非常感谢。你推荐什么书或网站来深入了解MVC,因为我以前从未尝试过。这些天来,我都不太重视CSS,认为它对设计人员来说很重要,但现在它似乎非常重要。@Mahin我建议您使用PHP框架。这可能会让你陷入困境,因为它通常也意味着学习OOP,但当你完成它时,它是值得的。例如,请参阅Zend、CakePHP或CodeIgniter。非常感谢。您是否推荐任何书籍或网站来深入了解MVC,因为我以前从未尝试过。使用Zend Framework,现在越来越多的公司正在使用它进行开发,这意味着如果您了解它,您将有更好的机会找到工作。
function display_songs_list(){
    $query = "select * from songs order by ID asc";

    $result = mysql_query($query);
    if(!$result)
    echo "<script language = 'javascript'>alert('$result Sorry couldn't connect to the database...');</script>";
    else{
        $num_rows = mysql_num_rows($result);
        if($num_rows > 0){
            while($row = mysql_fetch_array($result)){
                $ID = $row['ID'];
                $title = $row['title'];
                $value = $ID.'_'.$title;
                echo "<option id=\"$ID\" value=\"$value\">$ID : $title</option>";
            }
        }
    }
}