PHP 및 MySQLiดึงข้อมูลมาแสดงบนหน้าเวป [สำหรับมือใหม่มาก ๆ ]

26495 단어 php
จุดประสงค์หลักของบทความนี้คือ ต้องการแสดงการใช้ PHP 및 MySQLiเพื่อสำหรับผู้ที่เริ่มต้นศึกษาได้เข้าใจการดึงข้อมูลมาแสดงบนหน้าเวปอย่างง่าย ๆ

ความรู้พื้นฐานคือ

  • HTML(เน้น <table> )
  • CSS(สำหรับตกแต่งตาราง)
  • 필리핀 페소(เช่น fetch_assoc()while 순환ความเข้าใจใน 무더기รวมไปถึงคำสั่งร่วมกับ MySQLiเป็นต้น)
  • SQL(เช่น คำสั่งในการแสดงข้อมูลนั่นคือ SELECT * FROM ชื่อตาราง )
  • เครื่องมือที่ใช้งาน

  • 텍스트 편집기เช่น VS 코드
  • XAMPP
  • แต่สำหรับใครที่ยังไม่มีพื้นฐานเหล่านี้ไม่แม่นพอก็ไม่ไปไร เราค่อย ๆ เรียนรู้ไปด้วยกัน

    สมมุติว่าเรามีข้อมูลของเมนูกาแฟจำนวนนึงซึ่งอยากจะให้แสดงออกมาในรูปแบบตาราง


    일.สร้างตารางและข้อมูลชื่อเมนูและราคาเมนูในที่นี้จะสร้างตารางที่ชื่อ 메뉴และสร้าง 데이터베이스เป็นชื่อ 프레젠테이션โดยใช้คำสั่ง SQLดังนี้


    --
    -- Database: `demo`
    -- สมมุติว่าเรามี database ที่สร้างไว้แล้วให้ชื่อว่า demo
    --
    
    -- --------------------------------------------------------
    
    --
    -- Table structure for table `menu`
    -- สร้างตารางชื่อ menu ดังด้านล่าง
    --
    
    
    CREATE TABLE `menu` (
        `ID` int(11) NOT NULL,
        `name` varchar(30) NOT NULL,
        `prices` int(11) NOT NULL
    ) ENGINE= InnoDB DEFAULT CHARSET=utf8;
    
    --
    -- Dumping data for table `menu`
    -- เมื่อมีตาราง ก็ทำการ insert ข้อมูลต่าง ๆ ลงไป 
    --
    
    INSERT INTO `menu` (`ID`, `name`, `prices`) VALUES
    (1, 'Espresso', '45'),
    (2, 'Amaricano', '55'),
    (3, 'Hot Cappuccino', '55'),
    (4, 'Iced Cappuccino', '65'),
    (5, 'Hot Latte', '55'),
    (6, 'Iced Latte', '65'),
    (7, 'Hot Mocca', '55'),
    (8, 'Iced Mocca', '65'),
    (9, 'Hot Matcha Green Tea', '55'),
    (10, 'Iced Matcha Green Tea', '65');
    
    --
    -- Indexes for dumped tables
    --
    
    --
    -- Indexes for table `menu`
    -- กำหนดให้ ID เป็น Primary Key คือไม่ให้ข้อมูลมันนับซ้ำกัน
    --
    
    ALTER TABLE `menu` 
        ADD PRIMARY KEY (`ID`);
    
    --
    -- AUTO_INCREMENT for dumped tables
    --
    
    --
    -- AUTO_INCREMENT for table `menu`
    -- ให้ ID มีค่านับเพิ่มขึ้น
    --
    
    ALTER TABLE `menu`
        MODIFY `ID` int(11) NOT NULL AUTO_INCREMENT;
    COMMIT;
    
    หรือจะสามารถดาวน์โหลดไฟล์ 메뉴sqlแล้ว 수입하다ลงบน phpmyadminได้ที่ Link
    เอาล่ะตอนนี้เรามีข้อมูลที่ 데이터베이스เรียบร้อยแล้วดังรูปตัวอย่าง

    ต่อไปเราจะดึงข้อมูลเหล่านี้ขึ้นหน้าเวปที่เราต้องการ

    이.เชื่อมต่อ 데이터베이스


    เมื่อสร้างไฟล์ที่ชื่อ 지수phpแล้วก็สร้างคำสั่งในการเชื่อมต่อกับ 데이터베이스(ในที่นี้ชื่อ 데이터베이스ที่เราต้องการเชื่อมต่อคือ 프레젠테이션)
    <?php 
     // โดยที่ $ชื่อตัวแปร = new mysqli($servername, $username, $password, $dbname)
     $connect = new mysqli('localhost', 'root', '', 'demo');
    
     // ทำการ check connection ว่าถูกต้องหรือไม่
      if ($connect->connect_error) {
            die("Something wrong.: " . $connect->connect_error);
       }
    
    ?>
    

    삼.ทำการดึงข้อมูลที่ต้องการมาแสดงไว้ที่ตาราง


    ในที่นี้จะเลือกข้อมูลทั้งหมดโดยเราทราบดีว่าใน SQLจะใช้ SELECT * FROM ชื่อตาราง ดังนั้นจึงเขียนในรูปแบบนี้
    <?php 
    $sql = "SELECT * FROM menu";
    $result = $connect->query($sql);
    ?>
    

    사.บรรทัดต่อมาเขียน HTMLในรูปแบบดังนี้


    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Coffee Menu</title>
        <link rel="stylesheet" href="style.css">
    </head>
    <body>
        <div class="container"></div>
    </body>
    </html>
    
    เอาล่ะตอนนี้เราจะ 비밀번호ทั้งหมดที่เราเขียนออกมาแบบนี้
    <?php 
        // Create connection
        $connect = new mysqli('localhost', 'root', '', 'demo');
    
        // Check Connection
    
        if ($connect->connect_error) {
            die("Something wrong.: " . $connect->connect_error);
          }
    
        $sql = "SELECT * FROM menu";
        $result = $connect->query($sql);
    ?>
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Coffee Menu</title>
        <link rel="stylesheet" href="style.css">
    </head>
    <body>
        <div class="container"></div>
    </body>
    </html>
    

    오.สร้างตาราง


    จาก 비밀번호ด้านบนทำการ 창조หัวข้อ <h1> และตาราง <table> ภายใน class="container" ดังนี้
    <div class="container">
            <h1>ข้อมูลราคาเมนูของร้าน</h1>
            <table>
                <thead>
                    <tr>
                        <td width="5%">#</td>
                        <td width="25%">ชื่อเมนู</td>
                        <td width="25%">ราคา (บาท) </td>
                    </tr>
                </thead>
                <tbody>
                 <!-- ข้อมูลที่เราจะทำการ fetch จากฐานข้อมูล -->
                </tbody>
            </table>
    
    สร้างตารางคร่าว ๆ ก่อนแล้วเดี๋ยวค่อยเอา cssมาตกแต่งภายหลัง ซึ่งตอนนี้เราก็ได้ตารางส่วนแสดงหัวข้อของแต่ละ 기둥กันไปแล้ว ต่อไปก็จะดึงข้อมูลในฐานข้อมูลที่ต้องการแสดงออกมาใส่ตารางที่เรากำหนดไว้แล้ว

    육.ดึงข้อมูลมาแสดงที่หน้าเวป


    เราจะทำการดึงข้อมูลลงในส่วนของ <tbody> โดยข้อมูลที่เราต้องการจะเอามาแสดงประกอบไปด้วย
  • ลำดับข้อมูลหรือ ID
  • รายชื่อเมนูต่าง ๆ หรือ name
  • ราคาของแต่ละเมนู หรือ pricesโดยจะเรียกใช้ผ่าน fetch_assoc() เนื่องจากข้อมูลมีหลายแถวจึงใช้ while-loop เขียนในรูปแบบดังนี้
  • <tbody>
     <?php while($row = $result->fetch_assoc()): ?>
      <tr>
       <td><?php echo $row['ID']; ?></td>
       <td class="name">
        <?php echo $row['name']; ?>
       </td>
       <td><?php echo $row['prices']; ?></td>
       </tr>
     <?php endwhile ?>
    </tbody>
    
    ขออธิบาย 비밀번호ด้านบนสักนิดนึงคือ $result->fetch_assoc() เป็นการดึงข้อมูล (추출)ในแถวหรือ 한 줄โดยจะเก็บข้อมูลในรูปแบบ 무더기โดยเก็บไว้ที่ $row ดังนั้นแล้วเวลาที่เราจึงประกาศข้อมูลเป็น $row["ชื่อข้อมูล"]
    ตอนนี้สามารถนำข้อมูลทั้งหมดมาแสดงที่หน้าเวปเป็นที่เรียบร้อยแล้ว

    สรุป 비밀번호ที่เขียนบน index.php เป็นดังนี้
    <?php 
        // Create connection
        $connect = new mysqli('localhost', 'root', '', 'demo');
    
        // Check Connection
    
        if ($connect->connect_error) {
            die("Something wrong.: " . $connect->connect_error);
          }
    
        $sql = "SELECT * FROM menu";
        $result = $connect->query($sql);
    
    ?>
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Coffee Menu</title>
        <link rel="stylesheet" href="style.css">
    </head>
    <body>
        <div class="container">
            <h1>ข้อมูลราคาเมนูของร้าน</h1>
            <table>
                <thead>
                    <tr>
                        <td width="5%">#</td>
                        <td width="25%">ชื่อเมนู</td>
                        <td width="25%">ราคา (บาท) </td>
                    </tr>
                </thead>
                <tbody>
                    <?php while($row = $result->fetch_assoc()): ?>
                        <tr>
                            <td><?php echo $row['ID']; ?></td>
                            <td class="name">
                             <?php echo $row['name'];?>
                            </td>
                            <td><?php echo $row['prices']; ?></td>
                        </tr>
                    <?php endwhile ?>
                </tbody>
            </table>
    
        </div>
    </body>
    </html>
    
    แต่ข้อมูลที่ได้ก็ยังดูไม่สวยเท่าไหร่เราจึงใช้ cssเข้ามาทำให้ข้อมูลมีลักษณะออกมาเป็นตารางที่สวยงาม

    칠.ตกแต่งตารางให้มีความสวยงาม


    * {
        margin: 0;
        padding: 0;
        box-sizing: 0;
    }
    
    body {
        font-size: 16px;
        font-family: Arial, Helvetica, sans-serif;
        background-color: #F2F3F4;
        color: #273746;
    }
    
    .container {
        margin: 20px auto;
        padding: 0;
        width: 980px;
    }
    
    h1 {
        margin-top: 20px;
        margin-bottom: 20px;
    }
    
    table {
        width: 100%;
        /* ผสาน border ระหว่าง table กับ td  */
        border-collapse: collapse;
    }
    
    table,
    td {
        border: 1px solid #5D6D7E;
        text-align: center;
    }
    
    thead {
        background-color: #273746;
        color: #BDC3C7;
    }
    
    /* Striped Tables: ทำไฮไล์ในการแบ่ง row  */
    tr:nth-child(even) {
        background-color: #BDC3C7;
    }
    
    td {
        height: 30px;
        vertical-align: center;
    }
    
    .name {
        text-align: left;
        padding-left: 16px;
    }
    
    สุดท้ายก็จะได้ตารางข้อมูลแบบนี้

    좋은 웹페이지 즐겨찾기