2012年2月18日 星期六
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 最好都是英文大寫)
GET與POST優缺
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-函數.類別跟物件的筆記
<!--建立具兩個參數的函數,可做加減乘除,並顯示出來-->
return是用來回傳一個值,如果沒有要回傳值就不用return
函數命名的原則:
(1)不分大小寫
(2)函數裡還可以用來包含其他函數或是類別
(3)PHP裡不可重新定義同樣名子的函數
不一定要在呼叫函數之前就建立函數。
傳值(call by value)跟傳址(call by reference): 就是指定變數的傳遞方式。
傳值格式:
函數名稱($參數,...);
傳址格式:
函數名稱(&$參數,...)
PHP5.0開始建構元統一寫成 _ _construct();
public $x; 相當於 var $x;
$this和->是指物件本身,->用來存取物件的成員。
::這個運算子提供了一個功能就是不用建立物件。
在類別裡面可以定義常數,但是在類別裡定義的話呢。必須將常數關鍵字改成const
如果要存取類別裡面的常數的話,也是可以不用建立物件,改用::存取。
<?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/>";
?>
|
函數命名的原則:
(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個月-->
訂閱:
文章 (Atom)
Vue multiselect set autofocus and tinymce set autofocus
要在畫面一進來 focus multiselect 的方式: 參考: https://jsfiddle.net/shentao/mnphdt2g/ 主要就是在 multiselect 的 tag 加上 ref (例如: my_multiselect), 另外在 mounted...
-
有一次我在開branch的時候: $ git checkout -b winwu/dev 發生了這個錯誤: fatal: Not a git repository (or any of the parent directories): .git 不過,起因不是重...
-
最近工作常常在 windows 跟 Mac, Linux 上切換來切換去,發現在 Mac 掛磁碟機近來的 Repo 莫名其妙都進 git status 變成需要 diff 的檔案,明明也沒修改什麼,也有可能是因為用 afp 掛進來的,然後我也完全忘記有檔案權限這件事情,還好同事英...
-
繼上次我寫過一篇筆記 : HTML製作edm的技巧與問題 最近發現即便我遵守一些製作edm或是email信件的規則,一樣會有在各大mail system(各大信箱,ex:Microsoft outlook, gmail, hotmail, Yahoo mail....)出現各...