Menu-ngang

☰ MENU

24/04/2024

Thực hành tổng hợp PHP và MyQL

 

PHẦN 1. CƠ BẢN

Cấu trúc các file trong dự án

NỘI DUNG THỰC HÀNH

1. File TaoCSDLBanHang.php

<?php
// BƯỚC 1: TẠO DATABASE
// Tạo kết nối
$conn = mysqli_connect('localhost', 'root', '', 'mysql') or die("Không kết nối được với csdl");
mysqli_set_charset($conn, 'UTF8');
   
// Lệnh tạo database
$sql = "CREATE DATABASE csdlbanhang CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci'";
 
// Thực thi câu truy vấn
if (mysqli_query($conn, $sql))
{
    echo 'Tạo database thành công!';
     
    // BƯƠC 2: TẠO TABLE
    // Chọn database
    mysqli_select_db($conn, 'csdlbanhang');
     
    // Câu lệnh SQL
    $sql = "CREATE TABLE sanpham(
        idsp INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
        tensp VARCHAR(255) NOT NULL,
        chitietsp TEXT,
        dongia INT(11) NOT NULL,
        urlhinhanh VARCHAR(255) NOT NULL
        )";
    // Thực thi câu truy vấn
    if (mysqli_query($conn, $sql)) {
        // Thêm 1 trường thông tin mẫu
        $sql = "INSERT INTO sanpham (tensp,chitietsp,dongia,urlhinhanh) values ('Sản phẩm 1','Chi tiết sản phẩm 1...','1000000','Chua_co_hinh.jpg')";
        mysqli_query($conn, $sql);
        echo '<script language="javascript">alert("Tạo table và ví dụ mẫu thành công!");</script>';
    } else {
        echo "Tạo table thất bại: " . mysqli_error($conn);
    }
     
} else {
    echo "Tạo database thất bại: " . mysqli_error($conn);
}
// Tạo xong thì ngắt kết nối
mysqli_close($conn);
?>

2. File TieuDeTren.php

<div class="header">  
   ĐIỆN THOẠI THÔNG MINH
</div>

<div class="menu">
<a href="index.php">Trang chủ</a> |
    <a href="index.php">Sản phẩm</a> |
</div>

3. File TieuDeDuoi.php

<p>Copyright: Họ và tên HS</p>

4. File MenuTrai.php

<p>
<a href="index.php">Sản phẩm</a>
</p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>

5. File NoiDung.php

<p>SẢN PHẨM:</p>
<?php
$conn = mysqli_connect('localhost', 'root', '', 'csdlbanhang') or die("Không kết nối được với csdl");
mysqli_set_charset($conn, 'UTF8');

$sql = "SELECT * FROM sanpham";
$result = $conn->query($sql);
if($result->num_rows > 0)
{
  while($sp = mysqli_fetch_object($result))
  {
echo "

<table width='100%' border='0'>
  <tr>
    <td rowspan='4' width='20%' >
    <img src='hinh/".$sp->urlhinhanh."' with='200' height='200'></td>
    <td>Tên sản phẩm:".$sp->tensp."</td>
  </tr>
  <tr>
    <td width='80%'>Đơn giá:".$sp->dongia."</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td><a href='XemChiTiet.php?idsanpham=".$sp->idsp."'> Xem chi tiết</a> | <a href='MuaHang.php?idsanpham=".$sp->idsp."'>Mua hàng</a></td>
  </tr>
</table>
<hr>";
  }
  mysqli_free_result($result);
}
else
{
echo 'Lỗi không lấy được dữ liệu ',mysqli_error($conn);
}
?>

6. File myCSS.css

@charset "utf-8";

.header {
    float: left;
    font-size: 50px;
    font-weight: bold;
    color: #F00;
    background-color: #6C9;
    text-align: center;
    margin: 5px;
    padding: 5px;
    padding-top: 35px;
    height: 100px;
    width: 100%;
    border: thin solid  rgb(107, 200, 247);
}

.menu{
    float: left;
    height: 30px;
    font-size: 18px;
    color: #FFF;
    background-color: #FFA500;
    margin: 5px;
    padding: 5px;
    width: 100%;
    border: thin solid #FFA500;
   
}

.menuLeft{
    float: left;
    background-color:  rgb(107, 200, 247);
    text-align: left;
    margin: 5px;
    padding: 5px;
    width: 15%;
    height:300px;
    border: thin solid #030;    
}

