‏إظهار الرسائل ذات التسميات PHP STUDY. إظهار كافة الرسائل
‏إظهار الرسائل ذات التسميات PHP STUDY. إظهار كافة الرسائل

ep4 การส่งข้อมูลของแบบฟอร์ม

 ในตอนนี้เราจะมาฝึกเขียนโค้ดคำสั่งจัดการข้อมูลของฟอร์มกัน 

ซึ่งภาษา PHP จะมีตัวแปรชนิด superglobal ที่สามารถเรียกใช้งาน 2 วิธีคือ $_GET กับ S_POST 

โดยทั้งสองตัวแปร จะมีหน้าที่สำหรับการ รวบรวมข้อมูลหรือ data collect จากแบบฟอร์ม   

เราสามารถใช้ได้ทั้งแบบ get และแบบ post สำหรับ บทความนี้เราจะมาฝึกใช้งานตัวแปร Post กัน 

โดยใช้แท็ก <form action="ชื่อไฟล์" method="POST">

สร้างไฟล์ ชื่อ register_show.php

ในแท็กพื้นฐาน 

<html>

<body>

Name <?php   echo $_POST ["Firstname"]; ?> <br>

ข้อความแสดงด้านหน้ากำกับคล้าย label จากนั้น เปิดด้วยแท็ก coding ภาษา PHP แล้ว ใช้คำสั่งแสดงข้อมูลหรือ echo รับค่าจากฟอร์ม 

ทำต่อในคอลัมน์ต่อไปตามลำดับ จนครบ แล้วลองทดสอบผลการทำงาน

Last name

Phone 

Class 

</body>

</html>

เริ่มต้นเขียนภาษา PHP ด้วยตนเอง EP3 การสร้างฟอร์ม

 ตอนที่สาม เราจะมาสร้างฟอร์มสำหรับให้ คนกรอกข้อมูลที่เราต้องการจัดเก็บ กรอกเข้ามากัน 

แท็กแรกของฟอร์ม 

<form>


..... ใส่ส่วนต่างๆของแบบฟอร์ม เช่น ข้อความให้กรอก ตัวเลือกให้คลิก และคำสั่งให้เริ่มการทำงาน 

</form>


เราเขียนง่ายๆ โดยใช้แท็ก input หรือนำเข้าข้อมูล

เราจะได้รู้จัดชนิดของข้อมูล คือ text หมายถึงข้อความ 

ปุ่ม radio ไม่ใช่วิทยุนะครับ คือปุ่มที่สามารถให้เลือกข้อมูลตามที่เราต้องการได้ 

แท็ก <label>   </lable> สำหรับเขียนป้ายข้อความกำกับ

ปุ่มบันทึกข้อมูล save หรือปุ่ม submit เพื่อให้ code คำสั่งที่เรากำลังเริ่มต้นศึกษา ทำงานหรือ take action ตามที่เราต้องการกัน 

ตามตัวอย่าง เก็บข้อมูล ชื่อแรก first name 

ข้อมูลนามสกุล Lastname

ข้อมูลหมายเลขโทรศัพท์ phone

และข้อมูลระดับชั้นการเรียน class



<form>
  <label for="Firstname"> Firstname:</label><br>
<input type="text" id="Firstname" name="Firstname"><br>
<label for="Lasttname"> Lastname:</label><br>
<input type="text" id="Lastname" name="Lastname"><br>
<label for="phone"> phone:</label><br>
<input type="text" id="Phone" name="Phone"><br>
<input type="radio" id="A1" name="class" value="อนุบาล 1">
<label for="A1"> อนุบาล1:</label><br>
<input type="radio" id="A2" name="class" value="อนุบาล 2">
<label for="A2"> อนุบาล2:</label><br>
<input type="radio" id="A3" name="class" value="อนุบาล 3">
<label for="A3"> อนุบาล3:</label><br>
<input type="submit" value="Submit"><br>


