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

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

    2012年7月10日 星期二

    PHP+MySQL課程 -- 20120710

    判斷流程一:

    if  (boolean)
    {
    true  要執行的工作;
    }
    else
    {
    false 要執行的工作;
    }

    ----------------------------------------------------------
    $a == $b (a等於b)
    $a != $b  (a不等於b)
    $a >= $b (a大等於b)
    $a <= $b (a小等於b)
    $a > $b   (a大於b)
    $a < $b   (a小於b)
    ----------------------------------------------------------

    舉例:(PHP程式中,參雜HTML語法)

    <?php
    $a=32;
    if($a>=60){

    ?>
    <stonge>成績passed!!</stonge>      // HTML語法
    <?php
    }
    else
    {

    ?>
    <em>成績未達最低標準!!</em>     // HTML語法
    <?php
    }   
    ?>


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

    判斷流程二:

    if (boolean)
    {
    要執行的工作(true);
    }
    elseif
    {
    要執行的工作(ture);
    }
    esle
    {
    '其他'要執行的工作;
    }


    舉例:(PHP程式中,參雜HTML語法)

    <?php
    $b=88;
    if ($b>=90){

    ?>
    <strong>恭喜您拿[優]等!!</strong>    // HTML語法
    <?php
    }
    elseif($b>=80){

    ?>
    <strong>恭喜您拿[甲]等!!</strong>   // HTML語法
    <?php
    }
    else
    {

    ?>
    <strong><font color='red'>您拿了[乙]等以下!</font></strong>   // HTML語法
    <?php
    }
    ?>

    -----------------------------------------------------------------------------
    舉例:(function 與 return 與 array 與 ifelse..綜合用法)

    <?php
    $arr=array('name'=>'jacky','score'=>'78');
    function comment($a){
    if ($a>=90){
     return '優等';
    }
    elseif($a>=80){
     return '甲等';
    }
    else
    return '乙等';
    }
    ?>
    <!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>

    <table width="800" border="1" cellspacing="0" cellpadding="0">
      <tr>
        <th scope="col">姓名</th>
        <th scope="col">分數</th>
        <th scope="col">級等</th>
      </tr>
      <tr>
        <td align="center"><?php echo $arr['name']  ?></td>
        <td align="center"><?php echo $arr['score'] ?></td>
        <td align="center"><?php echo comment($arr['score'])?></td>
      </tr>
    </table>

    </body>
    </html>

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

    循環流程:(迴圈loop)
    while (true)                                 →條件符合,繼續往下跑!
    true 繼續要執行的工作}         → 執行完畢後,將值再丟回 while判斷!

    舉例:

    <?php
    $i=1;
    while($i<=10)              
    {
     echo '<p>'.$i.'</p>';
     ++$i;                              //再將值丟回到while判斷}
    ?>




    2012年7月5日 星期四

    PHP+MySQL課程 -- 20120705

    pintf的用法:

    變數出現的前後順序會影響到%s帶入的值,但也例外的情形,如下列舉例的[多變形]。

    舉例:
    ------------------------------------------------------------------
    基本型
    <?php
    $name='jacky';
    $area='taiwan';
    $age='30';
    printf('<p>%s lives in %s.</p>',$name,$area,$age);
    ?>

    結果:jacky lives in taiwan.
    ----------------------------------------------------------------
    多變型
    <?php
    $name='jacky';
    $area='taiwan';
    $age='30';
    printf('<p>%s lives in %s.</p><p>%1$s is %s.',$name,$area,$age);
    ?>

    結果:
    jacky lives in taiwan.
    jacky is 30.

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


    Constants常數(不變的值)
    • const    →  此常數php 5.3版本以上才有支援
    • define(名稱,,true)
    true:表示[常數可忽略大小寫]
    false(預設值):表示[前後常數必須相同才可]

    舉例:
    ------------------------------------------
    常數 const 用法:
    <?php
    const kk='Jack';
    printf('<p>%s.</p>',kk);
    ?>
    -------------------------------------------
    define 用法:
    <?php
    const qq='mark';
    define('mary','Mary',true);
    printf('<p>%s and %s.</p>',qq,MARY);
    ?>
    -----------------------------------------------
    PHP的版本
    <?php
    echo PHP_VERSION;
    ?>
    -------------------------------------------------------------------------

    array(陣列)
    $arr=array('名稱'=>'值','名稱2=>'值','名稱3=>'值'....)
    $arr['名稱'] ~ 對應的值.

    ----------------------------------------------------------------------------
    簡單型:
    <?php
    $arr=array('name'=>'jacky','area'=>'Taiwan');
    printf('<p>%s lives in %s</p>',$arr['name'],$arr['area']);
    echo '<p>'.$arr['name'].'</p>';
    ?>
    ---------------------------------------------------------------------------
    多變型:
    <?php
    $arr=array('name'=>'jacky','area'=>'Taiwan');
    printf('<p>%s lives in %s</p>',$arr['name'],$arr['area']);
    $arr['age']=30;
    $arr['marry']='yes';
    printf('<p>%s is %s years old.</p><p>%s or No ??</p>',$arr['name'],$arr['age'],$arr['marry']);
    ?>
    ------------------------------------------------------------------------------
    var_export()用法:

    印出可供程式使用的資料內容!!

    舉例:
    <?php
    $arr2=array('mary','jack','mark');
    printf('<p>%s and %3$s or %2$s.</p>','mary','jack','mark');
    $arr2[]='allen';           //後來再增加的
    $arr2[]='milk';           //後來再增加的
    printf('<p>%s</p>',var_export($arr2));
    ?>

    結果:
    mary and mark or jack.
    array ( 0 => 'mary', 1 => 'jack', 2 => 'mark', 3 => 'allen', 4 => 'milk', )
    ----------------------------------------------------------------------------------

    判斷式用法:
    [判斷] ? [true][false]
    判斷是否為true 或 false,如果為true的話,執行中間;反之就執行右邊。

    舉例:

    <?php
    $arr=array('name'=>'jack','marrige'=>false);
    printf('<p>%s is %s</p>',$arr['name'],$arr['marrige']? 'marriged':'single');
    ?>

    結果:jack is marriged


    PHP心得 -- 20120705

    表單傳遞的方式:

    GET傳送方法:

    表單資料會以[字串]的方式附加在動作欄指定的URL後面,一起傳送到下一個頁面去,URL與表單資料中間會以?(問號符號)區隔開來,這種方式缺乏隱密性,且有資料量的限制

    POST傳送方法:

    表單資料則放在HTTP檔頭資訊中,看不到傳遞內容,所以比較安全,資料量也沒有限制,但費時較久

    • 編碼類型只有在以POST方式傳遞時,才能使用。
    • text/plain類型,可避免任何十六進位的編碼格式,避免您收到都是亂碼的信件。

    2012年7月3日 星期二

    PHP+MySQL課程 -- 20120703

    PHP註解方式:
    • //文字文字
    • #文字文字
    • /* 文字文字 */
    ---------------------------------------------------------------------------
    ※Function 函數取名時,不可相同,會出現錯誤!!(如下)

    舉例一:

    <?php
    function f($x){
      echo "<p>$x</p>"; 
      $x+=100;           
      return $x;        
    }
      $k=f(10);
      echo "<p>$k</p>";
    ?>

    執行結果:10
                        110
    ------------------------------------
    <?php
    function g($a,$b){
     echo "<p>$b</p>";
     $a+=150;
     return $a;
    }
    $c=g(10,'how are you ??');
    echo "<p>$c</p>";
    ?>
    執行結果:how are you ??
                        160
    ---------------------------------------

    舉例二:

    <?php
    function f($x){
    echo "<p>$x</p>";
    $x+=100;
    return $x;
    }
    $k=f(10);
    echo "<p>$k</p>";
    ?>
    ------------------------------------
    <?php
    function f($a,$b){
    echo "<p>$b</p>";
    $a+=150;
    return $a;
    }
    $c=g(10,'how are you ??');
    echo "<p>$c</p>";
    ?>
    執行結果:
    Fatal error: Cannot redeclare f() (previously declared in C:\XAMPP\htdocs\phptest\0702-function.php:10) in C:\XAMPP\htdocs\phptest\0702-function.php on line 25


    ----------return用法:---------------------------------

    舉例:
    <?php
    function discount($num,$disc){
     $num *= $disc;
     return $num;
    }
    echo "衣服原價1000元";
    echo "<p>打89折後的價格=".discount(1000,0.89)."元</p>";
    echo "<p>打69折後的價格=".discount(1000,0.69)."元</p>";
    ?>

    執行結果:
    衣服原價1000元
    打89折後的價格=890元
    打69折後的價格=690元



    ---------printf用法:-----------------------------

    print($x)  → 列印單筆

    echo($x,$y...) → 列印多筆

    printf('文字文字 %s ',v1,v2,v3.....)


    舉例:
    <?php
    $dd=100;
    $ee=200;
    printf('%s + %s',$dd,$ee);

    ?>

    執行結果:100 + 200