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

我遇到的主要问题之一是“网站设置”页面,问题是此页面很快将包含10多个不同的选项,而我不希望只通过将选项字段更新为已经存在的MySQL Update来进行更新,所以我想知道如果有人有什么想法?

这是我的选项表的结构,简洁而又好用,我最近从一个糟糕的布局中更改了它。



在无需更新每个选项的情况下编辑这些选项的最佳方法是什么?将其置于功能中的最佳方法是什么?目前,我刚接触编码时就已经拥有了该函数,您会发现它是非常无效的(请注意,它使用的是旧表结构)

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()); } }


是的,在我陷入编码之前,这里有一个糟糕的旧结构和我的旧做事方式,我希望其他人对实现此目标的最佳方式有意见!

最佳答案

您可以使用$ _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">
...


并在“操作”页面中检查$ _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功能

关于php - 带有选项页面的PHP和MySQL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9557655/

10-12 00:14
查看更多