2022年5月26日 星期四

DOS命令提示字元執行mysql指令,其中文顯示亂碼 -- 20220526

緣由:

透過Windows內建命令提示字元,查詢MySQL的資料庫內「資料表」和「資料」等,結果查詢後發現中文字卻出現亂碼。如下圖:




解決方式:

步驟一:藉由「命令提示字元」連結mysql資料庫。









步驟二、輸入show variables like '%character%'; 指令,列出所有的相關訊,如下圖所示:

character_set_client =  utf8 

character_set_connection =  utf8 

character_set_results =  utf8 

※上述三行會影響到中文的呈現。




步驟三、將 set character_set_results=big5;   utf8 改成 big5



------補充:---------------------


MySQL中的運行模式為:

信息輸入路徑:client→connection→server

信息輸出路徑:server→connection→results

由於Windows的命名提示字元所使用的文字碼是「Big5」,如果在MySQL中設定Big5之外的文字碼,只要不使用對應文字碼的終端軟體,就會產生亂碼。然而,直接看mysql資料庫內的資料是正常並無亂碼情況,但資料庫設定為「utf-8」,根據上述描述可知命令提示字元與資料庫的文字碼沒有對應,因此才會出現亂碼;相對的也可能在輸出的時候,造成的亂碼情形,故嘗試先修改character_set_results看看,結果改完後就再也無亂碼情況發生。








參考網址:網址一網址二












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>