2010年1月18日 星期一

[PHP]只要欄位名稱同資料庫名稱時即可順利存入mysql(增加GET、REQUEST)

這次經過我們「敏捷開發」講師ERIC的指導之下。
更進一步的了解了「多型」、「超級繼承」以及「介面」、虛擬函式等等技術。
所以也同時開發出除了原本針對$_POST,又可以變更成$_GET或是$_REQUEST的做法。
用法:
如果是post的來源:
require("class.get_post_sql.php");
$postdata = new add_post("資料表名稱");
$postdata -> sql_save;

如果是get的來源:
require("class.get_post_sql.php");
$postdata = new add_get("資料表名稱");
$postdata -> sql_save;

如果有post和get的來源:
require("class.get_post_sql.php");
$postdata = new add_request("資料表名稱");
$postdata -> sql_save;

有其他的資料來源(以post為例)
require("class.get_post_sql.php");
$postdata = new add_post("資料表名稱");
$postdata -> add_text("資料欄位","值");
$postdata -> sql_save;

檔名:class.get_post_sql.php
interface add_interface{
  
  function add_text($add_field,$add_value);
  
  function sql_text();
  
  function sql_save();
  
  function dearray();
    
}

abstract class super_add implements add_interface{
   
  function __construct($table){
    $this->table = $table;
    $this->dearray();
  }  
    
  function add_text($add_field,$add_value){
    $this->field .= $add_field.",";
    $this->data .= "'".htmlentities($add_value,ENT_QUOTES,"utf-8")."',";
  }
  
  function sql_text(){
    $this->field = substr($this->field,0,strlen($this->field) -1);
    $this->data = substr($this->data,0,strlen($this->data) -1);
    return "INSERT INTO `".$this->table."` (".$this->field.") 
            VALUES (".$this->data.")";
  }
  
  function sql_save(){
    mysql_query($this->sql_text()) or die("NO SAVE");
  }  
}

class add_get extends super_add{

  function dearray(){
    foreach($_GET as $key => $value){
      if ($key != "submit" && $key != "MM_insert" && $key != "button") {
        $this->add_text($key,$value);
      }  
    }
  }
    
}

class add_post extends super_add{
 
  function dearray(){
    foreach($_POST as $key => $value){
      if ($key != "submit" && $key != "MM_insert" && $key != "button") {
        $this->add_text($key,$value);
      }  
    }
  }
 
}

class add_request extends super_add{
 
  function dearray(){
    foreach($_REQUEST as $key => $value){
      if ($key != "submit" && $key != "MM_insert" && $key != "button") {
        $this->add_text($key,$value);
      }  
    }
  }
 
}

1 則留言: