最后完成了我网站的前端,我现在正在研究需要大修的后端编码,编码非常混乱,并且使用了太多的SQL连接和命令,以至于主机抱怨它。
我遇到的主要问题之一是“网站设置”页面,问题是这个页面很快会包含10多个不同的选项,我不想让MySQL更新只是将选项字段更新为已经存在的内容,所以我想知道是否有人有任何想法?
这是我的选项表的结构,很好很简单,我最近从糟糕的布局中改变了。
编辑这些选项的最佳方法是什么,而不必更新每一个选项,以及在函数中使用它们的最佳方法是什么?目前,当我刚接触编码时,我所拥有的功能已经恢复,您可以看到它是非常无效的(注意它使用旧的表结构)
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()); } }
所以是的,有一个可怕的旧结构和旧的做事方式,在我开始编码之前,我想要其他人的意见是什么是最好的方法来做到这一点!
答案 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
函数