PHP& MySQL带有选项页面

时间:2012-03-04 18:31:06

标签: php mysql

最后完成了我网站的前端,我现在正在研究需要大修的后端编码,编码非常混乱,并且使用了太多的SQL连接和命令,以至于主机抱怨它。

我遇到的主要问题之一是“网站设置”页面,问题是这个页面很快会包含10多个不同的选项,我不想让MySQL更新只是将选项字段更新为已经存在的内容,所以我想知道是否有人有任何想法?

这是我的选项表的结构,很好很简单,我最近从糟糕的布局中改变了。

Table structure for options

编辑这些选项的最佳方法是什么,而不必更新每一个选项,以及在函数中使用它们的最佳方法是什么?目前,当我刚接触编码时,我所拥有的功能已经恢复,您可以看到它是非常无效的(注意它使用旧的表结构)

function site_upd($site_title, $site_email, $maint_status, $maint_mess, $upload_disable, $site_url, $reg_status, $land_mess)
{
    if( !$site_title ) 
    {       
        echo $this->errorMessage('There was no <b>site title</b> supplied, therefore we can not continue with this request.', 'error');
    } 

    else 
    {
        $this->logQuery('Updated site settings');
        $query = "UPDATE `table`.`settings` SET `site_title` = '".$site_title."', `site_email` = '".$site_email."', `maint_status` = '".$maint_status."', `maint_mess` = '".$maint_mess."', `upload_disable` = '".$upload_disable."', `site_url` = '".$site_url."', `registration_status` = '".$reg_status."', `landing_mess` = '".$land_mess."' WHERE `settings`.`sid` = '1'";
        mysql_query($query) or die(''.mysql_error()); } }

所以是的,有一个可怕的旧结构和旧的做事方式,在我开始编码之前,我想要其他人的意见是什么是最好的方法来做到这一点!

1 个答案:

答案 0 :(得分:2)

您可以使用$ _POST变量来简化更新方法。

这就是我通常做的事情:

首先,我创建一个非特定的函数来更新:

function update_db($table, $id,$idvalue,$field,$fieldvalue){
   return mysql_query("update ".$table." set ".$field."=".$fieldvalue." where ".$id."=".$idvalue);
}

然后我创建表的特定功能(配置即):

function update_table_config($name,$value){
   return update_db("config","name",$id,"value",$value);
}

在表单中,我将所有<input>称为表格中的名称:

Site Name: <input type="text" name="site_name">
...

并在“action”页面中检查$ _POST数组:

$data_array=$_POST;

if(check_variables($data_array)){
    foreach ($data_array as $key=>$value){
        update_table_config($key,$value);
    }
}

函数check_variables包含所有字段所需的所有检查:

function check_variables($data){
     if($data["site_title"]=="") return false;
     if(!is_numeric($data["landing_mess"])) return false;
     ...
     return true;
}

使用此方法如果将来您必须在配置表中包含更多字段,则只需添加<input>字段并在需要时选中check_variables函数