หายหน้าไปน๊านนาน หลายท่านคงนึกว่าคนเขียน ม่องไปล่ะ
ป่าวครับไปเตรียมตัวกับหุ้นส่วน(เพื่อนกาก) เตรียมเปิด กิจการที่ถนัด กันอยู่
ซักพักคงได้เห็นกันวันนี้ก็มีปัญหา แล้วก็หาข้อมูลจนทำได้เลยนำมาให้เพื่อน ๆ ดูน่ะครับ
เป็นปัญหาของตัว mysql ที่มีคนแย่งไป (ได้ยังไงไม่รู้) เลยต้องไปเอาคืนมาเพื่อให้มันทำงานได้ปกติสุข
วันนี้เลยเป็นวันที่ แจ่มอุราอีกวัน ทำงานได้อย่างฟลุ๊ก ๆ
จัดไปลุ๊ยยย
เพิ่ม ลงไปในไฟล์ my.cnf ตามตัวอย่าง
[mysqld]
skip-grant-table
จากนั้นให้ restart service mysql
ต่อด้วยคำสั่ง
mysqladmin -u root flush-privileges password "$password"
จากนั้นเข้าไปที่ mysql โดยการพิมพ์
mysql
พอเข้ามาใน mysql แล้ว
ให้เลือก database mysql โดยคำสั่ง
use mysql
ตามด้วยสองคำสั่งนี้
UPDATE user SET password='$password' WHERE user='root';
GRANT ALL PRIVILEGES ON mysql TO root @'%' IDENTIFIED BY 'localhost';
จากนั้นก็ออกจากโปรแกรม แล้ว ลบ skip-grant-table ออกจาก ไฟล์ my.cnf
แล้วสั่ง restart mysql
จากนั้นก็ จัดได้เลยครับแจ่ม
หมายเหตุ : ต้องใช้สิทธิ์ su , root ทำงานเท่านั้น OS ที่ทำการทดสอบ คือ debian-linux-gnu
$password = รหัสผ่านของคุณ
จากครั้งที่แล้วมา ผมเคยได้ เสนอ การใช้ class เพื่อติดต่อฐานข้อมูล
จากลิงค์นี้น่ะคับ class db
วันนี้ผมจะนำเสนอ เกี่ยวกับการ ลบ ข้อมูลในตารางออก โดย ที่มี ID เกี่ยวข้องกัน
1 : 1 relation
มาดูโค้ดของ การลบ ก่อนคับ โค้ดตรงนี้ ให้นำ ไปใส่ไว้ใน class อันที่แล้วก่อนน่ะคับ class db
function del($table="table",$where="where"){
$sql="DELETE FROM ".$table." WHERE ".$where;
if (mysql_query($sql)){
return true;
}else{
$this->_error();
return false;
}
}
จากนั้นก็มาเขียนโค้ดในหน้าใหม่ คับ
$sql=$db->select_query("show tables;");
while(list($tables_name)=$db->fetch($sql)){
$tables_name;
$db->del($table_name,"model_id = $model_id");
}
แค่เพียงเท่านี้ท่านก็จะ สามารถลบ ข้อมูลที่มี ความสัมพันธ์ แบบ 1:1 ได้อย่างรวดเร็วคับ ไม่ว่าจะมี กี่ ตาราง(table)ก็ตาม
ข้อมูลเผ่ยแพร่ได้คับ ขอเครดิตด้วย ขอรับ
วันนี้ก็มาแจกโค้ดกันอีกแ้ล้วน่ะคับพี่น้อง
เรื่องของการ ใช้ PHP เข้าไป อ่านไฟล์ และ Directory น่ะคับ โ้ค้ดก็ตามนี้คับผม
<?
$i=1;
$countdir=0;
$uncountdir=0;
if ($handle = opendir('.')) {
while (false !== ($file = readdir($handle))) {
$color=($i%2==0)?"#999999":"#000000";
$number=filesize($file)/1024;
$size=number_format($number,'2','.',',');
if($size<"1000" && $file!=="images" && $file!=="css" && $file!=="index.php" && $file!=="sudej"){ // กำหนดไม่เอาไฟล์แสดง
if ($file != "." && $file != "..") {
echo "<a href=\"$file\">$file</a> $size KB";
$i++;
$countdir++;
}
}// close size
$uncountdir++;
}
closedir($handle);
}
?>
คลาสนี้จะรับค่าของ อาร์เรย์เข้ามาหลาย ๆ จำนวนแล้ว ตัวสุดท้ายจะไม่มีคอมม่า
ตัวอย่างข้อมูล : ABCD
result : A,B,C,D
<?
class class_insert_comma{
static function read_array($read){
foreach($read as $key => $val){
echo $val;
}
}
public function change_value($value,$compare_array){
foreach($value as $name => $val){
if($val){
$file_array[]=$compare_array["$val"];
}
}
$file_array=$this->insert_comma($file_array);
return($file_array);
}
private function insert_comma($value_array){
$uncomma=end($value_array);
foreach($value_array as $name){
if($uncomma == $name){
$file_c[]=$name;
}else{
$file_c[]="$name , ";
}
}
return $file_c;
}
}//close class
?>
วันนี้มาแจก อีกแล้วครับ คลาส อัพโหลดไฟล์
ดูโค้ดและ ก็ภาพการทำงานล่ะกันน่ะคับ
<?
### class upload version 2
## author sudej.com
define("PATH","images/");
define("FILE_LIMIT","194304"); //4194304 = 4MB
class upload{
public function check_file_to_upload($file){
$file_name = $_FILES["userfile"]["name"];
$file_size = $_FILES["userfile"]["size"];
$file_temp = $_FILES["userfile"]["tmp_name"];
$file_err = $_FILES["userfile"]["error"];
echo "<div style=\"padding: 4px;\">ข้อมูลทั่วไป ของไฟล์ที่ทำการอัพโหลด</div>
<ul>
<li>ชื่อไฟล์ : <span style=\"color:#933\";>" .$file_name. "</span></li>
<li>ชนิด : <span style=\"color:#933\";>" .$this->check_file_type($file_name)."</span></li>
<li>ขนาด : <span style=\"color:#933\";>" .$this->convert_byte_to_kb($file_size). "</span> กิโลไบต์</li>
<li>เทมโพลารี ่: <span style=\"color:#933\";>" .$file_temp. "</span></li>
<li>ผิดพลาด : <span style=\"color:#933\";>" . $file_err. "</span></li>
</ul>";
echo"<div style=\"border:1px dashed green; padding:10px; width:400;\">
<ul>
<li>";
$this->check_allow_file($this->check_file_type($file_name));
echo"</li>
<li>";
$this->check_size($file_size);
echo"</li><li>";
$this->check_error_upload($file_error,$file_temp,$file_name);
echo"</li></ul>
</div>";
}// close function
function convert_byte_to_kb($file_size){
$file_size = $file_size/1024;
$file_size = number_format($file_size,"2",".",",");
return $file_size;
}
private function check_file_type($file_name){
$file_type = $file_name;
$file_type_length = strlen($file_type) - 3;
$file_type = substr($file_type, $file_type_length);
return($file_type);
}
private function check_size($file_size){
if($file_size > FILE_LIMIT){
echo "<span style=\"color:#F03\"><strong>ขนาดของไฟล์เกินกว่าที่กำหนดไว้ </strong><span><br />";
echo "ขนาดที่อนุญาตให้ใช้่ ".$this->convert_byte_to_kb(FILE_LIMIT)." กิโลไบต์";
exit();
}else{
echo"<span style=\"color:#6C3;\"><strong>อนุญาิตขนาดไฟล์</strong></span><br />";
}
}
private function check_allow_file($file_type){
$file_type = strtolower($file_type);
$files = array();
$files[] = "jpeg";
$files[] = "jpg";
$files[] = "gif";
$files[] = "png";
$chk = array_search($file_type, $files);
if($chk) {
echo "<span style=\"color:#6C3;\"><strong>อนุญาิตไฟล์</strong></span><br />";
} else {
echo "<span style=\"color:#F03\"><strong>ไม่อนุญาติ</strong></span><br />";
echo "ไฟล์ที่ได้รับการ อนุญาต<br />";
foreach($files as $key){
echo" - $key<br />";
}
exit();
}
}
private function check_error_upload($file_error,$file_temp,$file_name){
$error_count = count($file_error);
if($error_count > 0) {
for($i = 0; $i <= $error_count; ++$i) {
echo $_FILES["userfile"]["error"][$i];
}
} else {
if(@move_uploaded_file($file_temp, PATH.$file_name."")) {
echo "<h3>Upload Successful ... </h3>";
} else {
echo "<h3>ERROR</h3>";
}
}
}
} //close class
?>