.contents{
    float: left;
    margin: 5px;
    padding: 5px;
    /*height:auto;*/
    width: 77%;
    border: thin solid #060;    
}

.footer{
    float: left;
    background-color:  rgb(107, 200, 247);
    margin: 5px;
    padding: 5px;
    height: 50px;
    width: 100%;
    border: thin solid #060;    
}


7. File index.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>Trang chủ</title>
  <link href="myCSS.css" rel="stylesheet" type="text/css" />
</head>

<body>

  <?php include "TieuDeTren.php";?>

  <div class="menuLeft">
    <h4 align="center">Sản phẩm</h4>
    <?php include "MenuTrai.php";?>
  </div>

  <div class="contents">
    <?php include "NoiDung.php";?>
  </div>

  <div class="footer">
    <?php include "TieuDeDuoi.php"; ?>
  </div>

</body>
</html>



8. File XemChiTiet.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>Trang chủ</title>
  <link href="myCSS.css" rel="stylesheet" type="text/css" />
</head>

<body>

  <?php include "TieuDeTren.php";?>

  <div class="menuLeft">
    <h4 align="center">Sản phẩm</h4>
    <?php include "MenuTrai.php";?>
  </div>

  <div class="contents">
    <?php
    //Kết nối csdl
    $conn = mysqli_connect('localhost', 'root', '', 'csdlbanhang') or die("Không kết nối được với csdl");
    mysqli_set_charset($conn, 'UTF8');
    ?>
    <?php
    $idsp = $_GET['idsanpham'];
    $sql = "SELECT * FROM sanpham where idsp={$idsp}";
    $result = $conn->query($sql);
    if($result->num_rows > 0)
    {
    $sp = mysqli_fetch_object($result);
    echo "
        <img src='hinh/".$sp->urlhinhanh."' with='400' height='400'>
        <p>Tên sản phẩm:".$sp->tensp."</p>
        <p>Đơn giá:".$sp->dongia."</p>
        <p><a href='MuaHang.php?idsanpham=".$sp->idsp."'>Mua hàng</a></p>
    <p>Chi tiết sản phẩm:</br>".$sp->chitietsp."</p>

    ";
    mysqli_free_result($result);
    }
    else
    {
        echo 'Lỗi không lấy được dữ liệu ',mysqli_error($conn);
    }
    ?>
</div>

  <div class="footer">
    <?php include "TieuDeDuoi.php"; ?>
  </div>

</body>
</html>

9. File MuaHang.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>Trang chủ</title>
  <link href="myCSS.css" rel="stylesheet" type="text/css" />
</head>

<body>

  <?php include "TieuDeTren.php";?>

  <div class="menuLeft">
    <h4 align="center">Sản phẩm</h4>
    <?php include "MenuTrai.php";?>
  </div>

  <div class="contents">
    <p>Vui lòng liên hệ: 0987654321</p>
  </div>

  <div class="footer">
    <?php include "TieuDeDuoi.php"; ?>
  </div>

</body>
</html>

10. Hình ảnh: Trong thư mục hình có 3 hình sau




PHẦN XỬ LÝ DỮ LIỆU

11. File QLThemMoiSP.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Thêm mới sản phẩm</title>
</head>
<body>
    <h1>THÊM MỚI SẢN PHẨM</h1>
    <form method="POST" action="XuLyQLThemMoiSP.php" enctype="multipart/form-data">
        <p>Tên sản phẩm:<input type="text" name="txtTenSP" /></p>
        <p>Đơn giá:<input type="text" name="txtDonGia" /></p>
        <p>Hình sản phẩm:
        <input type="hidden" name="size" value="1000000">
        <input type="file" name="image">
        </p>
        <p>Chi tiết sản phẩm: <br /><textarea rows="20" cols="100" name="txtChiTietSP"></textarea></p>
        <p><button type="submit" name="themmoi">Thêm mới</button></p>
    </form>
</body>
</html>

12. File XuLyQLThemMoiSP.php

<?php
//Kết nối csdl
$conn = mysqli_connect('localhost', 'root', '', 'csdlbanhang') or die("Không kết nối được với csdl");
mysqli_set_charset($conn, 'UTF8');

// --- Thêm dữ liệu vào bảng ---

