การเขียนเว็บเพจ ด้วยพีเอชพี (PHP) ติดต่อฐานข้อมูล ระดับกลาง
|
ปรับปรุง : 2560-11-09 (เพิ่ม phptester) |
บทเรียน
1. อาร์เรย์ (Array) 2. แฟ้มข้อความ (Text File) 3. มายเอสคิวแอล (MySQL) 4. การเก็บภาพในมายเอสคิวแอล (Image) 5. ไมโครซอฟต์แอคเซส (Microsoft Access) 6. เขียนแฟ้มภาพ (PNG Header) 7. ส่งข้อมูลเข้าเครื่องบริการ (Uploading) 8. การตรวจสอบ (Verification) | แนะนำเว็บ (Web Guides)
- http://www.thaiall.com/webserver - http://www.thaiall.com/html/html.htm - http://www.thaiall.com/php - http://www.thaiall.com/mysql - http://www.thaiall.com/source - http://www.thaiall.com/programming - http://www.thaiabc.com - http://www.php.net |
วันที่ 1
9.00 - 10.30 อาร์เรย์ 1 - อาร์เรย์ (Array) - การนำอาร์เรย์มาใช้ 10.40 - 12.00 อาร์เรย์ 2 - การค้นข้อมูลในอาร์เรย์ - การจัดเรียงอาร์เรย์ 13.00 - 14.30 เท็กไฟล์ 1 - การสร้างแฟ้มข้อมูลแบบเท็กไฟล์ - การอ่านข้อมูล 14.40 - 16.00 เท็กไฟล์ 1 - การเพิ่มข้อมูล - การลบข้อมูล - การแก้ไขข้อมูล | วันที่ 2
9.00 - 10.30 มายเอสคิวแอล 1 - การอ่านตารางเดียว - การอ่านตารางที่เชื่อมต่อกัน 10.40 - 12.00 มายเอสคิวแอล 2 - การเพิ่ม ลบ แก้ไขข้อมูล 13.00 - 14.30 มายเอสคิวแอล 3 - การใช้ฟังก์ชันต่าง ๆ ในเอสคิวแอล 14.40 - 16.00 มายเอสคิวแอล 4 - การสร้างตารางสำหรับเก็บภาพ - การเพิ่มข้อมูลภาพ - การเรียกภาพมาแสดงผล | วันที่ 3
9.00 - 10.30 ไมโครซอฟต์แอคเซส - การเชื่อมต่อ และอ่านข้อมูลมาแสดงผล - การเพิ่ม ลบ แก้ไขข้อมูล 10.40 - 12.00 เขียนภาพ - การเขียนภาพ - การเขียนภาพที่สัมพันธ์กับฐานข้อมูล 13.00 - 14.30 ส่งแฟ้ม - การส่งแฟ้มเข้าไปเก็บในเครื่องบริการ - การส่งแฟ้มหลายแฟ้ม - การตรวจสอบแฟ้ม - การอ่านแฟ้มในไดเรกทรอรี่ 14.40 - 16.00 การตรวจสอบ - การป้องกันการผิดพลาด - การพิสูจน์ตัวตนของผู้ใช้ |
1. อาร์เรย์ (Array)
- ตัวแปรชื่อเดียว แต่มีได้หลายสมาชิก โดยอาศัยเลขระบุสมาชิก - ตัวบ่งชี้สมาชิกของอาร์เรย์สามารถเป็นข้อความได้ | แบบฝึกหัด ? สร้างอาร์เรย์เก็บชื่อภาพ และเรียกใช้ ? สร้างอาร์เรย์เก็บชื่อแฟ้มเอกสาร และเรียกใช้ |
ex.0101 zz0101.php |
ประกาศอาร์เรย์ทีละค่า <?php $a[0] = "tom"; $a[1] = 65; $a[2] = 97; $a[3] = 161; for($i=0;$i<4;$i++) { echo "$a[$i]<br>"; } ?> |
ex.0102 zz0102.php |
ประกาศอาร์เรย์ครั้งเดียว <?php $a = array("tom",65,97,161); for($i=0;$i<count($a);$i++) echo "$a[$i]<br>"; ?> |
ex.0103 zz0103.php |
ฟังก์ชันแปลง ASCII กับอาร์เรย์ <?php $a = array("tom",65,97); $a[3] = 161; $a[4] = "A"; echo chr($a[2])."<br>"; echo ord($a[4])."<br>"; ?> |
ex.0104 zz0104.php |
การประกาศแบบต่าง ๆ <?php $a = array("tom",65,97,161); $a[count($a)] ="boy"; $a[count($a)] ="one"; echo $a[0].$a{1}; echo $a[count($a) - 1].count($a); echo "<hr size=20 color=black>"; ?> |
ex.0105 zz0105.php |
แสดงการแยก และรวมอาร์เรย์ <?php $a = explode(" ","I am a boy"); echo "$a[0]$a[2]<br>"; $b = implode("a",$a); echo $b; ?> |
ex.0106 zz0106.php |
foreach กับอาร์เรย์ <?php $a = array("tom",65,97,161); foreach($a as $v1) echo $v1; $b = split(" ","I am a boy"); foreach($b as $v2) echo $v2."<br>"; ?> |
ex.0107 zz0107.php |
แสดงภาพจาก array <?php $a = array(); $a[count($a)] = "a1.jpg"; $a[count($a)] = "a2.jpg"; $a[count($a)] = "a3.jpg"; foreach($a as $v) echo "<img src=$v>"; ?> |
ex.0108 zz0108.php |
แสดงข้อมูลพจนานุกรม <?php $a = array(); $a["ant"] = "มดเป็นแมลงชนิดหนึ่ง"; $a["cat"] = "แมวเป็นสัตว์สี่เท้า"; $a["dog"] = "สุนัข(หมา)เป็นสัตว์สี่เท่าไม่ชอบแมว"; $a["fish"] = "ปลาเป็นสัตว์น้ำ"; foreach($a as $k => $v) echo "$k = $v<br>"; ?> |
ex.0109 zz0109.php |
พจนานุกรมแบบเลือกคำจาก select <?php $a = array(); $a["ant"] = "มดเป็นแมลงชนิดหนึ่ง"; $a["cat"] = "แมวเป็นสัตว์สี่เท้า"; $a["dog"] = "สุนัข(หมา)เป็นสัตว์สี่เท่าไม่ชอบแมว"; $a["fish"] = "ปลาเป็นสัตว์น้ำ"; echo "<form action='' method=get><select name=k>"; foreach($a as $k => $v) echo "<option value=$k>$k"; echo "</select><input type=submit></form>"; if (isset($_REQUEST["k"])) { foreach($a as $k => $v) { if ($k == $_REQUEST["k"]) echo "$k = $v<br>"; } } ?> |
ex.0110 zz0110.php |
ค้นหาคำใน String แล้วเน้นคำ <?php $a = array(); $a["ant"] = "มดเป็นแมลงชนิดหนึ่ง"; $a["cat"] = "แมวเป็นสัตว์สี่เท้า"; $a["dog"] = "สุนัข(หมา)เป็นสัตว์สี่เท่าไม่ชอบแมว"; $a["fish"] = "ปลาเป็นสัตว์น้ำ"; echo "<form action='' method=get> <input name=s value=แมว> <input type=submit></form>"; if (isset($_REQUEST["s"])) { $r = $_REQUEST["s"]; foreach($a as $k => $v) { if (stristr($v,$r)) { $v=str_replace($r,"<b>$r</b>",$v); echo "$k = $v<br>"; } } } ?> |
ex.0111 zz0111.php |
นำอาร์เรย์ไปเขียนในตาราง <table width=50% align=center border=1> <?php $a = array(); $a["ant"] = "มดเป็นแมลงชนิดหนึ่ง"; $a["cat"] = "แมวเป็นสัตว์สี่เท้า"; $a["fish"] = "ปลาเป็นสัตว์น้ำ"; foreach($a as $k => $v) echo "<tr><td>$k</td><td>$v</td></tr>"; ?> </table> |
ex.0112 zz0112.php |
พิมพ์ตารางแยกสีละบรรทัด <table width=50% bgcolor=yellow> <?php $a = array(); $a["ant"] = "มดเป็นแมลงชนิดหนึ่ง"; $a["bat"] = "ค้างคาวเป็นสัตว์ปีก"; $a["cat"] = "แมวเป็นสัตว์สี่เท้า"; $a["fish"] = "ปลาเป็นสัตว์น้ำ"; $i = 0; foreach($a as $k => $v) { if ($i % 2 == 0) echo "<tr><td>$k $v</td></tr>"; else echo "<tr bgcolor=red><td>$k $v</td></tr>"; $i++; } ?> </table> |
ex.0113 zz0113.php |
การจัดเรียงค่าในอาร์เรย์ <?php $a = array(9,5,3,6); sort($a); foreach($a as $v) echo $v; rsort($a); foreach($a as $v) echo $v; ?> |
ex.0114 zz0114.php |
ประกาศอาร์เรย์แบบกำหนด Key เป็นข้อความ <?php $age = array("boy"=>12,"tom"=>31,"big"=>22); foreach($age as $v) echo $v; echo "<br>"; foreach($age as $k => $v) echo "$k => $v<br>"; ?> |
ex.0115 zz0115.php |
ประกาศทีละค่า และเรียงตาม key <?php $age["boy"] = 12; $age["tom"] = 31; $age["big"] = 22; ksort($age); foreach($age as $v) echo $v; echo "<br>"; krsort($age); foreach($age as $k => $v) echo "$k => $v<br>"; ?> |
ex.0116 zz0116.php |
จับความเร็ว เมื่อทำงานกับอาร์เรย์ <?php list($usec, $sec) = explode(" ", microtime()); $start = (float)$usec + (float)$sec; for($i=1;$i<=1000000;$i++) { $a = rand(65,90); if (isset($c[$a])) $c[$a]++; else $c[$a] = 1; } ksort($c); foreach($c as $k => $v) echo chr($k)." $k $v<br>"; list($usec, $sec) = explode(" ", microtime()); $stop = (float)$usec + (float)$sec; $s = ($stop - $start) / 1; echo $s. " Seconds"; ?> |
ex.0117 zz0117.php |
รายงานแยกหน้า กับอาร์เรย์ <?php for($i=1;$i<=30;$i++) { $a = rand(65,90); if (isset($c[$a])) $c[$a]++; else $c[$a] = 1; } $tot = count($c); if(isset($_GET["page"])) $page = $_GET["page"]; else $page = 1; $lpp = 5; // line per page $totpage = round(($tot / $lpp) + 0.499); for($p=1;$p<=$totpage;$p++) echo "<a href=?page=$p>$p</a> "; $start = $lpp * ($page - 1) + 1; $stop = $lpp * $page; if ($stop > $tot) $stop = $tot; echo "<hr>"; ksort($c); foreach($c as $k => $v) echo chr($k); echo "<hr>"; $j = 1; foreach($c as $k => $v) { if ($j>=$start && $j<=$stop) echo chr($k)." $k $v<br>"; $j++; } ?> |
2. แฟ้มข้อความ (Text File)
- ถ้าข้อมูลไม่ซับซ้อน Text file น่าสนใจ - นำเสนอตัวอย่างการ อ่านแฟ้ม เพิ่ม ลบ และแก้ไข | แบบฝึกหัด ? ทดสอบกับฟอร์ม หลาย ๆ แบบ ? สร้างระบบสมาชิก |
ex.0201 zz0201.php |
สร้างแฟ้ม และเขียนทับข้อมูลเดิม <?php $f = fopen("data1.txt","w"); fputs($f,"101,200\n"); fputs($f,"102,150\n"); fputs($f,"103,180\n"); fclose($f); ?> |
ex.0202 zz0202.php |
อ่านข้อมูลจากแฟ้มด้วย fopen <?php echo "<pre>"; $f = fopen("data1.txt","r"); while(!feof($f)){ $d = fgets($f,1000); echo "$d<hr color=red>"; } fclose($f); ?> |
ex.0203 zz0203.php |
อ่านข้อมูล แบบตรวจค่าก่อนแสดงผล <?php echo "<pre>"; $f = fopen("data1.txt","r"); while(!feof($f)){ $d = fgetss($f,1000); if ($d) echo "$d<hr color=red>"; } fclose($f); ?> |
ex.0204 zz0204.php |
ตรวจแฟ้มก่อนอ่านข้อมูลมาแสดง <?php if (file_exists("data1.txt")) { $f = file("data1.txt"); foreach($f as $v){ echo $v."|<br>"; } } ?> |
ex.0205 zz0205.php |
พิมพ์เลขลำดับนำหน้าระเบียน <?php $f = file("data1.txt"); for($i=0;$i<count($f);$i++){ echo $i + 1 . " : $f[$i]<br>"; } ?> |
ex.0206 zz0206.php |
อ่านข้อมูลมาแยก field ลงตาราง <?php echo "<table border=1>"; $f = file("data1.txt"); foreach($f as $v){ $d = split(",",$v); if ($d) echo "<tr><td>$d[0]<td>$d[1]"; } echo "</table>"; ?> |
ex.0207 zz0207.php |
หาผลรวมเฉพาะบางเขตข้อมูล <?php $sum = 0; $f = file("data1.txt"); foreach($f as $v){ $d = split(",",$v); $sum += $d[1]; } echo $sum; ?> |
ex.0208 zz0208.php |
เพิ่มข้อมูล 1 ระเบียน <?php $f = fopen("data1.txt","a"); fputs($f,"104,600\n"); fclose($f); ?> |
ex.0209 zz0209.php |
รับข้อมูลจาก form เพิ่มระเบียนใหม่ <form action=''> <input name=id size=5 value=105> <input name=salary size=5 value=280> <input type=submit></form> <?php if (isset($_REQUEST["id"])) { $f = fopen("data1.txt","a"); fputs($f,$_REQUEST["id"].","); fputs($f,$_REQUEST["salary"]."\n"); fclose($f); } ?> |
ex.0210 zz0210.php |
รับข้อมูลจาก form ลบระเบียนเดิม <form action=''> <input name=id size=5 value=106> <input type=submit></form> <?php if (isset($_REQUEST["id"])) { $fo = file("data1.txt"); $fn = fopen("data1.txt","w"); foreach($fo as $v){ $r = split(",",$v); if ($r[0] == $_REQUEST["id"]) echo "del : $r[0]"; else fputs($fn,$v); } fclose($fn); } ?> |
ex.0211 zz0211.php |
รับข้อมูลจาก form เปลี่ยนระเบียนเดิม <form action=''> <input name=id size=5 value=103> <input name=salary size=5 value=500> <input type=submit></form> <?php if (isset($_REQUEST["id"])) { $fo = file("data1.txt"); $fn = fopen("data1.txt","w"); foreach($fo as $v){ $r = split(",",$v); if ($r[0] == $_REQUEST["id"]) { fputs($fn,$_REQUEST["id"].","); fputs($fn,$_REQUEST["salary"]."\n"); } else fputs($fn,$v); } fclose($fn); } ?> |
ex.0212 zz0212.php |
อ่านเว็บเพจหน้านี้มาแสดงแบบลบ html tag <?php echo "<pre>"; $f = fopen("training492.htm","r"); while(!feof($f)) { echo fgetss($f,10000); } fclose($f); ?> |
ex.0213 zz0213.php |
เลือกบางส่วนของเว็บเพจมาแสดง <?php $f = fopen("training492.htm","r"); $found = 0; $start = "<a name=ch0102></a>"; $stop = "<a name=ch0103></a>"; while(!feof($f)) { $d = fgets($f,10000); if (stristr($d,$start)) $found = 1; if (stristr($d,$stop)) $found = 0; if ($found == 1) echo $d; } fclose($f); ?> |
ex.0214 zz0214.php |
อ่านแฟ้มใน directory ปัจจุบันมาแสดงเป็นภาพ <?php $d = opendir("."); while($l = readdir($d)) { if (substr($l,-3) == "jpg") echo "<img src=$l> "; } closedir($d); ?> |
3. มายเอสคิวแอล (MySQL)
- SQL ย่อมาจาก Structured Query Language - memmysql.php ที่ http://www.thaiall.com/perlphpasp/source.pl?9121 - http://www.thaiall.com/mysql มีตัวอย่าง และรายละเอียด | แบบฝึกหัด ? ฝึกสร้างฐานข้อมูล และตารางหลาย ๆ ครั้ง ? ฝึกทั้งแบบ phpmyadmin และ command line |
ex.0301 |
สร้างตารางและเพิ่มข้อมูลผ่าน Command Line mysql> use test; mysql> create table hello( ->m1 int , ->m2 varchar(50), ->m3 double); mysql> create table m(m1 int,m2 varchar(50),m3 int); mysql> insert into m values(11,"น้อย",15); mysql> insert into m values(12,"ต้อง",35); mysql> insert into m values(13,"ปาน",20); mysql> insert into m values(14,"ขาว",5); mysql> insert into m values(15,"ปอง",25); mysql> show databases; mysql> show tables; mysql> show columns from m; mysql> drop table wow1; mysql> drop database oho; |
ex.0302 zz0302.php |
อ่านข้อมูลจาก mysql มาแสดงผล <?php $c = mysql_connect("127.0.0.1:3306","root",""); $q = "select * from m"; $r = mysql_db_query("test",$q); while ($o = mysql_fetch_object($r)) { echo "$o->m1 $o->m2 $o->m3<br>"; } echo "จำนวน ".mysql_num_rows($r); mysql_close($c); ?> |
ex.0303 zz0303.php |
เพิ่มระเบียนใหม่ <?php $c = mysql_connect("127.0.0.1:3306","root",""); $q = "insert into m values(16,'ทอง',26)"; $r = mysql_db_query("test",$q); echo "result "; if ($r) echo "ok"; else echo "error"; ?> |
ex.0304 zz0304.php |
ลบระเบียนตามเงื่อนไข <?php $c = mysql_connect("127.0.0.1:3306","root",""); $q = "delete from m where m1 = 16"; $r = mysql_db_query("test",$q); echo "result "; if ($r) echo "ok"; else echo "error"; ?> |
ex.0305 zz0305.php |
เปลี่ยนข้อมูลตาม m1 <?php $c = mysql_connect("127.0.0.1:3306","root",""); $q = "update m set m2='ใหม่',m3=88 where m1=12"; $r = mysql_db_query("test",$q); echo "result "; if ($r) echo "ok"; else echo "error"; ?> |
ex.0306 zz0306.php |
รวมฟอร์ม และคำสั่งปรับปรุงด้วยกัน <form action=''> m1: <input name=x1><br> m2: <input name=x2><br> m3: <input name=x3><br> <input type=submit value=update> </form> <?php if (isset($_GET["x1"])) { $c = mysql_connect("127.0.0.1:3306","root",""); $q = "update m set "; $q.= "m2='".$_GET["x2"]."',"; $q.= "m3=".$_GET["x3"]." "; $q.= "where m1=".$_GET["x1"]; $r = mysql_db_query("test",$q); echo "result "; if ($r) echo "ok"; else echo "error"; } ?> |
4. มายเอสคิวแอลอีกครั้ง (Again MySQL)
- ตัวอย่างชุดนี้ใช้ แฟ้มสั่งซื้อ แฟ้มสั่งซื้อละเอียด แฟ้มลูกค้า และแฟ้มสินค้า - ถ้าฝึกทำให้ลองใช้ แฟ้มวิชา แฟ้มนักเรียน แฟ้มครู แฟ้มลงทะเบียน (yr, subj, sid, grade) - แฟ้มครู ให้เชื่อมต่อกับแฟ้มวิชา .. ลองวางแผนว่าจะเขียนโปรแกรมอย่างไรนะครับ | แบบฝึกหัด ? เขียนโปรแกรมสร้างตาราง และเพิ่มระเบียนใหม่ ? สร้างตารางใหม่ที่สัมพันธ์กัน และทำรายงานที่สัมพันธ์กัน |
ex.0401 |
SQL Command for 4 Tables use test; create table cust( cust int key auto_increment, cname varchar(50)); create table prod( pro int key auto_increment, pname varchar(50), price double, amt int); create table o( oid int key auto_increment, cust int); create table odtl( oid int, pro int, quan int); insert into cust(cname)values("ต้อย"); insert into cust(cname)values("แดง"); insert into cust(cname)values("หวาน"); insert into prod values("","สมุด",10,100); insert into prod values("","มีด",5,200); insert into prod values("","เข็ม",20,100); insert into o values("",1); insert into odtl values(1,1,20); insert into odtl values(1,3,5); insert into o values("",3); insert into odtl values(2,2,10); insert into odtl values(2,3,15); |
ex.0402 zz0402.php |
ใบสั่งแต่ละใบมีสินค้ากี่รายการ <?php $c = mysql_connect("127.0.0.1:3306","root",""); $q = "select pro,count(pro) as p from odtl group by pro"; $r = mysql_db_query("test",$q); while ($o = mysql_fetch_object($r)) { echo "$o->pro $o->p<br>"; } echo "จำนวน ".mysql_num_rows($r); mysql_close($c); ?> |
ex.0403 zz0403.php |
ใบสั่งแต่ละใบ มีใคร ซื้ออะไรบ้าง <?php $c = mysql_connect("127.0.0.1:3306","root",""); $q = " select o.oid, o.cust, odtl.pro from (o inner join odtl on o.oid = odtl.oid) "; $r = mysql_db_query("test",$q); while ($o = mysql_fetch_object($r)) { echo "$o->oid $o->cust $o->pro<br>"; } mysql_close($c); ?> |
ex.0404 zz0404.php |
ยอดซื้อของใบสั่งแต่ละใบ เป็นเงินเท่าใด <?php $c = mysql_connect("127.0.0.1:3306","root",""); $q = "select odtl.oid, sum(odtl.quan * prod.price) as t from odtl,prod where odtl.pro = prod.pro group by odtl.oid "; $r = mysql_db_query("test",$q); while ($o = mysql_fetch_object($r)) { echo "$o->oid $o->t<br>"; } mysql_close($c); ?> |
ex.0405 zz0405.php |
ยอดซื้อของใบสั่งแต่ละใบ มีใครซื้อ เป็นเงินเท่าใด <?php $c = mysql_connect("127.0.0.1:3306","root",""); $q = "select odtl.oid, o.cust, cust.cname, sum(odtl.quan * prod.price) as t from odtl,prod,o,cust where odtl.pro = prod.pro and o.oid = odtl.oid and o.cust = cust.cust group by odtl.oid "; $r = mysql_db_query("test",$q); while ($o = mysql_fetch_object($r)) { echo "$o->oid $o->cust $o->cname $o->t<br>"; } mysql_close($c); ?> |
ex.0406 zz0406.php |
ดูข้อมูลอย่างละเอียดของใบสั่งที่ 1 <?php $c = mysql_connect("127.0.0.1:3306","root",""); $q = "select o.oid, o.cust, cust.cname from o,cust where o.cust = cust.cust and o.oid = 1"; $r = mysql_db_query("test",$q); while ($o = mysql_fetch_object($r)) { echo "$o->oid $o->cust $o->cname<br>"; } $q = "select prod.pro, prod.pname, odtl.oid, sum(odtl.quan * prod.price) as t from odtl,prod where odtl.pro = prod.pro and odtl.oid = 1 group by odtl.pro"; $r = mysql_db_query("test",$q); while ($o = mysql_fetch_object($r)) { echo "$o->pro $o->pname $o->t<br>"; } mysql_close($c); ?> |
ex.0407 zz0407.php |
ลบตาราง ก่อนสร้างตารางใหม่ <?php $db = "test"; $c = mysql_connect("127.0.0.1:3306","root",""); $q = "drop table if exists million1"; $r = mysql_db_query($db,$q); $q = "CREATE TABLE `million1` ( `a` INT NOT NULL AUTO_INCREMENT , `b` INT NOT NULL , `c` INT NOT NULL , `d` INT NOT NULL , PRIMARY KEY ( `a` ) , INDEX ( `b` ) )"; $r = mysql_db_query($db,$q); ?> |
ex.0408 zz0408.php |
ลบ แล้วเพิ่มระเบียนใหม่จำนวนมาก <?php $db = "par"; echo "Please wait!<br>"; list($usec, $sec) = explode(" ", microtime()); $start = (float)$usec + (float)$sec; // === $db = "par"; $c = mysql_connect("127.0.0.1:3306","root",""); $q= "delete from million1"; $r= mysql_db_query($db,$q); for($i=1;$i<=8000;$i++) { $a= rand(65,90); $q= "insert into million1(b,c,d)values($i,$i,$a)"; $r= mysql_db_query($db,$q); } mysql_close($c); // === list($usec, $sec) = explode(" ", microtime()); $stop = (float)$usec + (float)$sec; $s = $stop - $start; echo $s. " Seconds"; ?> |
ex.0409 zz0409.php |
เลือกข้อมูลมาแสดง จากข้อมูลปริมาณมาก <?php echo "Please wait!<br>"; list($usec, $sec) = explode(" ", microtime()); $start = (float)$usec + (float)$sec; $c = mysql_connect("127.0.0.1:3306","root",""); $q = "select d from million1 limit 0,5"; $r = mysql_db_query("test",$q); while ($o = mysql_fetch_object($r)) { echo "$o->d<br>"; } mysql_close($c); list($usec, $sec) = explode(" ", microtime()); $stop = (float)$usec + (float)$sec; $s = $stop - $start; echo $s. " Seconds"; ?> |
ex.0410 zz0410.php |
เปรียบเทียบการค้นหาจาก index <?php echo "Please wait!<br>"; $start = microtime(); $c = mysql_connect("127.0.0.1:3306","root",""); $q = "select * from million1"; $r = mysql_db_query("par",$q); echo mysql_num_rows($r); gap(); // $start = microtime(); $q = "select * from million1 where c = 7000"; $r = mysql_db_query("par",$q); while ($o = mysql_fetch_object($r)) echo "$o->d "; gap(); // $start = microtime(); $q = "select * from million1 where b = 7000"; $r = mysql_db_query("par",$q); while ($o = mysql_fetch_object($r)) echo "$o->d "; gap(); // mysql_close($c); // function gap (){ global $start; list($usec1, $sec1) = explode(" ", $start); list($usec2, $sec2) = explode(" ", microtime()); $s = ($usec2 + $sec2) - ($usec1 + $sec1); echo "<br>$s Seconds<hr>"; } ?> |
5. มายเอสคิวแอลเก็บภาพ (Image in MySQL)
- สร้างตารางไว้เก็บข้อมูลใน MySQL - สร้างตัวส่ง ตัวนำไปเก็บ และตัวเรียกใช้ | แบบฝึกหัด ? นำไปใช้ร่วมกับตารางอื่น เช่น พนักงาน ? สร้าง Gallery แบบของท่าน |
ex.0501 |
สร้างตารางเก็บภาพ CREATE TABLE file ( id mediumint(8) unsigned auto_increment, datatype varchar(60) default 'application/octet-stream', name varchar(120) default '', size bigint(20) unsigned default '1024', filedate datetime default '0000-00-00 00:00:00', PRIMARY KEY (id) ) TYPE=MyISAM; CREATE TABLE filedata ( id mediumint(8) unsigned auto_increment, masterid mediumint(8) unsigned default '0', filedata blob, PRIMARY KEY (id), KEY master_idx (masterid) ) TYPE=MyISAM ; |
ex.0502 zz0502.php |
ฟอร์มส่งข้อมูล <form action=zz0503.php method=post enctype="multipart/form-data"> <input type=file name=file1> <input type=submit name=submit value=submit> </form> |
ex.0503 zz0503.php |
นำข้อมูลภาพไปเก็บใน MySQL <?php $c = mysql_connect("127.0.0.1:3306","root",""); mysql_select_db("test", $c); if (isset($HTTP_POST_FILES["file1"])) { $SrcPathFile = $HTTP_POST_FILES["file1"]["tmp_name"]; $SrcFileType = $HTTP_POST_FILES["file1"]["type"]; $DstFileName = $HTTP_POST_FILES["file1"]["name"]; clearstatcache(); $time = filemtime($SrcPathFile); $storedate = date("Y-m-d H:i:s", $time); if (file_exists($SrcPathFile)) { $q = "insert into file (datatype, name, size, filedate) values ('"; $q .= $SrcFileType . "', '" . $DstFileName . "', " . filesize($SrcPathFile); $q .= ", '" . $storedate . "')"; if (!$RES = mysql_query($q, $c)) die("มีปัญหากับ : ". $q); $fileid = mysql_insert_id($c); $fp = fopen($SrcPathFile, "rb"); while (!feof($fp)) { $binarydata = addslashes(fread($fp, 65535)); $q = "insert into filedata (masterid, filedata) values ("; $q .= $fileid . ", '" . $binarydata . "')"; if (!mysql_query($q, $c)) die("มีปัญหากับ : ". $q); } fclose($fp); echo "Upload Complete<br>"; echo "<img src=zz0504.php?id=". $fileid . "><br>"; echo "<a href=zz0504.php?id=". $fileid . ">click</a>"; } } ?> |
ex.0504 zz0504.php |
นำภาพออกจาก MySQL มาใช้ <?php $c = mysql_connect("127.0.0.1:3306","root",""); mysql_select_db("test", $c); $nodelist = array(); if (isset($_GET["id"])) { $q = "select * from file where id = " . $_GET["id"]; if (!$RES = mysql_query($q, $c)) die("อ่านข้อมูลไม่ได้" . $q); if (mysql_num_rows($RES) != 1) die("ไม่พบรหัสนี้!" . $q); $FileObj = mysql_fetch_object($RES); $q = "select id from filedata where masterid = " . $_GET["id"] . " order by id"; if (!$RES = mysql_query($q, $c)) die("ไม่พบรหัสนี้!" . $q); while ($CUR = mysql_fetch_object($RES)) { $nodelist[] = $CUR->id; } Header ( "Content-Type: $FileObj->datatype" ); Header ( "Content-Length: " . $FileObj->size ); Header ( "Content-Disposition: attachment; filename=$FileObj->name" ); for ($Z = 0 ; $Z < count($nodelist) ; $Z++) { $q = "select filedata from filedata where id = " . $nodelist[$Z]; if (!$RESX = mysql_query($q, $c)) die("ไม่พบรหัสนี้!" . $q); $DataObj = mysql_fetch_object($RESX); echo $DataObj->filedata; } } else { echo "zz0504.php?id=1"; } ?> |
ex.0505 zz0505.php |
เรียกภาพมาใช้ได้หลายวิธี <img src=zz0504.php?id=1> <form action=zz0504.php method=get> <input name=id value=1> <input type=submit> </form> |
6. ไมโครซอฟต์แอคเซส (Microsoft Access)
- SQL ในตัวอย่างนี้มีเฉพาะ select และ insert - ละตัวอย่าง delete และ update ซึ่งเหมือนตัวอย่างก่อนหน้านี้ | แบบฝึกหัด ? เพิ่มตารางพนักงาน ? เขียนโปรแกรมเพิ่ม ลบ แก้ไขให้สมบูรณ์ |
ex.0601 zz0601.php |
การเชื่อมต่อฐานข้อมูล แบบ DNSLess <?php $db_connection = new COM("ADODB.Connection"); $db_connstr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="; $db_connstr.= realpath("order497.mdb").";"; $db_connection->open($db_connstr); $rs = $db_connection->execute("select * from o"); $rs_fld0 = $rs->Fields(0); $rs_fld1 = $rs->Fields(1); while (!$rs->EOF) { echo $rs_fld0->name . "=".$rs_fld0->value ." "; echo $rs_fld1->name . "=".$rs_fld1->value ."<br>"; $rs->MoveNext(); } $rs->Close(); ?> |
ex.0602 zz0602.php |
เพิ่มระเบียนใหม่ แบบ DNSLess <?php $db_connection = new COM("ADODB.Connection"); $db_connstr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="; $db_connstr.= realpath("order497.mdb").";"; $db_connection->open($db_connstr); $q = "insert into o (cust)values(6)"; if ($rs = $db_connection->execute($q)) echo "insert : ok"; else echo "insert : error"; ?> |
ex.0603 zz0603.php |
การเชื่อมต่อฐานข้อมูล แบบ ODBC <?php $cnx = odbc_connect('o497','',''); $SQL_Exec_String = "select * from o"; $cur= odbc_exec( $cnx, $SQL_Exec_String ); while( odbc_fetch_row( $cur ) ) { $field1= odbc_result( $cur, 1 ); $field2= odbc_result( $cur, 2 ); echo "$field1 $field2 <br>"; } odbc_close($cnx); ?> |
ex.0604 zz0604.php |
เพิ่มระเบียนใหม่ แบบ ODBC <?php $cnx = odbc_connect('o497','',''); $q = "insert into o(cust)values(17)"; if ($cur= odbc_exec( $cnx, $q )) echo "insert : ok"; else echo "insert : error"; ?> |
7. เขียนแฟ้มภาพ (PNG Header)
- PNG ย่อมาจาก Portable Network Graphics (PNG image format) [ libpng.org ] - JPEG ย่อมาจาก Joint Photographic Experts Group - GIF ย่อมาจาก Graphics Interchange Format | แบบฝึกหัด ? วาดรูปอื่นดู ? รับคำสั่งจากฟอร์มไปกำหนดรูป ? เขียนเลขที่อ่านได้จากฐานข้อมูล |
ex.0701 zz0701.php |
เขียนอักษร 2 บรรทัด <?php header("Content-type: image/png"); $im = @imagecreate (120,60); $yellow = ImageColorAllocate($im, 255, 255, 0); imagefill($im, 0, 0, ImageColorAllocate($im, 0, 0, 0)); imagestring ($im, 1, 5, 10, "thai", $yellow); imagestring ($im, 5, 50, 20, "lampang", $yellow); imagepng ($im); imagedestroy($im); ?> |
ex.0702 zz0702.php |
เขียนลายเส้นแบบต่าง ๆ <?php header("Content-type: image/png"); $im = @imagecreate (120,60); $yellow = ImageColorAllocate($im, 255, 255, 0); imagefill($im, 0, 0, ImageColorAllocate($im, 0, 0, 0)); imageline($im, 5, 15, 110, 55, $yellow); imagerectangle($im, 5, 20, 80, 40, $yellow); imagearc($im, 30, 30, 15, 50, 0, 280, $yellow); imagepng ($im); imagedestroy($im); ?> |
ex.0703 zz0703.php |
อ่านภาพมาแสดง <?php header("Content-Type: image/png"); $fn=fopen("a3.jpg","r"); fpassthru($fn); ?> |
ex.0704 zz0704.php |
เปิดภาพพร้อมเขียนตัวอักษร <?php $im = imagecreatefrompng("a3.png"); $yellow = ImageColorAllocate($im, 255, 255, 0); imagestring ($im, 5, 1, 10, "THAI", $yellow); imagepng ($im); imagedestroy($im); ?> |
8. ส่งข้อมูลเข้าเครื่องบริการ (Uploading)
- ถ้ามี FTP หรือ File manager แล้วเทคนิคนี้ก็ไม่จำเป็น - managefile.php ที่ http://www.thaiall.com/perlphpasp/source.pl?9102 | แบบฝึกหัด ? ถ้า upload หบายแฟ้มจะทำอย่างไร ? unlink ใช้ลบแฟ้มได้ แล้วใช้อย่างไร |
ex.0801 zz0801.php |
ฟอร์มส่งแฟ้ม <form action=zz0802.php enctype="multipart/form-data" method=post> <input type=file name=uploadfile> <input type=submit> </form> |
ex.0802 zz0802.php |
นำแฟ้มเข้า Server <?php if (isset($_FILES["uploadfile"]["name"])) { $tmp = $_FILES["uploadfile"]["tmp_name"]; if(copy($tmp,"./".$_FILES["uploadfile"]["name"])) echo "upload : process"; else echo "upload : error"; } ?> |
ex.0803 zz0803.php |
ตรวจสอบก่อนลบแฟ้ม <?php if (file_exists("l.php")) { unlink("l.php"); } ?> |
ex.0804 zz0804.php |
โปรแกรมส่งแฟ้มแบบมีฟอร์มในตัว <form action='' enctype="multipart/form-data" method=post> <input name=new value="new.jpg"> <input type=file name=uploadfile> <input type=submit> </form> <?php if (isset($_POST["new"])) if (copy($_FILES["uploadfile"]["tmp_name"],"./".$_POST["new"])) echo "upload : completely"; ?> |
9. การตรวจสอบ (Verification)
- ไม่มีตัวอย่างการลบ และแก้ไข เพราะน่าจะดูจากส่วนของ MySQL ได้ | แบบฝึกหัด ? ลองรับคำสั่งจากฟอร์ม ? ลองเขียนส่วน delete และ update |
ex.0901 zz0901.php |
การตรวจรหัสผ่าน <form action=''> <input name=s value="a"> <input type=submit> </form> <?php $p = '$1$WI5.ni4.$B6ZHKHpVRFhzzkMpQRp8b1'; if (isset($_GET["s"]) && crypt($_GET["s"],$p) == $p) echo "pass"; ?> |
ex.0902 zz0902.php |
การเข้ารหัสข้อมูลแบบต่าง ๆ <pre><?php $a = 'ลอง/aaa // \ // \ '; // Un-quote string quoted with addslashes() echo stripslashes($a)."\n"; # Output: ลอง/aaa // // // Quote string with slashes echo addslashes($a)."\n"; # Output: ลอง/aaa // \\ // \\ // URL-encodes string echo urlencode($a)."\n"; # Output: %C5%CD%A7%2Faaa+%2F%2F+%5C+%2F%2F+%5C+ // Decodes URL-encoded string echo urldecode(urlencode($a))."\n"; # Output: ลอง/aaa // \ // \ // Convert special characters to HTML entities echo htmlspecialchars($a)."\n"; # Output: ลอง/aaa // \ // \ // Convert all applicable characters to HTML entities echo htmlentities($a)."\n"; # Output: Åͧ/aaa // \ // \ // Encodes data with MIME base64 echo base64_encode($a)."\n"; # Output: xc2nL2FhYSAvLyBcIC8vIFwg // Decodes data encoded with MIME base64 echo base64_decode(base64_encode($a))."\n"; # Output: ลอง/aaa // \ // \ // One-way string encryption (hashing) (ผลไม่ซ้ำกัน) echo crypt($a)."\n"; # Output: $1$.Q1.tg/.$rH.lR8C2COYhyWZv4Ddkw0 ?> |
ex.0903 zz0903.php |
ฟอร์มส่งรหัสผู้ใช้ และรหัสผ่าน <form action=zz0904.php> <table> <tr><td>UserName:<td><input name=u><br> <tr><td>Password:<td><input name=p type=password><br> </table> <input type=submit value=Login> </form> <form action=zz0904.php> <input name=u type=hidden> <input name=p type=hidden value=logout> <input type=submit value=Logout> </form> |
ex.0904 zz0904.php |
ตรวจสอบ และส่งค่าเข้า cookie <?php if (isset($_GET["u"])) { if ($_GET["u"]=="a" && $_GET["p"]=="bbbb") { setcookie("u","ok",time()+3600); echo "Login : Complete<br>"; echo "<a href=zz0906.php>zz0906.php</a>"; } } ?> |
ex.0905 zz0905.php |
ตรวจสอบ และส่งค่าเข้า session <?php session_start(); if (isset($_GET["u"])) { if (strlen($_GET["p"]) < 3) { echo "รหัสผ่านต้องมากกว่า 3 ตัวอักษร"; exit; } if ($_GET["u"]=="a" && $_GET["p"]=="bbbb") { $_SESSION["right"] = "ok"; echo "Login : Complete<br>"; echo "<a href=zz0906.php>zz0906.php</a>"; } else { $_SESSION["right"] = ""; echo "Login : Fail"; exit; } } else exit; ?> |
ex.0906 zz0906.php |
ทดสอบค่า session <?php session_start(); if ($_SESSION["right"]!="ok") { echo "ท่านยังไม่ได้รับสิทธิเข้าใช้"; exit; } ?> <img src=a3.jpg> |
ตัวอย่าง members กับการ signin และ การจัดการ ที่ตรวจสอบสิทธิ์ในแต่ละ script และเก็บ log การเข้าใช้
Example of error code Short code : php+mysql+insert+delete+update (2560) // use phpmyadmin in test database create table members (uid int not null auto_increment, u varchar(50), p varchar(50), listmem boolean, addmem boolean, updmem boolean, addr text, tid varchar(1), sid varchar(1), primary key (uid)); insert into members values (0,"admin","nation",true,true,true,"123 lampang","a","a"); insert into members values (0,"burin","nation",true,true,false,"456 lampang","s","a"); insert into members values (0,"jojo","nation",true,false,false,"789 lampang","c","a"); insert into members values (0,"romeo","nation",true,true,true,"999 lampang","a","r"); insert into members (addmem) values (true); insert into members (addmem) values (0); insert into members (u,p) values ("test","test"); create table types (tid varchar(1), tdesc text); insert into types values ("a","admin"); insert into types values ("s","staff"); insert into types values ("c","customer"); create table status (sid varchar(1), sdesc text); insert into status values ("a","active"); insert into status values ("r","retire"); insert into status values ("l","leave"); create table log (logid int not null auto_increment, u varchar(50), act varchar(20), ip varchar(20), dt varchar(30), primary key (logid)); // index.php <?php session_start(); if(!isset($_SESSION["tid"]) || strlen($_SESSION["tid"]) == 0) exit("<a href=signin.php>signin.php</a>"); else { echo '<a href="signout.php">signout.php</a><br/>'; if($_SESSION["sid"] != "a") { exit("status: inactive"); } if($_SESSION["listmem"] == true) echo '<a href="listmem.php">listmem.php</a><br/>'; if($_SESSION["addmem"] == true) echo '<a href="addmem.php">addmem.php</a><br/>'; if($_SESSION["updmem"] == true) echo '<a href="updmem.php">updmem.php</a><br/>'; if($_SESSION["tid"] == "a") echo '<a href="delmem.php">delmem.php</a><br/>'; } ?> // signin.php <form action="check.php" method="post"> <input name=u><input name=p type=password> <input type=submit></form> // signout.php <?php session_start(); include("keeplog.php"); session_destroy(); echo 'Signout : completely<br/><a href=index.php>back</a>'; ?> // check.php <?php session_start(); $connect = new mysqli("127.0.0.1", "root", "", "test"); $su = $connect->real_escape_string($_POST["u"]); // for ' or 1=1 or ' $sp = $connect->real_escape_string($_POST["p"]); // $result = $connect->query("select * from members where u='" . $su ."' and p='" . $sp ."'"); $result = $connect->query("select * from members where u='" . $_POST["u"] ."' and p='" . $_POST["p"] ."'"); if ($result->num_rows > 0) { if($row = $result->fetch_assoc()) { $_SESSION["u"] = $row['u']; $_SESSION["tid"] = $row['tid']; $_SESSION["sid"] = $row['sid']; $_SESSION["listmem"] = $row['listmem']; $_SESSION["addmem"] = $row['addmem']; $_SESSION["updmem"] = $row['updmem']; } echo 'Signin : completely'; } else { echo 'Signin : fail'; } echo '<br/><a href=index.php>back</a>' ; $connect->close(); include("keeplog.php"); ?> // listmem.php <?php session_start(); if(!isset($_SESSION["tid"]) || $_SESSION["listmem"] == false || $_SESSION["sid"] != "a") exit('Access denied<br/><a href=index.php>back</a>'); include("keeplog.php"); $connect = new mysqli("127.0.0.1", "root", "", "test"); $result = $connect->query("select * from members"); echo $result->num_rows . "<ol>"; if ($result->num_rows > 0) { while($row = $result->fetch_assoc()) { echo "<li>user:" . $row['u'] . " password : ". $row['p'] . " type: " . $row['tid'] . " status: " . $row['sid'] . " addr: " . $row['addr'] . "</li>"; } } echo '</ol><a href=index.php>back</a>' ; $connect->close(); ?> // addmem.php <?php session_start(); if(!isset($_SESSION["tid"]) || $_SESSION["addmem"] == false || $_SESSION["sid"] != "a") { exit('Access denied<br/><a href=index.php>back</a>'); } include("keeplog.php"); ?> <form action="addmem_submit.php" method="post"> <input name=u><input name=p><br/> <input name=tid type=radio value=a checked> Active<br/> <input name=tid type=radio value=s> Staff<br/> <input name=tid type=radio value=c> Customer<br/> <input name=listmem type=checkbox checked> List member<br/> <input name=addmem type=checkbox> Add member<br/> <input name=updmem type=checkbox> Update member<br/> <select name=sid size=4> <option value=a selected>Active</option> <option value=r>Retire</option> <option value=l>Leave</option> </select><br/> <textarea name=addr rows=5 cols=40></textarea><br/><input type=submit value=add> </form> // addmem_submit.php <?php session_start(); if(!isset($_SESSION["tid"]) || $_SESSION["addmem"] == false || $_SESSION["sid"] != "a") exit('Access denied<br/><a href=index.php>back</a>'); include("keeplog.php"); $connect = new mysqli("127.0.0.1", "root", "", "test"); $sql = "insert into members (u,p,tid,listmem,addmem,updmem,sid,addr) values ( '". $_POST["u"] ."','" . $_POST["p"] ."','" . $_POST["tid"] ."', ". onoff("listmem") .",". onoff("addmem") .",". onoff("updmem") .", '" . $_POST["sid"] ."','". $_POST["addr"] ."')"; $result = $connect->query($sql); if($result === FALSE) echo "$sql : failed"; else echo "$sql : succeeded"; echo '<br/><a href=index.php>back</a>' ; $connect->close(); // on to true function onoff($v) { if (isset($_POST[$v])) return 1; else return 0; } ?> // updmem.php <?php session_start(); if(!isset($_SESSION["tid"]) || $_SESSION["updmem"] == false || $_SESSION["sid"] != "a") exit('Access denied<br/><a href=index.php>back</a>'); include("keeplog.php"); ?> <form action="updmem_load.php" method="post"> <input name=u><br/><input type=submit value=update> </form> // updmem_load.php <?php session_start(); if(!isset($_SESSION["tid"]) || $_SESSION["updmem"] == false || $_SESSION["sid"] != "a") { exit('Access denied<br/><a href=index.php>back</a>'); } include("keeplog.php"); $connect = new mysqli("127.0.0.1", "root", "", "test"); $result = $connect->query("select * from members where u='" . $_POST["u"] . "'"); if ($result->num_rows > 0) if($row = $result->fetch_assoc()) { ?> <form action="updmem_submit.php" method="post"> user <input name=u value='<?php echo $row['u']; ?>' readonly><br/> password <input name=p value='<?php echo $row['p']; ?>'><br/> <input name=tid type=radio value=a <?php if ($row['tid'] == 'a') echo 'checked'; ?>> Active<br/> <input name=tid type=radio value=s <?php if ($row['tid'] == 's') echo 'checked'; ?>> Staff<br/> <input name=tid type=radio value=c <?php if ($row['tid'] == 'c') echo 'checked'; ?>> Customer<br/> <input name=listmem type=checkbox <?php if ($row['listmem'] == TRUE) echo 'checked'; ?>> List <br/> <input name=addmem type=checkbox <?php if ($row['addmem'] == TRUE) echo 'checked'; ?>> Add <br/> <input name=updmem type=checkbox <?php if ($row['updmem'] == TRUE) echo 'checked'; ?>> Update <br/> <select name=sid size=4> <option value=a <?php if ($row['sid'] == 'a') echo 'selected'; ?>>Active</option> <option value=r <?php if ($row['sid'] == 'r') echo 'selected'; ?>>Retire</option> <option value=l <?php if ($row['sid'] == 'l') echo 'selected'; ?>>Leave</option> </select><br/><textarea name=addr rows=5 cols=40><?php echo $row['addr']; ?></textarea><br/> <input type=submit value=action></form><?php } echo 'update members : step 2<br/><a href=index.php>back</a>' ; $connect->close(); ?> // updmem_submit.php <?php session_start(); if(!isset($_SESSION["tid"]) || $_SESSION["updmem"] == false || $_SESSION["sid"] != "a") { exit('Access denied<br/><a href=index.php>back</a>'); } include("keeplog.php"); $connect = new mysqli("127.0.0.1", "root", "", "test"); $sql = "update members set p = '". $_POST["p"] ."',tid = '". $_POST["tid"] ."', listmem = ". onoff("listmem") .",addmem = ". onoff("addmem") .",updmem = ". onoff("updmem") .", sid = '" . $_POST["sid"] ."',addr = '" . $_POST["addr"] ."' where u = '". $_POST["u"] ."'"; $result = $connect->query($sql); if($result === FALSE) echo "$sql : failed"; else echo "$sql : succeeded"; echo '<br/><a href=index.php>back</a>' ; $connect->close(); // on to true function onoff($v) { if (isset($_POST[$v])) return 1; else return 0; } ?> // delmem.php <?php session_start(); if(!isset($_SESSION["tid"]) || $_SESSION["tid"] != 'a' || $_SESSION["sid"] != "a") exit('Access denied<br/><a href=index.php>back</a>'); include("keeplog.php"); ?> <form action="delmem_submit.php" method="post"> <input name=u> <br/><select name=sid size=3> <option value=a>Active</option><option value=r>Retire</option><option value=l>Leave</option> </select><input type=submit value=delete></form> // delmem_submit.php <?php session_start(); if(!isset($_SESSION["tid"]) || $_SESSION["tid"] != 'a' || $_SESSION["sid"] != "a") { exit('Access denied<br/><a href=index.php>back</a>'); } include("keeplog.php"); $connect = new mysqli("127.0.0.1", "root", "", "test"); $sql = "update members set sid = '" . $_POST["sid"] ."' where u = '". $_POST["u"] ."'"; $result = $connect->query($sql); if($result === FALSE) echo "$sql : failed"; else echo "$sql : succeeded"; echo '<br/><a href=index.php>back</a>' ; $connect->close(); ?> // keeplog.php <?php // session_start(); // can not repeat this function in include if(isset($_SESSION["u"]) && strlen($_SESSION["u"]) > 0) { $datetime = new DateTime(); $connect = new mysqli("127.0.0.1", "root", "", "test"); $sql = "insert into log (u,act,ip,dt) values( '". $_SESSION["u"] ."','" . $_SERVER["SCRIPT_NAME"] ."','". $_SERVER["REMOTE_ADDR"] ."', '". $datetime->format('Y/m/d H:i:s') ."')"; $result = $connect->query($sql); $connect->close(); } ?> |
|
ตัวอย่าง order in temporary table and reduce quantity
เพื่อแสดงแนวทางการเขียนโปรแกรมในระบบสั่งซื้อ และสั่งซื้อละเอียด ที่ทำงานร่วมกับ temporary table เมื่อเปิดใบสั่งซื้อ และเพิ่มรายการสินค้า จะส่งเข้า temporary เมื่อต้องปิดการขายได้แล้ว ให้กดปุ่ม confirm จึงจะย้ายข้อมูลจาก temporary table ไปยัง main table และแสดงการตัด stock กับ field quantity เมื่อมีการเลือกสินค้า โดยมีโปรแกรมทำงาน 5 โปรแกรม คือ 1) myorderform.php (ตัวหลัก) , 2) insertorderform.php (รับข้อมูลสินค้า) , 3) insertorderprocess.php (บันทึกและรอรับสินค้าใหม่) , 4) insertorderconfirm.php (ยืนยัน บันทึก และล้าง temporary table ) และ 5) mygetprice.php (คืนราคาตามรหัสสินค้า) Short code : order in temporary table (2560) // use phpmyadmin in test database create table myorders (orderid int, custid int, emplid int, datetime varchar(50), primary key (orderid)); insert into myorders values (1,1,1,"2017/11/04 08:53:21"); insert into myorders values (2,1,2,"2017/11/04 08:54:21"); insert into myorders values (3,2,1,"2017/11/04 08:56:21"); create table myorderdetails (orderid int, proid int, quan int, price double, primary key (orderid, proid)); insert into myorderdetails values (1,3,10,2.5); insert into myorderdetails values (2,6,1,20); insert into myorderdetails values (2,9,20,3); insert into myorderdetails values (3,6,5,5.5); create table myorders_temp (orderid int, custid int, emplid int, datetime varchar(50)); create table myorderdetails_temp (orderid int, proid int, quan int, price double); create table myproducts (proid int, quan int, price double); insert into myproducts values (1,300,10); insert into myproducts values (2,700,5.5); insert into myproducts values (3,100,2); // myorderform.php <?php $connect = new mysqli("127.0.0.1", "root", "", "test"); $result = $connect->query("select orderid from myorders order by orderid desc limit 0,1"); $lastorderid = 1; if ($result->num_rows > 0) if($row = $result->fetch_assoc()) $lastorderid = $row['orderid'] + 1; $connect->close(); ?> <form action=insertorderform.php method=post> <input name=orderid value="<?php echo $lastorderid; ?>"><br/> <input name=custid autocomplete="off"><br/> <input name=emplid autocomplete="off"><br/> <input type=submit value=order_process> </form> // insertorderform.php <?php $dt = new DateTime(); ?> <form action=insertorderprocess.php method=post> <input name=orderid value=<?php echo $_POST["orderid"]; ?> readonly> <input name=custid value=<?php echo $_POST["custid"]; ?> readonly> <input name=emplid value=<?php echo $_POST["emplid"]; ?> readonly> <input name=datetime value=<?php echo $dt->format('Y/m/d H:i:s'); ?> readonly><br/> <input name=proid autocomplete="off"><br/> <input name=quan autocomplete="off"><br/> <input name=price autocomplete="off"><br/> <input type=submit value=orderdetail_process> </form> // insertorderprocess.php <?php $connect = new mysqli("127.0.0.1", "root", "", "test"); if(isset($_POST["custid"])) { $sql = "insert into myorders_temp values (" . $_POST["orderid"] . "," . $_POST["custid"] . "," . $_POST["emplid"] . ",'" . $_POST["datetime"] . "')"; $result = $connect->query($sql); if($result === FALSE) echo "$sql : failed"; else echo "$sql : succeeded"; } echo "<br/>"; $sql = "insert into myorderdetails_temp values (" . $_POST["orderid"] . "," . $_POST["proid"] . "," . $_POST["quan"] . "," . $_POST["price"] . ")"; $result = $connect->query($sql); if($result === FALSE) echo "$sql : failed"; else echo "$sql : succeeded"; echo "<br/>"; $result = $connect->query("select * from myproducts where proid = " . $_POST["proid"]); if ($result->num_rows > 0) { if($row = $result->fetch_assoc()) { $quan = $row["quan"]; $sql="update myproducts set quan=".($quan - $_POST["quan"]) ." where proid=".$_POST["proid"]; $result_pro = $connect->query($sql); if($result_pro === FALSE) echo "$sql : failed"; else echo "$sql : succeeded"; } } if($result === FALSE) echo "$sql : failed"; else echo "$sql : succeeded"; ?> <script type="text/javascript"> function getprice() { var xmlHttp; try { xmlHttp=new XMLHttpRequest(); } catch (e) { try { xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { return false; } } } xmlHttp.onreadystatechange=function() { if(xmlHttp.readyState==4) { document.orderform.price.value=xmlHttp.responseText; } } xmlHttp.open("GET","mygetprice.php?proid=" + document.orderform.proid.value , true); xmlHttp.send(null); } </script> <form name=orderform action=insertorderprocess.php method=post> <input name=orderid value=<?php echo $_POST["orderid"]; ?> readonly> <input name=datetime value=<?php echo date('Y/m/d H:i:s'); ?> readonly><br/> <input name=proid onkeyup="getprice();" autocomplete="off"><br/> <input name=quan autocomplete="off"><br/> <input name=price readonly><br/> <input type=submit value=orderdetail_process> </form> <?php $result = $connect->query("select * from myorderdetails_temp"); echo $result->num_rows . "<ol>"; if ($result->num_rows > 0) { $sum = 0; while($row = $result->fetch_assoc()) { $sum += ($row['quan'] * $row['price']); echo "<li> [proid = " . $row['proid'] . " ] ". $row['quan'] . " * " . $row['price'] . " = " . ($row['quan'] * $row['price']) . "</li>"; } } echo "<br/>sum = $sum</ol><a href=insertorderconfirm.php>confirm this order and save</a>" ; $connect->close(); ?> // insertorderconfirm.php <?php $connect = new mysqli("127.0.0.1", "root", "", "test"); $sql = "insert into myorders select * from myorders_temp"; $result = $connect->query($sql); if($result === FALSE) echo "$sql : failed"; else echo "$sql : succeeded"; echo "<br/>"; $sql = "insert into myorderdetails select * from myorderdetails_temp"; $result = $connect->query($sql); if($result === FALSE) echo "$sql : failed"; else echo "$sql : succeeded"; echo "<br/>"; $sql = "delete from myorders_temp"; $result = $connect->query($sql); if($result === FALSE) echo "$sql : failed"; else echo "$sql : succeeded"; echo "<br/>"; $sql = "delete from myorderdetails_temp"; $result = $connect->query($sql); if($result === FALSE) echo "$sql : failed"; else echo "$sql : succeeded"; $connect->close(); ?> <br/><a href=myorderform.php>new orderid</a> // mygetprice.php <?php $connect = new mysqli("127.0.0.1", "root", "", "test"); $result = $connect->query("select price from myproducts where proid =" . $_GET["proid"]); if ($result->num_rows > 0) if($row = $result->fetch_assoc()) echo $row['price']; $connect->close(); ?> |
|
"Imagination is more important than knowledge" - Albert Einstein |