not allow picture

ไฟล์มีขนาดใหญ่กว่าที่ระบบกำหนด

เครดิต สุดเดช ดอทคอม
ตัวพ่อ www.php.net
จากเมื่อวาน << คลิ๊กเพื่อดูเรื่องที่ต่อเนื่อง
วันนี้จะบอกวิธีการติดตั้ง Crontab กันน่ะคับ
เริ่มจากการสร้างไฟล์ Crontab ขึ้นมาก่อนน่ะคับ
15 4 * * * php -q /home/backup/rbackup.php > /dev/null 2>&1

ความหมายของมันก็คือ ทุก ๆ วัน เวลา ตี 4.15 ให้ทำการ รัน สริปต์ ที่ชื่อว่า rbackup.php
เมื่อสร้างเสร็จแล้ว คราวนี้ก็มาดูผลการทำงาน ของ script กันน่ะคับ




ขอบคุณทุกท่าน ที่ดูแล้ว จะนำไปให้ให้เกิดประโยชน์ต่อไป
ขอบคุณทุกท่าน ที่เอาไปใช้แล้วให้เครดิตผม
กันลืม
crontab filename การนำเอาคำสั่ง crontab เข้ามาจาก ไฟล์อื่น
crontab -e แก้ไข crontab ปัจจุบัน
crontab -l ดูคำสั่ง crontab ทั้งหมดที่มีอยู่
crontab -r ลบคำสั่ง crontab ที่มีทั้งหมด
crontab -u user เป็นคำสั่งของผู้ดูแลระบบเท่านั้น(administrators) เพื่อใช้ดู แก้ไข ลบ crontab ของ user แต่ล่ะคน
By default cron jobs sends a email to the user account executing the cronjob. If this is not needed put the following command At the end of the cron job line .
>/dev/null 2>&1
****
15 * * * * rm -rf /var/www/html/xxx.com/ocache/*.png > /dev/null 2>&1
sp thx[1]: NECTEC
sp thx[2]: Thai Admin
วันนี้ผมจะมานำเสนอ การ Backup database โดยใช้ php น่ะคับ
เป็นการ backup ข้อมูลผ่าน สริปต์ โดยใช้ ตัว crontab ใน Linux เป็นตัวเรียก สริปต์นี้
ใ้ห้ทำงานน่ะคับ วันนี้จะนำเสนอ ในเรื่องของ สริปต์กันก่อนน่ะคัีบ
ผมได้ เรียนรู้บางคำสั่ง จาก อาจารย์ เปิ้ล แอบ เซิฟ และ การโค้ดดิ้ง แนะแนวโดยพี่แม๊กมอไซค์คับ
โดยการ backup ในครั้งนี้ เมื่อทำการแบ๊กอัพ เสร็จแล้ว มันจะส่งเมล์ไปบอก ยัง ผู้ดูแลระบบ
ในครั้งต่อไปผมจะ นำ คำสั่ง พร้อมกับ ภาพ มาประกอบให้ดูกันน่ะคับ
ขอบคุณทุกท่าน ที่ดูแล้ว จะนำไปให้ให้เกิดประโยชน์ต่อไป
ขอบคุณทุกท่าน ที่เอาไปใช้แล้วให้เครดิตผม
สังคมน่าอยู่เพราะว่ามีคนมีน้ำใจ
sp thx[1]: NECTEC
sp thx[2]: Thai Admin
<?
class BackUp{
function WhatBackup($whatBackup){
if ( (!$whatBackup) || ($whatBackup == "") ) {
die("Specify folder to backup");
}
$this->whatBackup = $whatBackup;
}
### Make dir if not exists ###
function WhereBackup($whereBackup){
$this->whereBackup = $whereBackup;
}
### Build FileName ###
function FileName($fileName){
$today = date("Y_m_d_H-i");
$fileName = ( (!$fileName) || ($fileName == "") ) ? $today : $fileName;
$this->fileName = $fileName;
}
### Do It ###
function Backup(){
$today = date("d-m-Y, H:i:s");
$comm = "tar cfvz ".$this->whereBackup."/phpbb_".$this->fileName.".tar.gz ".$this->whatBackup;
### If u want All output, use passthru() function ###
### Send E-mail ###
$run = exec($comm);
$msg = ($run != "") ? "Backup OK" : "Backup FAILED";
$to ="webxxx@mail.com";
$subject = "Backup system Database ip xxx [phpbb]";
$message = "Backup System Report Server : ip xxx <br />";
$message .="Date : ".$today ."<br />";
$message .="Status : ".$msg."<br />";
$message .="What Backup : ".$this->whatBackup."<br />";
$message .="Where Backup : ".$this->whereBackup."<br />";
$message .="File name : phpbb_".$this->fileName.".tar.gz";
$headers = "MIME-Version: 1.0" . "rn";
$headers .= "Content-type: text/html; charset=utf-8" . "rn";
$headers .= "From: email@mail.com" . "rn";
$headers .= "X-Mailer: PHP/".phpversion();
@mail($to, $subject, $message, $headers);
exec("sleep 30");
}
}
?>

เมื่อผู้พัฒนา เรื่องเข้าใจ ในการทำงานของ คลาส ดาต้าเบส แล้ว
ต่อจากนี้ผมจะเอาตัวที่จัดการ การทำงาน ของ MySQL ตัวหนึ่งมาให้รู้กัน
นั้นคือ คำสั่ง TRUNCATE นั้นเองการทำงานของคำสั่งนี่คือการทำให้ Table ที่ทุกสั่งนั้น จะเป็น EMPTY ทั้งหมด
ในโปรแกรม phpmyadmin นั้นมีอยู่แล้ว แต่ว่า ผมอยากเขียนขึ้นมาใหม่อ่ะ ขี้เกียจไปเข้ามันช้า
มาดูการเขียนกันคับ
รูปแบบคำสั่งของมันจะเป็นแบบนี้คับ และ เพิ่มเติมให้อีกอันน่ะคับ นั้นก็คือตัว SHOW TABLES;
TRUNCATE TABLE ชื่อเทเบิ้ล;
ex TRUNCATE TABLE tbl_model;
งั้นมาดูโค้ดที่ผมเขียนกันเลยน่ะคับ
ขั้นตอนแรกก็ include ไฟล์ที่ชื่อว่า class.mysql.php เข้ามาก่อนน่ะคับ
แ้ล้วไปตั้ง ค่า config ที่ตัว constant กันก่อนคับ ลอง ๆ หาดู จะได้คล่อง
ถ้าติดตรงไหนก็ถามผมได้คับยินดีตอบคับ
<?
include("class.mysql.php");
$db = new db;
$db->connectdb(DB_NAME,DB_USERNAME,DB_PASSWORD);
$tables=$_GET["tables"];
if($tables){
if($tables=="all"){
$sql=$db->select_query("show tables;");
while(list($query_tables)=$db->fetch($sql)){
$db->select_query("TRUNCATE TABLE $query_tables;");
}
echo"TRUNCATE TABLE ALL";
header("refresh: 3; url=truncate_table.php");
}else{
$check=$db->select_query("TRUNCATE TABLE $tables;");
if($check){
echo"System :: <br />";
echo"<u>TRUNCATE TABLE $tables;</u><br />";
echo" Finish<br />";
header("refresh: 3; url=truncate_table.php");
}else{
echo"Have not your select table";
header("refresh: 3; url=truncate_table.php");
}
}
}else{
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>TRUNCATE TABLE </title>
</head>
<body>
<h1>Select Truncate Table</h1>
<ul>
<?
$sql=$db->select_query("show tables;");
while(list($show_tables)=$db->fetch($sql)){
?>
<li>
<a href="?tables=<?=$show_tables;?>" onclick="javascript:return confirm('TRUNCATE TABLE <?=$show_tables;?>;');">
<?=$show_tables;?>
</a>
</li>
<?
}
?>
</ul>
<a href="?tables=all" onclick="javascript:return confirm('TRUNCATE TABLE ALL;');">
[TRUNCATE TABLES ALL]</a>
</body>
</html>
<?
}
?>
RESULT :

ใครมีอะไรที่เจ๋ง ๆ ก็แนะนำกันหน่อยน่ะคับ โลกใบนี้หาความรู้ได้ทุกวันจริง ๆ ฮ าๆ
เขียนคลาสขึ้นมาเพื่อควบคุมการใช้งาน DATABASE ได้อย่างมีประสิทธิ์ภาพ
ขอขอบคุณ พี่แม๊กมอไซค์ สำหรับโค้ดบางส่วนในการพัฒนางานในครั้งนี้
class db{
var $host = DB_HOST;
var $database;
var $connect_db;
var $selectdb;
var $db;
var $sql;
var $table;
var $where;
public function connectdb($db_name="database",$user="username",$pwd="password"){
$this->database = $db_name;
$this->username = $user;
$this->password = $pwd;
$this->connect_db = mysql_pconnect($this->host, $this->username, $this->password ) or $this->_error();
$this->db = mysql_select_db ( $this->database, $this->connect_db) or $this->_error();
mysql_query("SET NAMES UTF8");
mysql_query("SET character_set_results=utf8");
return true;
}
//// MYSQL Query ////
function select_query($sql="sql"){
if ($result = mysql_query($sql)){
return $result;
}else{
$this->_error();
return false;
}
}
//// MYSQL Result ////
function fetch($sql="sql"){
if ($result = mysql_fetch_array($sql)){
return $result;
}else{
$this->_error();
return false;
}
}
} // close class
จะมีงานต่อจากนี้ ให้ผู้ที่จะใช้ในการพัฒนา ตั้งชื่อไฟล์นี้ไว้ว่า class.mysql.php คับผม
สำหรับท่านที่ เปลี่ยนมาใช้ utf-8 แล้วเกิดปัญหา
เวลา Browser เปิดข้อมูลแล้วเกิดปัญหาตัวอักษรไม่แสดงผล
ตามที่เราตั้งค่าไว้

ปัญหามันเกิดมาจาก ตัว Content-Type:text/html; ไม่ยอมเรียกค่า ปกติมันออกมา
เราก็มีวิธีแก้ปัญหาดังนี้คับ
สำหรับคนใช้ Linux fedora, redhat น่ะคับ
อับดับแรกก็ไปแก้ไข ไฟล์ที่ชื่อว่า httpd.conf
<code>##########################
AddDefaultCharset UTF-8
AddCharset ISO-8859-1 .iso8859-1 .latin1
AddCharset UTF-8 .utf8
AddCharset utf-8 .utf8
AddCharset TIS-620 .tis-620 th
##########################
สำหรับคนที่ไม่สามารถแก้ไขได้เนื่องจากท่านไม่ Admin ระบบ
ก็ให้เขียนไฟล์ .htaccess หรือ htaccess.txt
แล้วให้ upload ไปยังที่ directory ที่เก็บไฟล์ไว้ของผมอยู่ที่ htdocs คับ
ซึ่งของผมเช่า host ไว้ที่ www.appservhosting.com จารย์เปิ้ล แห่ง appservnetwork.com
<code><IfModule mod_rewrite.c>
AddDefaultCharset utf-8
</IfModule>
ขั้นตอนสุดท้ายมันยังไม่มาอีก
นี้เลยคับ ระบุตัวนี้ไว้ที่หน้าที่จะแสดงเลยคับ
header( 'Content-Type:text/html; charset=utf-8');
หรือใส่ตัว meta กำหนด content-type น่ะคับ
<code><meta http-equiv="content-type" content="text/html; charset=utf-8" />
ไม่ออกให้ตบ ลองดูคับ

สุดเดช แห่ง สุดเดช บล๊อก ได้กล่าวไว้ว่า
การแบ่งบันสิ่งดี ๆ ให้แก่กัน ทำให้สังคมเราน่าอยู่ขึ้น