2022年4月7日 星期四

Php網頁中,透過Dreamweaver加入kindeditor編輯器 -- 20220407

緣由:

最近練習PHP網頁製作,然而某些網頁中需要編輯器的功能,於是上網爬文找到免費的kindeditor編輯器,這款編輯器像我沒有寫程式的人都看得懂的,我把它紀錄下來,方便日後複習。



步驟一、登入官網http://kindeditor.net/demo.php,並下載該軟體。














步驟二、將下載kindeditor解壓縮,並將不必要的資料夾刪除掉。











步驟三、將解壓縮後,將整個Kindeditor資料夾丟入到開發PHP網頁資料夾中。














步驟四、新增網頁,並加入一個「文字欄位」。
















步驟五、將網頁切換成「程式碼」模式,把kindeditor-all.js拖拉至網頁內,且把demo.php內的某段程式碼複製並貼到新網頁內,如下:

路徑:kindeditor/kindeditor-all.js

































路徑: kindeditor/php/demo.php

程式碼(拷貝的部分):

<script>

KindEditor.ready(function(K) {

var editor1 = K.create('textarea[name="content1"]', {

cssPath : '../plugins/code/prettify.css',

uploadJson : '../php/upload_json.php',

fileManagerJson : '../php/file_manager_json.php',

allowFileManager : true,

afterCreate : function() {

var self = this;

K.ctrl(document, 13, function() {

self.sync();

K('form[name=example]')[0].submit();

});

K.ctrl(self.edit.doc, 13, function() {

self.sync();

K('form[name=example]')[0].submit();

});

}

});

prettyPrint();

});

</script>

※紅色的部分要修改的地方,根據「文字欄位」名稱而定。


















步驟六、根據上述步驟加入一個文字欄位js程式碼後,儲存後按下F12鈕,即可看見成效。



-----------------------------------修改編輯器的功能列---------------------------------------

補充:








步驟一、到官網http://kindeditor.net/demo.php,找到「文檔」→點選「編輯器初始化參數」。

















步驟二、找到「items」項目,其列出「編輯器所有功能」的比照表。



















步驟二、開啟kindeditor-all.js檔案,並找到items,在比照上述步驟二去刪除不需要的功能。














步驟三、修改後,所呈現編輯器畫面,如下:












參考網址:網址一網址二、網址三



2021年5月24日 星期一

PHP 限制字元數長短 ms_substr( ) 心得 -- 20210525

緣由:

因為想把冗長的新聞標題字數,限制在某個數字內,如下圖所示:





原始程式碼:

                        <?php echo $row_RecNew['n_title']; ?>


-----------------------------------------------------------------


備註:


採用 substr($string , $strat , $length) 函數 ,但擷取後的中文字元出現亂碼的情況。如下圖:

$string:原始的字串   

$start:開始擷取的位置

$length:擷取的字串長度


程式碼:

                  <?php echo substr($row_RecNews['n_title'],0,17); ?>







---------------------------------------------------------------------


最後採用 ms_substr($string , $strat , $length , $encoding) 函數

$encoding:放置判斷的編碼


最終修改後的程式碼:

                                <?php echo mb_substr($row_RecNews['n_title'],0,17,'utf-8'); ?>


所呈現的畫面:











2021年2月25日 星期四

在Windows 10中,安裝XAMPP,因Port80被占據無法啟動Apache伺服器 -- 20210226

 經由:

太久沒碰PHP了,最近想用PHP製作網站,但先決條件是把環境建置起來,於是想到XAMPP這套軟體,接下來就是這篇要介紹的如何建置簡易的開發環境。



步驟一、上網下載XAMPP套裝軟體,並且將它安裝。

網址:https://www.apachefriends.org/index.html


步驟二、Start啟動Apache伺服器後,發現失敗Port 80被占據,導致失敗。




























步驟三、查看Port 80被什麼佔據掉。

(方法一) 

直接點選「Netstat」鈕,就可查詢到是「PID:4 」、「Name:System」 佔據了Port 80。

















(方法二)

開啟「命令提示元」視窗,輸入 netstat - nao |find "0.0.0.0:80"









輸入tastlist /FI "PID eq 4"。也可看見「影像名稱:System」、「PID:4」 佔據了Port 80。