if (isset($_POST['themmoi'])) {
    $tsp = $_POST['txtTenSP'];
    $dg = $_POST['txtDonGia'];
    $ctsp = $_POST['txtChiTietSP'];
    $file_name = $_FILES['image']['name']; //Lấy tên file
    $file_size = $_FILES['image']['size']; //Lấy kích thước file
    $file_tmp = $_FILES['image']['tmp_name']; //Tên file tạm
    $file_type = $_FILES['image']['type']; // Kiểu file
    $file_ext=strtolower(end(explode('.',$_FILES['image']['name'])));
   
    $target = "hinh/".basename($file_name);
    $expensions= array("jpeg","jpg","png");
       
    if(in_array($file_ext,$expensions)== false)
        echo "</br>Vui lòng chọn hình! Chỉ hỗ trợ upload file JPEG hoặc PNG.";
    if($file_size > 2097152)
        echo "Kích thước file không được lớn hơn 2MB";
    if (move_uploaded_file($_FILES['image']['tmp_name'], $target)) {
        $sql = "INSERT INTO sanpham (tensp,chitietsp,dongia,urlhinhanh) values ('$tsp','$ctsp','$dg','$file_name')";
        mysqli_query($conn, $sql);
        echo '<script language="javascript">alert("Đã thêm mới thành công!");</script>';
    }
    else{
        echo '<script language="javascript">alert("Đã thêm mới thất bại!");</script>';
    }
}
else
{
    echo "</br>Vui lòng điền đầy đủ thông tin sản phẩm!";
    echo '</br>Lỗi: ',mysqli_error($conn);
}
mysqli_close($conn);
echo "<a href='QLThemMoiSP.php'> Về lại trang Quản lý Thêm mới Sản phẩm</a>"
?>

PHẦN 2. NÂNG CAO

13. File QLSanPham.php


<!DOCTYPE>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Quản lý sản phẩm</title>
    </head>
<body>
    <table width="100%" border="1">
        <tr>
            <td colspan="2" align="center">
                <h1>QUẢN LÝ SẢN PHẨM</h1>
            </td>
        </tr>
        <tr>
            <td width="15%">Sản phẩm</td>
            <td width="72%">
            <p align="right"><a href="QLThemMoiSP.php"> Thêm mới</a></p>
            <table width="100%" border="1">
                <tr bgcolor="#FFFFCC">
                    <td width="12%">ID sản phẩm</td>
                    <td width="39%">Tên sản phẩm</td>
                    <td width="25%">Đơn giá</td>
                    <td width="24%">Nút lệnh</td>
                </tr>
            <?php
                $conn = mysqli_connect('localhost','root','','csdlbanhang') or die("Không kết nối đƣợc với csdl");
                mysqli_set_charset($conn, 'UTF8');
                $sql = "SELECT * FROM sanpham";
                $result = $conn->query($sql);
                if($result->num_rows > 0)
                {
                    while($sp = mysqli_fetch_object($result))
                    {
                        echo "
                            <tr>
                            <td>".$sp->idsp."</td>
                            <td>".$sp->tensp."</td>
                            <td>".$sp->dongia."</td>
                            <td>
                            <a href='QLXemSP.php?idsp=".$sp->idsp."'>Xem </a> |
                            <a href='QLCapNhatSP.php?idsp=".$sp->idsp."'>Cập nhật </a> |
                            <a href='XuLyXoaSP.php?idsp=".$sp->idsp."'>Xóa </a>
                            </td>
                            </tr>
                            ";
                    }
                mysqli_free_result($result);
                }
                else
                {
                    echo 'Lỗi không lấy đƣợc dữ liệu',mysqli_error($conn);
                }
            ?>
        </table>
        </tr>
    </table>
</body>
</html>

14. File QLXemSP.php

<!DOCTYPE >
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Untitled Document</title>
    </head>