</form>



เมื่อจบบทนี้ เราควรได้รู้จักวิธีการสร้างแบบฟอร์มพื้นฐานที่สุดกัน เพื่อนำไปต่อยอด ความรู้และฝึกฝนเพิ่มเติมในโอกาสหน้า 



การสร้างฐานข้อมูล PHPMYADMIN

 หลังจากติดตั้งโปรแกรมจำลองการใช้งานผ่านเว็บหรือ Browser อย่าง XAMPP กันแล้ว 

มาดูขั้นตอนและวิธีการสร้างฐานข้อมูลกัน ไปที่โปรแกรมท่องเน็ตอย่าง Chrome แล้วพิมพ์ 

localhost/ ลงไปแล้ว enter

คลิกไปที่ phpmyadmin 

คลิก new 

ระบุชื่อฐานข้อมูล ลงไปเช่น myDB 

จากนั้นคลิกคำสั่ง  Create 


ขั้นต่อมาให้เราสร้างตารางขึ้นมาใหม่ โดยใช้วิธีคลิกที่ sql 

ฝึกการสร้างตารางขึ้นมาใช้งาน ตามคำสั่งเป็น 



สร้างตารางชื่อ students

Create tabel Students (


    id int(11),
    Firstname varchar(255),
    Lastname varchar(255),
    phone varchar(10),

);

มีคอลัมน์ id ชนิดข้อมูลเป็นตัวเลข ความยาว 11 ตัว

Firsrtname ชนิดข้อมูลเป็น ข้อความ ความยาว 255




ฝึกสร้างฐานข้อมูลนักเรียนด้วย PHP

สร้างตารางเก็บข้อมูลนักเรียน tbl_student

โครงสร้างตารางฐานข้อมูลใน Phpmyadmin

คลิกคำสั่ง SQL แล้วคัดลอก code ในการสร้างตารางฐานข้อมูล

