ကဗ်ာ/ရသ/နည္းပညာ

MY PHP မွတ္စု

Feb 15, 2016
//getimagesize($_GET['img']) ကေနအဓိကသံုးတာက img array ကေဖာ္ျပမယ့္ index [0] width [1] height ၿပီးရင္
['mime']=image/jpeg
//imagecopy(ပင္မပံု,watermarkပံု,watermarkရဲ႕အေပၚေအာက္,watermarkရဲ႕ဘယ္ညာ,ပင္မပံုရဲ႕အေပၚေအာက္,
ပင္မပံုရဲ႕ဘယ္ညာ,watermarkရဲ႕ထားမယ့္အျမင့္,watermarkရဲ႕ထားမယ့္အက်ယ္)
//move_uploaded_file() က tmp_name ထဲက ဖိုင္ကုိေရြ႕ဖို႔သံုးတယ္
//ေနာက္ထပ္တစ္ခုက ဖိုင္ကုိေရြ႕တဲ့အခါ ဖိုင္ရဲ႕ extension ကုိစစ္ၿပီးမွေရြ႔မယ္ဆို imagecreatefromjpeg($image)
နဲ႕အရင္ Cache လုပ္ၿပီးရင္ imagejpeg({$GLOBALS['core_path']}/watermark.jpeg) ဆိုရတယ္။
//အေပၚက လင့္လမ္းေၾကာင္းယူျပတာမွာ ပထမက $core_path=dirname(__FILE__); ဆိုၿပီးယူထားတယ္။
// ေနာက္တစ္မ်ိဳး က $core_path=$_SERVER['SCRIPT_FILENAME']; နဲ႕ယူတာျဖစ္ပါတယ္။
အဲဒါကုိ Global ထပ္မေၾကျငာပဲ တန္းယူျပခ်င္ေတာ့ {$GLOBALS['core_path']} လို႕သံုးလိုက္တာျဖစ္ပါတယ္။
//scandir('image/') ဆိုရင္ image folder ထဲက ဖိုင္ေတြကုိ scan စစ္ေပးတယ္။သူကစစ္ယံုစစ္ေပးတာ။
// သူ႔ထက္လန္းတာရွိေသးတယ္။အဲ့ဒါက glob(*.*); ဆိုရွိသမွ်အကုန္ျပမယ္။ glob(*.jpg) ဆို Jpg ပဲျပမယ္။
glob('*.{jpg/png/gif}',GLOB_BRACE) ဆို jpg,png,gif သံုးခုျပေပးမယ္ GLOB_BRACE ထည့္ေပးဖို႕လိုမယ္။
//extension ပဲျဖတ္ယူဖို႕ အတြက္ဆို explode('.',$img)
သူက [0]=>aungaung,[1]=>.,[2]=>jpg ဆိုၿပီးခြဲထုတ္ေပးတယ္။အဲဒီထဲကမွေနာက္ဆံုးတစ္ခုကုိယူမယ္ဆိုရင္
strtolower(end($exploded_img))ဒါဆို ေနာက္ဆံုးတစ္ခုပဲယူမယ္။ထြက္လာတာကုိစာလံဳးေသးနဲ႕ျပလိမ့္မယ္
//md5(microtime()) က နာမည္မထပ္ေအာင္ေပးရင္သံုးတယ္ microtime အခ်ိန္ကိုယူၿပီး md5 နဲ႕ Hash လုပ္လိုက္တာ
//img_sizeကုိခ်ံဳ႕ဖို႕တြက္ခ်င္ရင္ $new_size=(width+height)/(width*(height/100))
ၿပီးရင္ imagecreatetruecolor(width,height); နဲ႕ အခ်ိဳးညီညီပံုထြက္လာေအာင္လုပ္လုိ႕ရတယ္
/* if(is_dir('image/')==false){
     mkdir('image/',0744); 0744က parmission ေပးတာ Linux အတြက္ပဲသံုးတယ္ Windows မွာမသံုးဘူး
}*/
//ပံုဆိုဒ္အတြက္သံုးတာ imagecopyresampled($thumb, $src, 0, 0, $src_pos[0], $src_pos[1], $new_size[0], $new_size[1], $src_size[0], $src_size[1]);
//ပံုဆိုဒ္အတြက္သံုးတာimagecopyresized($new_image,$old_image,0,0,0,0,$new_width,$new_height,$img_width,$img_height);
//အဲ့ဒီ function ႏွစ္ခုကြာျခားခ်က္ကုိ အြန္လိုင္းမွာရွာၾကည့္ေတာ့ imagecopyresize uses the nearest pixel algorithm, imagecopyresampled
uses the the bicubic interpolation. The results clearly shows the difference  . လို႕ရတယ္ အရည္အေသြးမေလွ်ာ့ခ်င္ရင္ေတာ့ imagecopyresampled()သံုးတာ
ပိုေကာငး္လိမ့္မယ္။
ေနာက္သင္ခန္းစာ Javascript ႏွစ္ဖိုင္ခ်ိတ္ၿပီး Progress bar ဖန္တီးတာ တစ္ဖိုင္က function ကုိေနာက္တစ္ဖိုင္က obj ေဆာက္ၿပီးသံုးသြားတာ ။
library.js မွာဒါေတြကုိေရး
function progress_bar(container){
var bar=document.createElement('div');
bar.style.width='0px';
bar.style.height='100%';
bar.style.background='#eef';
container.appendChild(bar);

var text=document.createElement('div');
text.style.marginTop='-26px';
text.style.textAlign='center';
text.style.color='#222';
text.style.size='15px';
text.appendChild(document.createTextNote('0%'));
container.appenChild(text);

this.setpercentage =function(percentage){
bar.style.width=percentage+'%';
text.removeChild(text.firstChild);
text.appendChild(document.createTextNote(percentage+'%'));
}
}
Main.js မွာဒါေရး
window.onload=function(){
var bar=new progress_bar(document.getElementById('progress_bar'));
document.getElementById('set_50').onclick=function(){
bar.setpercentage(50);
}

document.getElementById('0to100').onclick=function(){
var i=0;
var interval=window.setInterval(function(){
if(i>=100) window.createInterval(interval);
bar.setpercentage(i);
i++;
},50)
}
}

