Xây dựng website - Chức năng đăng kí với PHP

Thảo luận trong 'Thảo luận website, Forum' bắt đầu bởi LeCongVo, 29 Tháng mười 2012.

  1. Offline

    hongoctrien

    • Friends

    Số bài viết:
    2.449
    Đã được thích:
    2.464
    Điểm thành tích:
    2.431
    Mới code được có chừng đó ^^. Không có thời gian code thêm nữa.

    Thì là phải tạo form cho người quản trị nhập dữ liệu từ form vào CSDL, chứ không phải mỗi lần muốn thêm dữ liệu là phải mở mysql ra thêm :)
  2. Offline

    soidaohoa

    • Windows NT

    Số bài viết:
    211
    Đã được thích:
    70
    Điểm thành tích:
    60
    uhm, mà t dôt cái này nên cô nói mải mà không hiểu nổi
  3. Offline

    LeCongVo

    • V.I.P

    • Nothing gonna change my love for you!
    Số bài viết:
    20
    Đã được thích:
    59
    Điểm thành tích:
    60
    Chào các bạn. Mấy hôm nay bận quá không tham gia diễn đàn thường xuyên. Hôm nay mình tranh thủ time lên diễn đàn với các bạn. Hôm nay mình sẽ nói tiếp phần 5: Tạo và quản lí giỏ hàng. Đây chỉ là code để các bạn tham khảo nên Các bạn xem, "bình loạn" và có thể code lại tốt hơn. Ví dụ như: giao diện đẹp hơn, bố cục lại code hợp lý hơn, viết thêm một số thành phần khác, thêm một số phần, hoặc chỉnh sửa CSDL,.. để có thể áp dụng vào đồ án của mình. Chúc các bạn thành công.
    Bây giờ mình xin bắt đầu:
    Để tạo và quản lý giỏ hàng chúng ta có thể tạm chia ra các bước như sau:
    Bước 1: Xây dựng một trang hiển thị sản phẩm và thông tin các sản phẩm. Ở đây mình xây dựng một trang đơn giản để hiển thị sản phẩm. Khi các bạn làm thì có thể làm đẹp hơn, phong phú hơn. Trang này là trang chủ nên mình đặt tên là index.php. Trang này có chứa nút chọn mua ở từng sản phẩm để cho phép người mua chọn một cách dễ dàng.
    Code đơn giản như sau:
    PHP:
    <?php
        
    include("../mysql.php");
        
    $sql="select * from products order by id desc";
        
    $query=mysql_query($sql);
        if(
    mysql_num_rows($query) > 0)
        {
            while(
    $row=mysql_fetch_array($query))
            {
                echo 
    "<div class=pro>";
                echo 
    "<h3>" $row[name] . "</h3><br/>";
                echo 
    "Nhà sản xuất: <b>"$row[manufacturer]. "</b></br>Giá: <b>".number_format($row[price],3)."</b> VND<br />";
                echo 
    "Thông tin về Sản phẩm: " $row[infor] ."<br />";
                echo 
    "<p align=right><a href=addcart.php?id_sp=$row[id]>Chọn mua</a></p>";
                echo 
    "</div>";
            }
        }
    ?>
    Như vậy là xong trang index.php
    Bước 2: Tạo trang xử lý việc thêm vào giỏ hàng:
    + Kiểm tra xem chúng sản phẩm này có tồn tại trong CSDL không.
    - Nếu tồn tại thì tiến hành thêm Sản phẩm này vào giỏ hàng và cập nhật lại một số thông tin của giỏ hàng và chuyển khách hàng tới trang hiển thị giỏ hàng.
    - Nếu không tồn tại thì báo lỗi và chuyển tới trang hiển thị giỏ hàng
    Chúng ta có thể đặt tên cho trang này là addcart.php.
    Đoạn code đơn giản như sau:
    PHP:
    <?php
        session_start
    ();
        
    ob_start();
        include(
    "../mysql.php");
    ?>
    <?php
        $id_sp 
    $_GET['id_sp'];
        if(
    $id_sp != ""//  Nếu có ID truyền vào
        
    {
            
    // Kiểm tra xem id này có trong CSDL hay k?
            
    $query mysql_query("SELECT id FROM products WHERE id in ('$id_sp')");
            
    $num_q mysql_num_rows($query);
            
    // Nếu tồn tại
            
    if($num_q == 1)
            {
                
    //session_register("giohang");
                //  nếu id này có trong giỏ hàng rồi
                
    if(isset($_SESSION['giohang'][$id_sp]))
                {
                    
    // Tăng số lượng nó lên
                    
    $_SESSION['giohang'][$id_sp] ++;
                }
                else 
    // Chưa có trong giỏ hàng (mới chọn)
                
    {
                    
    $_SESSION['giohang'][$id_sp] = 1// Số lượng mặc định là 1
                
    }
                
    // Chuyển tức khắc qua trang giỏ hàng
                
    header("location: showcart.php");
            }
            else
            {
                echo 
    "<p align='center' style='font-size:18;color:red'>Không tồn tại sản phẩm này!</p>";
                
    header("refresh:3; showcart.php");
            }
        }
        else 
    // Nếu không có id truyền vào
        
    {
            echo 
    "<p align='center' style='font-size:18;color:red'>Truy cập không hợp lệ!</p>";
        }
     
    ?>
    Để tùy biến thì các bạn có thể chỉnh sửa thêm một số thông tin cho phù hợp với website của các bạn.
    òa! Mỏi tay, mỏi mắt, đau lưng quá. nghỉ chút đã! rồi làm tiếp bước 3: Hiển thị giỏ hàng.
    --- Nhập chung bài viết, 8 Tháng mười một 2012 ---
    --- Nhập chung bài viết, 8 Tháng mười một 2012 ---
    --- Nhập chung bài viết, 8 Tháng mười một 2012 ---
    Bước 3: Tạo trang hiện thị giỏ hàng.
    Mình đặt tên nó là showcart.php.
    Ở trang này mình thực hiện các công việc:
    + Hiển thị các sản phẩm có trọng giỏ hàng: thông tin SP, giá,...
    + Hiển thị tổng tiền của từng sản phẩm
    + Hiển thị tổng tiền, số lượng từng loại sản phẩm
    + Hiển thị tổng tiền của giỏ hàng
    đoạn code dơn giản như sau:
    PHP:
    <?php
        session_start
    ();
        
    ob_start();
    ?>
    <br/>
    <?php
        
    // kết nối CSDL
        
    include("../mysql.php");
        
    $giohang $_SESSION['giohang'];
        
    // Nếu người dùng cập nhật lại giỏ hàng (ấn nút cập nhật)
        
    if(isset($_POST['capnhat']) &&    count($giohang) != "")
        {
            
    $soluong_cn $_POST['soluong'];
     
            foreach(
    $soluong_cn as $id_sp => $sl)
            {
                
    // Nếu như người dùng đặt lại số lượng  = 0  ==> thì ta hủy luôn sản phẩm đó ($id_sp) trong giỏ hàng ($_SESSION['giohang'])
                
    if($sl == 0)
                {
                    unset(
    $_SESSION['giohang'][$id_sp]);
                }
                
    // Nguoc lại số lượng sp phải là số ta cập nhật lại số lượng giỏ hàng
                
    else if($sl && is_numeric($sl))
                {
                    
    $_SESSION['giohang'][$id_sp] = $sl;
                }
                
    // Nguoc lai co the xuat thong bao so luong khong hop le (so luong = char)
                // refresh lại giỏ hàng
                
    header("location: ".$_SERVER['REQUEST_URI']."");
            }
        }
        
    // nếu giỏ hàng có sản phẩm
        
    if(count($giohang))
        {
    ?>
        <form action="" method="post">
    <?php
            
    // Duyệt hết giỏ hàng
            
    $tongcong =0;
            foreach(
    $giohang as $id_sp => $sl)
            {
                
    // truy van lay thong tin san pham
                
    $truyvan_gh mysql_query("SELECT id,name,manufacturer,price,infor FROM products WHERE id in ('$id_sp')");
                
    $row mysql_fetch_row($truyvan_gh);
    ?>
                      <div id="cart">
                            Tên Sản phẩm: <b><?php echo $row[1]; ?></b><br>
                            Nhà sản xuất: <b><?php echo $row[2]; ?></b><br>
                            Giá: <b><?php echo $row[3]; ?></b> VND<br>
    <?php echo $row[4]; ?><br>
                            <?php
                                
    // name của text field bây giờ đóng vai trò là mảng chứa value là sl của từng quyển sách
                            
    ?>
    <input name="soluong[<?php echo $id_sp?>]" type="text" size="4" value="<?php echo $sl?>" />Sản phẩm. Tổng tiền: <b><?php echo $sl*$row[3]; ?></b> VND<br>
                            <a href="delcart.php?id_sp=<?php echo $row[0]; ?>"> Bỏ chọn </a>
                        </div>
    <?php
                
    // Tổng tiền
                
    $tongcong += $sl*$row[3];
            }
    ?>
            <div id="cart">
                <a href="index.php"> Chọn thêm </a> &nbsp;&nbsp; <a href="delcart.php?del_all=true"> Xóa tất cả </a> <br>
    <?php echo "Tổng tiền giỏ hàng: <b>" $tongcong?></b> VND  <br>
                <input type="submit" name="capnhat" value="Cập nhật" />
            </div>
        </form>
    <?php
        
    }
        else
        {
    ?>
            <div id="giohang">
              Bạn chưa có sản phẩm nào trong giỏ hàng. Hãy về <a href="index.php">Trang chủ</a> và chọn mua sản phẩm!
    </div>
    <?php
        
    }
    ?>  
    Như vậy là xong trang hiển thị giỏ hàng. Còn cái gì liên quan tới giỏ hàng nữa không nhỉ?
    --- Nhập chung bài viết, 8 Tháng mười một 2012 ---
    Còn một bước cuối cùng nữa đó là Xóa giỏ hàng
    Bước 4: Xóa giỏ hàng
    Trong bước này chúng ta thực hiện các công việc:
    + Xóa từng sản phẩm
    + Xóa tất cả giỏ hàng
    chúng ta đặt tên cho trang này là delcart.php.
    Đoạn code đơn giản như sau:
    PHP:
    <?php
        session_start
    ();
        
    ob_start();// tạo bộ đệm cho hàm header
        // Nếu xóa 1 sản phẩm
        
    if(isset($_GET['id_sp']))
        {
            unset(
    $_SESSION['giohang'][$_GET['id_sp']]);
            
    header("location: showcart.php");
        }
        
    // Xóa tất cả (với dk giỏ hàng phải có)
        //Chú ý: $id_sp: là key của mảng $_SESSION['giohang'] còn $sl: là giá trị tương ứng với key $id_sp của mảng $_SESSION['giohang']
        
    if($_GET['del_all'] == "true" && count($_SESSION['giohang']))
        {
            foreach(
    $_SESSION['giohang'] as $id_sp => $sl)
            {
                unset(
    $_SESSION['giohang'][$id_sp]);   
            }
            
    header("location: showcart.php");
        }   
     
    ?>
    Như vậy là chúng ta đã xong phần giỏ hàng bao gồm các chức năng:
    + Hiển thị các sản phẩm (trang index.php): cho phép người mua lựa chọn sản phẩm
    + Thêm sản phẩm vào giỏ hàng (trang addcart.php)
    + Hiển thị các sản phẩm trong giỏ hàng (trang showcart.php): cho phép người mua cập nhật giỏ hàng
    + Xóa giỏ hàng.
    Dưới đây là toàn bộ code của phần giỏ hàng và CSDL của nó (bảng products).
    CSDL bao gồm cả phần đăng kí, đăng nhập, logout (bảng members).
    code đính kèm:

    Các file đính kèm:

    • Demo.zip
      Kích thước:
      14,3 KB
      Đọc:
      146
  4. Offline

    sunboy

    • Thành viên sáng lập

    • No thing
    Số bài viết:
    1.616
    Đã được thích:
    1.340
    Điểm thành tích:
    1.000
    Với các phiên bản php 5.2.0 trở đi, việc validate/filter email, ip, url.. rất đơn giản vì đã có sẵn hàm filter_var ( http://php.net/manual/en/function.filter-var.php ). Không cần phải viết function riêng. Đặt biệt không nên dùng javascript để filter vì bản chất javascript là client-side script.
    LeCongVo thích bài này.
  5. Offline

    LeCongVo

    • V.I.P

    • Nothing gonna change my love for you!
    Số bài viết:
    20
    Đã được thích:
    59
    Điểm thành tích:
    60
    @sunboy nói đúng. Chúng ta không nên quá lạm dụng javascript trong việc filter và check form!
  6. Offline

    hoayeng

    • Thành Viên Mới

    Số bài viết:
    7
    Đã được thích:
    0
    Điểm thành tích:
    0
    ĐỌc mà chẳng hiểm cái gì hÔ Hô

Chia sẻ trang này

Advertising: Linux system admin | nukeviet | nukeviet 4 | Upload ảnh miễn phí