步驟四、開啟「執行」視窗,輸入 regedit










步驟五、找到「Start,並將它的值改成0,再重啟電腦。

※路徑:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP



















步驟六、再重新Start「Apache」,確認可正常啟動。


















參考網址:網址一網址二





2020年6月29日 星期一

MySQL(Timestamp的屬性)心得 -- 20200630

今天練習寫網站「點擊率」,結果在Update網頁的點擊率時,發現「張貼時間」欄位會自動更新目前的時間,於是爬文後才知道是因為MySQL內Timestamp屬性造成的。


簡單來說,預設timestamp屬性是「只要有值」 在同一筆資料只要新增/修改的時候,MySQL會自動幫你將「 timestamp型態的欄位寫入目前現在的時間

兩種屬性可提供調整使用:

自動初始化: 此欄位「寫入」資料時,自動將timestamp的欄位,寫入現在時間。

                          DEFAULT CURRENT_TMESTAMP(建立時,自動寫入時間)

自動更新:此欄位「修改」資料時,自動將timestamp的欄位,寫入現在時間。

                         ON UPDATE CURRENT_TIMESTAMP(更新時,自動寫入時間)


主要有下述 四種 設法/時機: (範例轉載自官方網站: MySQL 5.1 Reference Manual - TIMESTAMP Properties)
  • 自動初始化自動更新
    ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
  • 只做自動初始化 (建立時初始化, 更新時不修改時間)
    ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP
  • 只做自動更新 (建立時不做初始化動作)
    ts TIMESTAMP DEFAULT 0 ON UPDATE CURRENT_TIMESTAMP
  • 全都不做(使用這個的話, 或許直接用 DATETIME 的型態 似乎比較方便?)
    ts TIMESTAMP DEFAULT 0

2012年7月19日 星期四

PHP+MySQL課程 -- 20120719

include 與 require 使用方法:

在PHP中使用上述兩個英文字母的話,都可將外部網頁內容載入!!

include 與 include_once的差異,在於後面有加-once的話,只能執行一次!!!

同理:require_once也只能執行一次!!



----------------假設以下語法可直接load入外部網頁:--------------------------------
舉例:

<?php
require_once ('0717-external.php')         //include '0717-external.php'
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無標題文件</title>
</head>
<?php
printf('%s lives in %s<br>',$name,$country);
include '0717.html';
?>

<body>
</body>
</html>

-----------------------------------------------------------------------
網頁0717-external.php 裡面內容為:

<?php
$name='jacky';
$country='Taipei';

?>

-----------------------------------------------------------------------
網頁0717.html的內容為純文字檔!!

-----------------------------------------------------------------------


補充:20200519

include( )與require( )的區別:

include( )引入檔案時,如遇到錯誤會提示錯誤並繼續執行。

  • 一般在用時才會引入,通常是放在流程控制的處理區段,PHP指令碼在執行到它時,才會將檔案包含進來。

require( )引入檔案時,如遇到錯誤業會提示錯誤,但會終止程式的執行。

  • 一般放在PHP指令碼頁面的最前面,PHP在執行前就先讀入Require( )引入的檔案,檔案的內容會變成指令碼的一部分,一旦出現錯誤則立即退出程式。


include( )、require( )與include_once( )、require_once( )的區別:

  • include( )、require( )執行即包含檔案,不會對引入的檔案進行比較判斷,可能會出現重複包含的情況。
  • include_once( )、require_once( )在包含時會先判斷檔案是否,若已包含過,則不再包含檔案,這樣的引入檔案方式即可節省資源,又可避免重複定義的錯誤。








2012年7月17日 星期二

PHP+MySQL課程 -- 20120717

資料傳遞模式

GET          網址? 變數名稱=&變數名稱=&...
                                  a1   =  v1   &  a2  =  v2

                  如同:     array(a1 < = v1 , a2 <= v2.....)    

GET通常傳輸字串、數字,故速度比POST快!!
舉例:
--------------------------------------------------------------------------------------------
網頁A 程式碼,如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>網頁A</title>
</head>
<body>
<a href="網頁B.php?ax=100&bx=250">將資料傳送至網頁B</a>
</body>
</html>

