2012年2月5日 星期日

PHP-極簡單之接收POST的資料&Insert到mysql資料表



 db_conn.php
<?php
$link=mysql_connect("localhost","root","root") or die ("連線失敗");
mysql_select_db("guestboard");
mysql_set_charset('utf8',$link);
?>
index.php
<html>
<body>
<form name="form1" method="POST" action="process.php">
帳號<input type="text" name="username" size="30"/><br/>
密碼<input type="text" name="password"size="30"/>
<input type="submit" value="送出"/>
<input type="reset" value="提交"/>
</form>
</body>
</html>
process.php
<?php
include ("db_conn.php");
$username = $_POST["username"];
$password = $_POST["password"];
$sql="INSERT INTO user (username, password) VALUES ('$username','$password')";
$result=mysql_query($sql);
echo $username;
echo $password;
?>


<script>
alert ("申請成功!");
</script>


PHP網頁處理:
GET POST 各有好處
若表單沒有設定method,則預設為GET
使用POST傳送表單,則接收的變數為$_POST
表單一定要包含在<body>標籤裡否則會傳送空值到資料庫。(有時候只會記得打html與form標籤卻忘了body標籤)
不論是$_GET或是$_POST都是超全域變數。


接收表單方式:
POST
$_POST[“欄位名稱”];
GET
$_GET[“欄位名稱”];

 (* $_POST 與 &_GET 最好都是英文大寫)



GETPOST優缺
GET
POST
不適合用來傳帳號密碼
適合較有隱密性的資料傳送
無法傳送大量資料,加上URL頂多255字元
可以傳送大量資料
資料會紀錄在網址上,適合做分頁
切換網頁不能在網址後面加上參數
如果不設定表單的method,會設定GET為預設值


BMI計算
分兩頁面;一頁為bmi.php另一頁為bmi_process.php(接收表單)

bmi.php
<html>
<head>
</head>
<body>
<form name="form1" method="post" action="bmi_process.php">
BMI計算<br/>
身高: <input type="text" name="height" size="30"/>cm<br/>
體重: <input type="weight" name="weight" size="30"/>kg<br/>
<input type="submit" value="送出計算">
<input type="reset" value="重設">
</form>
</body>
</html>

bmi_process.php
<?php
$height=$_POST["height"];
$weight=$_POST["weight"];
$changm=$height/100;
$bmi=$weight/($changm*$changm);
echo "你好,你的BMI值是".$bmi."<br/>";
if($bmi<18.5)
        echo "BMI<18.5,你體重太輕了";
if($bmi>18.5 && $bmi<24){
        echo "此數值的BMI是正常的";
}
?>

加入javascript驗證欄位(其實也不是什麼很嚴謹的驗證,寫好玩的而已~)

補在bmi.php<head>

<head>
<script>
function check(){
var write_h=document.form1.height.value;
var write_w=document.form1.weight.value;
if(write_h==""){
        alert ("請填入身高");
        return false;
}
if(write_w==""){
        alert ("請填入體重");
        return false;
}
}
</script>
</head>

2012年2月4日 星期六

PHP-函數.類別跟物件的筆記

<!--建立具兩個參數的函數,可做加減乘除,並顯示出來-->
<?php
function add($x,$y)
{
        return $x+$y;
}
function substract($x,$y){
        return $x-$y;
}
function doul($x,$y){
        return $x*$y;
}
function addition($x,$y){
        return $x/$y;
}
echo "10+2=".add(10,2)."<br/>";
echo "10-2=".substract(10,2)."<br/>";
echo "10*2=".doul(10,2)."<br/>";
echo "10/2=".addition(10,2)."<br/>";
?>
return是用來回傳一個值,如果沒有要回傳值就不用return
函數命名的原則:

(1)不分大小寫
(2)函數裡還可以用來包含其他函數或是類別
(3)PHP裡不可重新定義同樣名子的函數
不一定要在呼叫函數之前就建立函數。


傳值(call by value)跟傳址(call by reference): 就是指定變數的傳遞方式。
傳值格式:

 函數名稱($參數,...);
傳址格式:
函數名稱(&$參數,...)


PHP5.0開始建構元統一寫成 _ _construct();
<!--試做一類別來計算四方型的面積和週長,長=10cm,寬=5cm(網路上看到的題目)-->
<?php
class Count{
      public $x;
      public $y;
      public function area(){
             return $this->x*$this->y;
      }
      public function alllong(){
             return $this->x*2+$this->y*2;
      }
     
}
$square=new Count();
$square->x=10;
$square->y=15;
echo "面積是:".$square->area()."<br/>";
echo "周長是:".$square->alllong();
?>



public $x; 相當於 var $x;
$this和->是指物件本身,->用來存取物件的成員。
::這個運算子提供了一個功能就是不用建立物件。

<?php
class myclass{
        public function add($x=1,$y=2){echo $x+$y;}
}
myclass::add();
?>


在類別裡面可以定義常數,但是在類別裡定義的話呢。必須將常數關鍵字改成const
如果要存取類別裡面的常數的話,也是可以不用建立物件,改用::存取。
<?php
class MyWeight{
        const Weight=48;
        function display(){
                echo MyWeight::Weight;
        }
}
MyWeight::display();
?>


<!--定義一個room的類別,room類別有4個屬性,分別是roomNum(房號),roomSize(),roomPeople(幾人),roomMonth(),
建構函式有4個參數為num.size,people,month,來設定四個屬性的初始值,
建立四個方法 roomNum().roomSize(),roomPeople(),roomMonth();
最後顯示 某某某住1314號房,房間約5坪大,1人住,住了2個月
-->
<?php
class room{
public $roomNum;
public $roomSize;
public $roomPeople;
public $roomMonth;
function __construct($num,$size,$people,$month){
        $this->roomNum=$num;
        $this->roomSize=$size;
        $this->roomPeople=$people;
        $this->roomMonth=$month;
}
function roomNum(){
        return $this->roomNum;
}
function roomSize(){
        return $this->roomSize;
}
function roomPeople(){
        return $this->roomPeople;
}
function roomMonth(){
        return $this->roomMonth;
}
}
$obj=new room(1314,5,1,2);
echo "某某某住在".$obj->roomNum()."號房,房間約".$obj->roomSize()."坪大,".$obj->roomPeople()."人住,住了".$obj->roomMonth()."個月";
?>


<!--最後結果:某某某住在1314號房,房間約5坪大,1人住,住了2個月-->



另外這裡有費式數列寫法: 

http://blog.qoding.us/2012/01/php-fibonacci-sequence/

Vue multiselect set autofocus and tinymce set autofocus

要在畫面一進來 focus multiselect 的方式: 參考: https://jsfiddle.net/shentao/mnphdt2g/ 主要就是在 multiselect 的 tag 加上 ref (例如: my_multiselect), 另外在 mounted...