<body>
    <?php
        //Kết nối csdl
        $conn = mysqli_connect('localhost', 'root', '', 'csdlbanhang')
        or die("Không kết nối đƣợc với csdl");
        mysqli_set_charset($conn, 'UTF8');
        $idsp = $_GET['idsp'];
        $sql = "SELECT * FROM sanpham where idsp={$idsp}";
        $result = $conn->query($sql);
        if($result->num_rows > 0)
        {

            $sp = mysqli_fetch_object($result);
            echo "
            <img src='hinh/".$sp->urlhinhanh."' with='400' height='400'>
            <p>Tên sản phẩm:".$sp->tensp."</p>
            <p>Đơn giá:".$sp->dongia."</p>
            <p>Chi tiết sản phẩm:</br>".$sp->chitietsp."</p>
            ";
            mysqli_free_result($result);
        }
        else
        {
            echo 'Lỗi không lấy đƣợc dữ liệu ',mysqli_error($conn);
        }
    ?>
    <p><a href="QLSanPham.php"> Về lại trang Quản lý Sản phẩm</a></p>
</body>
</html>

15. File QLCapNhatSP.php


<!DOCTYPE >
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Thêm mới sản phẩm</title>
    </head>
<body>
    <h1>CẬP NHẬT SẢN PHẨM</h1>
    <?php
    //Kết nối csdl
    $conn = mysqli_connect('localhost', 'root', '', 'csdlbanhang')
    or die("Không kết nối đƣợc với csdl");
    mysqli_set_charset($conn, 'UTF8');
    $idsp = $_GET['idsp'];
    $sql = "SELECT * FROM sanpham where idsp={$idsp}";
    $result = $conn->query($sql);
    if($result->num_rows > 0)
    {
        $sp = mysqli_fetch_object($result);
    ?>
    <form method="POST" action="XuLyQLCapNhatSP.php" enctype="multipart/form-data">
        <input type="hidden" name="txtidSP" value="<?php echo $idsp ?>"/></p>
        <p>Tên sản phẩm:<input type="text" name="txtTenSP" value="<?php
        echo $sp->tensp ?>"/></p>
        <p>Đơn giá:<input type="text" name="txtDonGia" value="<?php echo $sp->dongia ?>"/></p>
        <p>Hình sản phẩm:
        <?php echo "<img src='hinh/".$sp->urlhinhanh."' with='400' height='400'>" ?>
        </p>
        <p>Chi tiết sản phẩm: <br />
        <textarea rows="20" cols="100" name="txtChiTietSP"><?php echo $sp->chitietsp ?></textarea>
        </p>
        <p><button type="submit" name="capnhat">Cập nhật</button></p>
    </form>
    <?php
    }
    else
    {
        echo 'Lỗi không lấy đƣợc dữ liệu ',mysqli_error($conn);
    }
    ?>
</body>
</html>

16. File XuLyQLCapNhatSP.php

<?php
    //Kết nối csdl
    $conn = mysqli_connect('localhost', 'root', '', 'csdlbanhang')
    or die("Không kết nối đƣợc với csdl");
    mysqli_set_charset($conn, 'UTF8');
    if (isset($_POST['capnhat'])) {
        $idsp = $_POST['txtidSP'];
        $tsp = $_POST['txtTenSP'];
        $dg = $_POST['txtDonGia'];
        $ctsp = $_POST['txtChiTietSP'];
        $sql = "UPDATE sanpham SET tensp = '$tsp', chitietsp = '$ctsp', dongia = '$dg' where idsp = '$idsp'";

        mysqli_query($conn, $sql);
        echo '<script language="javascript">alert("Đã cập nhật thành công!");</script>';
    }
    else
    {
        echo "</br>Lỗi không cập nhật được!";
        echo '</br>Lỗi: ',mysqli_error($conn);
    }
    mysqli_close($conn);
    echo "<a href='QLSanPham.php'> Về lại trang Quản lý Sản phẩm</a>"
?>

17. File XuLyXoaSP.php

<?php
    //Kết nối csdl
    $conn = mysqli_connect('localhost', 'root', '', 'csdlbanhang')
    or die("Không kết nối đƣợc với csdl");
    mysqli_set_charset($conn, 'UTF8');
    $idsp = $_GET['idsp'];
    $sql = "DELETE FROM sanpham where idsp = '$idsp'";
    if($conn->query($sql))
    {
        echo '<script language="javascript">alert("Đã Xóa thành công!");</script>';
    }
    else
    {
        echo 'Lỗi: ',mysqli_error($conn);
    }
    mysqli_close($conn);
    echo "<a href='QLSanPham.php'> Về lại trang Quản lý Sản phẩm</a>"
?>


Các file sau khi làm hết 2 phần:


==========***==========

CHÚC CÁC BẠN THÀNH CÔNG

===============================