2013年11月10日 星期日

PHP 將資料庫資料橫向排入表格內


使用語法:PHP、SQL、HTML
範例說明:將資料庫的資料取出來之後,放入指定的欄數裡面,通常抓取的資料會以縱向向下排列,
         此範例使用簡單的寫法讓資料乖乖橫向排列。

Test.php
  mysql_select_db($database_test, $test);
  $query_record = "SELECT name FROM recordfile";
  $record = mysql_query($query_record, $test) or die(mysql_error());
  $row_record = mysql_fetch_assoc($record);
  $totalRows = mysql_num_rows($record);
?>

 
   
   
     
         
            do{
        if($i%3 == 1){
         echo ' ';
        }
        elseif ($i%3 == 2){
         echo '';
        }
         elseif ($i%3 == 0){
        echo ' ';
        }
        $i++;
     }while($row_record = mysql_fetch_array($record));
     ?>
         
      
'.$row_record['name'].''.$row_record['name'].''.$row_record['name'].'

   
顯示結果如下圖:


用Jeditable快速更新MySQL資料範例網頁



之前一直在想用jQuery,將mysql顯示在網頁上的表格資料,用不換頁的方式,進行修改與刪除,但是弄了好久,只有完成新增與刪除,沒有做到修改的功能,後來找到一個好用的UI,
名叫:Jeditable,下載點在此:
大概實作一下:
先做出一個檔案:1.php
在中加入底下標籤:

Dolor

Lorem ipsum dolor sit amet, consectetuer
adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore
magna aliquam erat volutpat.
接著命名第二個檔案:1.js
加入底下的script:
$(document).ready(function() {
     $('.edit').editable('save.php', {
         indicator : 'Saving...',
         tooltip   : 'Click to edit...'
     });
     $('.edit_area').editable('save.php', {
         type      : 'textarea',    //輸入欄位的種類為textarea
         cancel    : '取消修改',
         submit    : '確認修改',
         indicator : '',
         tooltip   : 'Click to edit...'
     });
});
參數解說一下:
editable('xxx.php'):xxx.php這個檔案為用來進行修改欄位之後,進行將資料存入mysql的php頁面
indicator:正在儲存中,要顯示給使用者看的文字訊息,也能用圖片的方式
tooltip:當滑鼠經過其上方時,要顯示的提示訊息
cancel:表單上代表取消鈕的動作
submit:表單上代表送出鈕的動作
而當按下確認修改鈕之後,將會POST兩個變數給save.php這個頁面
id=您要修改的該筆資料的識別碼&value=要修改的值
嗯,沒有錯,一個變數的名稱就是id,另一個就叫value
而如果想取不一樣的變數名稱的話,請加入底下有色的兩行
$(document).ready(function() {
     $('.edit').editable(save.php', {
         id   : 'elementid',         name : 'newvalue'
     });
});
所以save.php的頁面可以這樣寫:
###############################
$id $_POST['id'];
$value $_POST['value'];
//如果有改變數名稱請改成底下
//
//$id $_POST['elementid'];
//$value $_POST['newvalue'];
  
//將$_POST['id']用explode函式拆解為$field和$id兩個變數
list($field$id) = explode('_'$id);
  
//mysql query
mysql_query("UPDATE tb_category SET $field='$value' WHERE cId='$id'");
  
//將值傳回前端
echo $value;
#############################
而如果輸入的欄位是選單鈕的話,就要加入底下有顏色的程式:
$('.editable').editable('save.php', {
     data   : " {'E':'Letter E','F':'Letter F','G':'Letter G', 'selected':'F'}",
     type   : 'select',
     submit : 'OK'
});
解說一下參數
data:"{'選項一的值':'選項一在表單上顯示的名稱','選項二的值':'選項二在表單上顯示的名稱'......,'selected':'選項一的值'}",
type:'select',  //輸入的欄位為選單
其中的selected就是選單預設選取的項目
而如果不想用data的方式的話,也可以改成這樣:
$('.editable').editable(save.php', {
     loadurl : 'json.php',     type   : 'select',
     submit : 'OK'
});
而json.php的樣子是長這樣:
###############################
 $array['E'] =  'Letter E';
$array['F'] =  'Letter F';
$array['G'] =  'Letter G';
$array['selected'] =  'F';
print json_encode($array);

###############################
要修飾外觀時,可以加入底下這個:
$('.editable').editable(save.php', {
     cssclass:'cellcolor'  //cellcolor為css檔案中的樣式名稱
     style   : 'display: inline' //顯示的方式
      });






PHP自動產生縮圖

在上傳圖檔時
有些會需要順便產生縮圖
供瀏覽的時候使用
避免圖檔過大
以致影響瀏覽速度


在PHP上產生縮圖
可使用php的GD功能
直接使用 imagecopyresampled() 或 imagecopyresized()
就可以產生縮圖

要有支援GD功能
可先查看phpinfo()


















建立空白縮圖
背景預設是黑色
可以使用 imagecolorallocate() 跟 imagefilledrectangle() 將縮圖先填入顏色
再將來源圖檔依比例填入縮圖檔案


1
2
3
4
5
6
7
8
9
10
11
12
13
14   
$src = imagecreatefromjpeg("./old.jpg");    //讀取來源圖檔
$src_w = imagesx($src);     //取得來源圖檔長寬
$src_h = imagesy($src);
$new_w = 100;               //新圖檔長寬
$new_h = 100;
$thumb = imagecreatetruecolor($new_w, $new_h);    //建立空白縮圖
//設定空白縮圖的背景,如不設定,背景預設為黑色
$bg = imagecolorallocate($thumb,255,0,255);       //空白縮圖的背景顏色
imagefilledrectangle($thumb,0,0,$src_w,$src_h,$bg); //將顏色填入縮圖
//執行縮圖
imagecopyresampled($thumb, $src, 0, 0, 0, 0, $new_w, $new_h, $src_w, $src_h);
imagejpeg($thumb, "./new.jpg");