--------------------------------------------------------------------------------------------
網頁B 程式碼,如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>網頁B</title>
</head>
<body>
<?php
printf('<li>%s</li><br><li>%s</li><br>',$_GET['ax'],$_GET['bx']);
var_export($_GET);
?>

</body>
</html>


結果:



  • 100 
  • 250
    array ( 'ax' => '100', 'bx' => '250', )

  •  --------------------------------------------------------------------------------

    POST  (一般都是傳送檔案、圖片....等,故傳送速度比GET慢!!)

    舉例:
    -----------------------------------------------------------------------
    網頁C程式碼,如下:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>網頁C</title>
    </head>
    <body>
    <form id="form1" name="form1" method="post" action="網頁D.php">
      <label for="ur">姓名:</label>
      <input type="text" name="ur" id="ur" />
      <input name="hide" type="hidden" value="1000" />
      <button type="submit">送出</button>
    </form>
    </body>
    </html>


    -----------------------------------------------------------------------
    網頁D程式碼,如下:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>網頁D</title>
    </head>
    <body>
    <?phpprintf('<li>%s</li><li>%s</li>',$_POST['ur'],$_POST['hide']);
    ?>
    </body>
    </html>


    2012年7月12日 星期四

    PHP+MySQL課程 -- 20120712

    判斷流程
    switch (被檢查物件){
    case ?:
        執行的工作
        break ;                 
    case ? :
        執行的工作
        break ;
    default :                    // 其餘都屬於此條件內
        執行的工作
    }

    問號表示:必對是否相同條件!!!

    ---------------------------------------
    舉例:

    <?php
    function 
    switch ($a){ 
    case 1:       
            echo '土象星座';
            break;

    case 2:       
            echo '水象星座';
            break; 

    case 3:    
         echo '火象星座';
         break;
    default:

         echo '風象星座';
        }

    }
    ?>

    <?php
    echo con(4);
    ?>

    結果:風象星座

    ----------------------------------------
    舉例:

    <?php
    function con($a){
    switch ($a){
     case 1:
            echo '土象星座';
            break;
     case 2:
            echo '水象星座';
            break;
     case 3:
           echo '火象星座';
         break;
     default:
           echo '風象星座';
        }
    }
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>無標題文件</title>
    </head>
    <body>

    <ol>                 //HTML語法
    <?php  
    $a=0;
    while (++$a<=4){
    ?>
    <li>                   //HTML語法
    <?php   
    echo con($a);
    ?>
    </li>                  //HTML語法
    <?php
     }
    ?>

    </body>
    </html>

    結果:
    1. 土象星座
    2. 水象星座
    3. 火象星座
    4. 風象星座
    --------------------------------------------------------
    循環流程:

    for ( e1 ; e2 ; e3 ) {
        執行的工作
    }

    e1  循環開始前執行一次
    e2  (boolean) 判斷是否重複循環
    e3  每次循環結尾執行

    --------------------------------------------
    舉例:

    <?php
    for($i=1;$i<=10;++$i){ 
    printf('%s<br>',$i);
     }
    ?>

    結果:
    0
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    ---------------------------------
    舉例: (五張照片的名稱為ngm1s.jpg、ngm2s.jpg....ngm5.jpg)

    <?php$num=5;
    $no='images/ngm';
    $pic='s.jpg';
    ?>


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>無標題文件</title>
    </head>
    <body>
    <ol>
    <?php
    for ($i=1;$i<=$num;++$i)
     {

    ?>
    <li>
    <img src=<?php echo $no.$i.$pic; ?> alt="">     //特別小心alt前面需空格,不然會產生破圖!!
    </li>
    <?php
     }
    ?>
    </ol>

    </body>
    </html>

    ---------------------------------------------------
    連續取出array資料

    foreach ( $arr  as  $k => $v )
    {                   
           陣列取出的值!!
      }

    -------------------------------------------------
    舉例:

    <?php
    $arr=array('Jacky'=>'tiller','Mary'=>'nurce');
    $arr['Mark']='teacher';
    ?>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>無標題文件</title>
    </head>
    <body>
    <ul>
    <?php
    foreach ($arr as $k => $v){
    printf('<li>%s is %s</li>',$k,$v);
     }

    ?>
    </ul>

    </body>
    </html>

    結果:



  • Jacky is tiller
  • Mary is nurce
  • Mark is teacher

  • ---------------------------------------------------