မွတ္ထားရမယ့္ SQL Coding
INSERT INTO page_hit(name,name) VALUES (values,values) ON DUPLICATE KEY UPDATE hit=hit+1;

array ႏွစ္ထပ္နဲ႕ ရလဒ္ကုိထုတ္ျပမယ္ဆိုရင္ေအာက္ကပံုစံကုိမွတ္ထား ..
$sql=SELECT * FROM page_hit ;
$result=mysqli_query($GLOBALS['$conn']$sql);
$stat=array();
while($row=mysqli_fetch_assoc($result)){
$stat[]=array('value1'=>$row['something1'],'value2'=>$row['something2']);
}stat array() ထဲကုိ $row() ကလာမည့္ေဒတာေတြ ေနရာခ်ေပးလိုက္တယ္။အဲ့ဒါကိုမွ
HTML ထဲေရာက္ရင္ foreach နဲ႕ပတ္ၿပီးျပန္ထုတ္ျပရမယ္။

function __construct($something){...} က Class ကုိေခၚတာနဲ႕တန္းအလုပ္လုပ္တယ္။
က်န္တာေတြက class ကုိ obj ေျပာင္းၿပီး $class->function ပံုစံနဲ႕ေခၚရတာ

__toString() က string မျဖစ္ေသးတာကို string ေျပာင္းေပးႏိုင္တယ္ ။ေအာက္ကဥပမာမွာ
URL ကုိ string ေျပာင္းခိုင္းထားတယ္။
function __toString(){
return $this->site_path."<br/>".$_SERVER['REQUEST_URI'];
}
အခုထပ္ျပထားတဲ့ဥပမာမွာေတာ့ URL ထဲက '/' ေတြကုိဖယ္ထုတ္တဲ့ method ေလးကိုျပထားတယ္
function segment($segment){
$url=str_replace($this->site_path,'',$_SERVER['REQUEST_URI']);
$url=explode('/',$url);
if (isset($url[$segment])){
return $url[$segment];
}else{
return false;
}

No comments:

Post a Comment