终于完成了我网站的前端,现在我正在对需要进行大修的后端进行编码,该编码非常混乱,并且使用了太多的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/