CREATE TABLE `tbl_student` (  `id` int(11) NOT NULL AUTO_INCREMENT,  `fname` varchar(100) NOT NULL,  `lname` varchar(100) NOT NULL,  `phone` varchar(10) NOT NULL,  `class` varchar(255) NOT NULL,  `datecreate` timestamp NOT NULL DEFAULT current_timestamp(),  PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci

ภาพรวมๆ Overview สู่การพัฒนาฐานข้อมูลบนเว็บด้วยตนเอง

 แนวความคิดการพัฒนาฐานข้อมูลด้วยภาษา PHP และ MYSQL 

เพราะว่าเป็นฟรีแวร์ และมีการใช้งานโดยหลายระบบเช่น Facebook เป็นต้น

สำหรับผู้เริ่มต้นศึกษา และเรียนรู้การทำงาน จะต้องมีพื้นฐานด้าน คอมพิวเตอร์เครือข่าย Network และระบบปฏิบัติการเช่น Linux OS หรือ Windows เป็นต้น 

การสื่อสารข้อมูลผ่านระบบเครือข่ายคอมพิวเตอร์ภายในองค์กร หรือระหว่างองค์กร Fiber Optic Network for instance 

การดาวโหลดและติดตั้งแม่ข่ายจำลอง Web Service เช่น XAMPP ,APACHE2 เป็นต้น 

https://www.apachefriends.org/download.html

การดาวโหลดติดตั้งโปรแกรม Coding Editor แนะนำเป็นโปรแกรม VSC 

https://code.visualstudio.com/download

การออกแบบและสร้างตารางฐานข้อมูล 

การสร้างไฟล์สำหรับการ Connect หรือเชื่อมต่อฐานข้อมูลหรือ Database 

การสร้างแบบฟอร์มสำหรับให้ผู้ใช้งาน user กรอกข้อมูลเข้ามา 

การตกแต่งฟอร์มโดยใช้คำสั่งจัดเรียงข้อมูลและตกแต่งแบบฟอร์มช่วยอย่าง Bootstarp เป็นต้น 

การศึกษาการประกาศค่าตัวแปรภาษา PHP การศึกษาและเรียนรู้คำสั่งโครงสร้างภาษา PHP Syntax 



ขั้นตอน 2 การต่อยอดสู้การเขียนแอพเพื่อเชื่อมต่อระบบ SQL Databace โดยต้องศึกษาการเขียนประตูเชื่อมระหว่าง PHP MYADMIN กับ แอพพลิเคชั่นบน SmartPhone เช่น Node Js ,Flutter เป็นต้น 


ฝึกเขียนภาษา PHP ระบบลงทะเบียนข้อมูลและ Login

ให้ดาวโหลดและติดตั้ง XAMPP เพื่อใช้งานกับภาษา PHP scripts. ลิงค์สำหรับดาวโหลด XAMPP server https://www.apachefriends.org/index.html. เปิดหน้าต่างควบคุม  XAMPP's Cและเรียกใช้งาน  Apacheกับ กับ MySQL. รวมทั้ง Bootstrap โดยไปที่ลิค์  https://getbootstrap.com/ .

สร้างฐานข้อมูล 

เปิดไปที่ [i.e. http://localhost/phpmyadmin] สร้างฐานข้อมูล db_login.

สร้างตารางขึ้นมาเก็บข้อมูล โดยแท็บ SQL  copy/paste ตามตัวอย่างด้านล่าง . คลิกปุ่มคำสั่ง  Go เพื่อสร้างตาราง.

  1.  
  2. CREATE TABLE `member` (
  3. `firstname` varchar(50) NOT NULL,
  4. `lastname` varchar(50) NOT NULL,
  5. `username` varchar(30) NOT NULL,
  6. `password` varchar(12) NOT NULL



สร้างไฟล์ชื่อ con.php เพื่อเชื่อมต่อกับฐานข้อมูล
  1. <?php
  2. $db_username = 'root';
  3. $db_password = '';
  4. $conn = new PDO( 'mysql:host=localhost;dbname=db_login', $db_username, $db_password );
  5. if(!$conn){
  6. die("Fatal Error: Connection Failed!");
  7. }
  8. ?>



สร้างไฟล์ index.php เพื่อเป็นหน้าแบบฟอร์ม สำหรับการ Login
  1. <?php session_start(); ?>
  2. <!DOCTYPE html>
  3. <html lang="en">
  4. <head>
  5. <link rel="stylesheet" type="text/css" href="css/bootstrap.css"/>
  6. <meta charset="UTF-8" name="viewport" content="width=device-width, initial-scale=1"/>
  7. </head>
  8. <body>
  9. <nav class="navbar navbar-default">
  10. <div class="container-fluid">
  11. <a class="navbar-brand" href="https://sourcecodester.com">Sourcecodester</a>
  12. </div>
  13. </nav>
  14. <div class="col-md-3"></div>
  15. <div class="col-md-6 well">
  16. <h3 class="text-primary">PHP - PDO Login and Registration</h3>
  17. <hr style="border-top:1px dotted #ccc;"/>
  18. <div class="col-md-2"></div>
  19. <div class="col-md-8">
  20. <?php if(isset($_SESSION['message'])): ?>
  21. <div class="alert alert-<?php echo $_SESSION['message']['alert'] ?> msg"><?php echo $_SESSION['message']['text'] ?></div>
  22. <script>
  23. (function() {
  24. // removing the message 3 seconds after the page load
  25. setTimeout(function(){
  26. document.querySelector('.msg').remove();
  27. },3000)
  28. })();
  29. </script>
  30. <?php
  31. endif;
  32. // clearing the message
  33. unset($_SESSION['message']);
  34. ?>
  35. <form action="login_query.php" method="POST">
  36. <h4 class="text-success">Login here...</h4>
  37. <hr style="border-top:1px groovy #000;">
  38. <div class="form-group">
  39. <label>Username</label>
  40. <input type="text" class="form-control" name="username" />
  41. </div>
  42. <div class="form-group">
  43. <label>Password</label>
  44. <input type="password" class="form-control" name="password" />
  45. </div>
  46. <br />
  47. <div class="form-group">
  48. <button class="btn btn-primary form-control" name="login">Login</button>
  49. </div>
  50. <a href="registration.php">Registration</a>
  51. </form>
  52. </div>
  53. </div>
  54. </body>
  55. </html>

สร้างไฟล์ลงทะเบียนผู้ใช้งาน register_query.php
  1. <?php
  2. require_once 'conn.php';
  3.  
  4. if(ISSET($_POST['register'])){
  5. if($_POST['firstname'] != "" || $_POST['username'] != "" || $_POST['password'] != ""){
  6. try{
  7. $firstname = $_POST['firstname'];
  8. $lastname = $_POST['lastname'];
  9. $username = $_POST['username'];
  10. // md5 encrypted
  11. // $password = md5($_POST['password']);
  12. $password = $_POST['password'];
  13. $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  14. $sql = "INSERT INTO `member` VALUES ('', '$firstname', '$lastname', '$username', '$password')";
  15. $conn->exec($sql);
  16. }catch(PDOException $e){
  17. echo $e->getMessage();
  18. }
  19. $_SESSION['message']=array("text"=>"User successfully created.","alert"=>"info");
  20. $conn = null;
  21. header('location:index.php');
  22. }else{
  23. echo "
  24. <script>alert('Please fill up the required field!')</script>
  25. <script>window.location = 'registration.php'</script>
  26. ";
  27. }
  28. }
  29. ?>

สร้างไฟล์ทำหน้าที่ตรวจสอบในฐานข้อมูลว่ามีชื่อผู้ใช้งานในระบบหรือไม เพื่อให้สิทธิในการ Login
  1. <?php
  2.  
  3. require_once 'conn.php';
  4.  
  5. if(ISSET($_POST['login'])){
  6. if($_POST['username'] != "" || $_POST['password'] != ""){
  7. $username = $_POST['username'];
  8. $password = $_POST['password'];
  9. $sql = "SELECT * FROM `member` WHERE `username`=? AND `password`=? ";
  10. $query = $conn->prepare($sql);
  11. $query->execute(array($username,$password));
  12. $row = $query->rowCount();
  13. $fetch = $query->fetch();
  14. if($row > 0) {
  15. $_SESSION['user'] = $fetch['mem_id'];
  16. header("location: home.php");
  17. } else{
  18. echo "
  19. <script>alert('Invalid username or password')</script>
  20. <script>window.location = 'index.php'</script>
  21. ";
  22. }
  23. }else{
  24. echo "
  25. <script>alert('Please complete the required field!')</script>
  26. <script>window.location = 'index.php'</script>
  27. ";
  28. }
  29. }
  30. ?>


สร้างไฟล์ Logout.php เพื่อ จบการทำงาน
  1. <?php
  2. header('location: index.php');
  3. ?>

PHP MySQL Database

 การเขียนภาษา PHP สามารถเชื่อมต่อการทำงานกับฐานข้อมูล MySQL ระบบฐานข้อมูลยอดนิยมที่พัฒนาออกมาใช้งานกับ PHP

What is MySQL?

  • MySQL is a database system used on the web
  • MySQL is a database system that runs on a server
  • MySQL is ideal for both small and large applications
  • MySQL is very fast, reliable, and easy to use
  • MySQL uses standard SQL
  • MySQL compiles on a number of platforms
  • MySQL is free to download and use
  • MySQL is developed, distributed, and supported by Oracle Corporation
  • MySQL is named after co-founder Monty Widenius's daughter: 
ข้อมูลใน MySQL จะเก็บในตาราง มีข้อมูลเป็นแถวและคอลัมน์ ฐานข้อมูลนิยมใช้ในการเก็บข้อมูล 
  • Employees
  • Products
  • Customers
  • Orders
ฐานข้อมูล MySQL จะทำงานได้บนระบบปฏิบัติการ windows และ Linux
ถ้าเราไม่มี PHP server  MySQL Database, สามารถดาวโหลด : http://www.mysql.com

ระบบฐานข้อมูล MYSQL มีการนำไปใช้งานกับฐานข้อมูลขนาดใหญ่เช่น Facebook, Twitter, and Wikipedia เป็นต้น

การเชื่อมต่อฐานข้อมูล MySQL 
จะสามารถเชื่อมต่อได้ 2 ลักษณะ คือ 

PHP 5 and later can work with a MySQL database using:

  • MySQLi extension (the "i" stands for improved)
  • PDO (PHP Data Objects)
การเชื่อมต่อทั้ง 2 แบบ ใช้งานได้เช่นกัน แต่แบบ PDO จะสะดวกมากกว่า ถ้าในอนาคตจะมีการเปลี่ยนแปลงรูปแบบฐานข้อมูลจาก Mysql ไปใช้ระบบอื่นๆ เพราะจะรองรับการเปลี่ยนไปใช้งานระบบฐานข้อมูลอื่นๆ กว่า 12 ชนิด

Open a Connection to MySQL

ก่อนจะทำงานกับ ฐานข้อมูลจะต้อง มีการเชื่อมต่อกับฐานข้อมูล 

Example (MySQLi Object-Oriented)

<?php
$servername = "localhost";
$username = "username";
$password = "password";

// Create connection
$conn = new mysqli($servername, $username, $password);

// Check connection
if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?>
------------------------

Example (MySQLi Procedural)

<?php
$servername = "localhost";
$username = "username";
$password = "password";

// Create connection
$conn = mysqli_connect($servername, $username, $password);

// Check connection
if (!$conn) {
  die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";
?>
------------------

Example (PDO)

<?php
$servername = "localhost";
$username = "username";
$password = "password";

try {
  $conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password);
  // set the PDO error mode to exception
  $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  echo "Connected successfully";
catch(PDOException $e) {
  echo "Connection failed: " . $e->getMessage();
}
?>

คำสั่งในการปิดการเชื่อมต่อ แต่ละแบบ 
$conn->close();
mysqli_close($conn);
$conn = null;
-------------------------
การสร้างฐานข้อมูล Create a MySQL Database Using MySQLi and PDO

Example (MySQLi Object-oriented)

<?php
$servername = "localhost";
$username = "username";
$password = "password";

// Create connection
$conn = new mysqli($servername, $username, $password);
// Check connection
if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}

// Create database
$sql = "CREATE DATABASE myDB";
if ($conn->query($sql) === TRUE) {
  echo "Database created successfully";
else {
  echo "Error creating database: " . $conn->error;
}

$conn->close();
?>

Example (MySQLi Procedural)

<?php
$servername = "localhost";
$username = "username";
$password = "password";

// Create connection
$conn = mysqli_connect($servername, $username, $password);
// Check connection
if (!$conn) {
  die("Connection failed: " . mysqli_connect_error());
}

// Create database
$sql = "CREATE DATABASE myDB";
if (mysqli_query($conn, $sql)) {
  echo "Database created successfully";
else {
  echo "Error creating database: " . mysqli_error($conn);
}

mysqli_close($conn);
?>

Example (PDO)

<?php
$servername = "localhost";
$username = "username";
$password = "password";

try {
  $conn = new PDO("mysql:host=$servername", $username, $password);
  // set the PDO error mode to exception
  $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  $sql = "CREATE DATABASE myDBPDO";
  // use exec() because no results are returned
  $conn->exec($sql);
  echo "Database created successfully<br>";
catch(PDOException $e) {
  echo $sql . "<br>" . $e->getMessage();
}

$conn = null;
?>