PDA

View Full Version : Help module viết bằng class trong php !



hoanghbc
22-01-2011, 09:59
Chào mọi người em đang làm đồ án của lớp ! thấy giáo bắt lập trình hướng đối tượng em đang gặp vấn đề viết class cho phần "tin tức" mọi người cho em xin một module viết bằng class em cảm ơn rất nhiều !

tungoso
22-01-2011, 10:15
Bạn hình dung thế này cho đơn giản nè, ví dụ với phần tin tức thì có 2 hàm, 1 hàm showAll() để show ra tất cả các tin (gồm tiêu đề và phần mô ta ngắn), và 1 hàm viewDetail(newId) là để xem chi tiết 1 tin. Ý tưởng là vậy, còn trong 2 hàm đó bạn code bình thường.

thuyduongcd
22-01-2011, 10:25
http://phpclasses.org

hoanghbc
22-01-2011, 11:09
Em vẫn chưa hình dung ra được mong các bác chỉ rõ cho em một doạn code demo nhé hộ em nhé !
Em chưa hiểu là kết nối dữ liêu để trong class hay tác ra riêng nếu để trong class thì các viết như thế nào !

diepnghitinh
22-01-2011, 13:42
đây là một lớp connect CSDL đơn giản :dontgetit



Class Mysql
{

var $link_id;
var $result = array();

public function connect($db_host, $db_username, $db_password, $db_name)
{
$this->link_id = mysql_pconnect($db_host, $db_username, $db_password);
if ($this->link_id)
{
if (mysql_select_db($db_name, $this->link_id)) {
return $this->link_id;
} else {
$this->show_error('<b>Lỗi MYSQL:</b> ','Không thể kết nối CSDL: '.mysql_error());
}
}
else $this->show_error('<b>Lỗi MYSQL:</b> ','Không thể truy vấn CSDL: '.mysql_error());
}

//tạo query dữ liệu
public function query($input)
{
$query=mysql_query($input) or $this->show_error("<b>Lỗi MySQL Query</b> : ",mysql_error());
$this->result[] = $query;
return $query;
}

//giải phóng resource
public function free_result($query)
{
if ( is_resource($query) )
{
mysql_free_result($query) or $this->show_error("<b>Lỗi Result MySQL</b> : ",mysql_error());
}
}

public function get_column($table,$sql,$column)
{
$q = $this->query("SELECT * FROM $table $sql");
$r = $this->fetch_assoc($q);
return $r[$column];
}

//fetch_array 1 table
public function fetch_array($query_id, $type=MYSQL_BOTH){
$fa = mysql_fetch_array($query_id,$type);
return $fa;
}

//fetch_assoc 1 table
public function fetch_assoc($query_id, $type=MYSQL_BOTH){
$fa = mysql_fetch_assoc($query_id);
return $fa;
}

//trả về mysql_num_rows
public function num_rows($query_id) {
$nr = mysql_num_rows($query_id);
return $nr;
}

//giải phóng bộ nhớ
public function result($query_id, $row=0, $field) {
$r = mysql_result($query_id, $row, $field);
return $r;
}

//trả về danh sách table trong database
public function list_table(){
return mysql_list_tables($this->db_name);
}

//các table name
public function tablename($q,$i){
return mysql_tablename($q,$i);
}

//lọc dữ liệu an toàn
public function escape_string($string){
if (get_magic_quotes_gpc()) {
$string = stripslashes($string);
}
return mysql_real_escape_string(trim($string));
}

//disconnect với database
public function dis(){
$this->free_result();
return mysql_close($this->link_id);
}

public function show_error($string,$input){
if (!$_SESSION['sql_error'])
{
$_SESSION['sql_error'] = time();
$fp = fopen(PATH_BASE.DS.'log.txt', 'ab');
fwrite($fp, '<font color="#FF0000">Error</font>: '.$input."\r\nFile: ".$_SERVER['REQUEST_URI']."\r\nIP: ".$_SERVER['REMOTE_ADDR']."\r\n");
fclose($fp);
}

if (isset($_SESSION['sql_error']) && (time()-$_SESSION['sql_error']) >= 5)
{
$fp = fopen(PATH_BASE.DS.'log.txt', 'ab');
fwrite($fp, '<font color="#FF0000">Error</font>: '.$input."\r\nFile: ".$_SERVER['REQUEST_URI']."\r\nIP: ".$_SERVER['REMOTE_ADDR']."\r\n");
fclose($fp);
unset($_SESSION['sql_error']);
}
echo '<html><head>
<style>
@charset "utf-8";
/* CSS Document */
*{
margin: 0px;
padding: 0px;
}
body {
margin:auto;
font-size: 12px; color: #000000; FONT-FAMILY: Verdana, Tahoma, Arial;
}
</style>
</head><body>';
echo '<div style="float: left;text-align:center;"><div style="font-size:15px;text-align:left;background-color:#FF0000;padding:5px;">'.$string.'</div><div style="background-color:#FFFFCC;padding:10px;">'.$input.'</div></div>';
echo '</body></html>';
exit();
}

}

$mysql =& new Mysql();

// bắt đầu connect CSDL
$mysql->connect($config['Server']['servername'],$config['Database']['username'],$config['Database']['password'],$config['Database']['dbname']);
// hiệu chỉnh font lúc query
$mysql->query("SET NAMES 'latin1'");


có 1 số define và variable ko có trong code mong bạn chú ý, và ko hiểu sao post lên thì [ => ***91; và ] => ***93;

hoanghbc
22-01-2011, 16:35
Cảm ơn anh rất nhiều có em sẽ nghiên cứu dần !