post image

Tạo Mailing list với PHP & MySQL

Trong video tutorial lần này chúng ta sẽ học cách tạo ra một Mailing List bằng PHP và MySQL. Bạn sẽ học được cách tạo bảng trong SQL Console, liên kết với CSDL bằng PHP và thực hiện một phần của CRUD (Create Read Update Delete).

Những chức năng cơ bản mà chúng ta sẽ làm là kiểm tra email có hợp lệ, chèn email và tên của người dùng vào CSDL, truy xuất CSDL để xác định email có tồn tại trong CSDL hay không và xóa email nếu người dùng yêu cầu. Cuối cùng sẽ là chức năng gửi email đến tất cả người đăng ký trong danh sách.

Chú ý: Đây chỉ là bài để bạn thực hành với PHP và MySQL và không nên sử dụng trong Project thật vì những lý do bảo mật.

Thời lượng: 17:30

Download định dạng .mp4 chất lượng cao:Phần 1, Phần 2, Phần 3

Dung lượng: 82.23MB

Phần 1: Đăng ký email vào CSDL
Phần 2: Xóa email, tái cơ cấu mã
Phần 3: Gửi email đến danh sách trong CSDL
Logic của đoạn mã bằng hình
exhibit

«

»

48 Comments

( Comment bài này )
  1. kewin says:

    Ở đây có ai biết làm thế nào để truy xuất dữ liệu từ wamp ra trang web mà có dấu được k?

  2. mạnh says:

    Các bài trong izwebz rất hay. liệu những người đang học trên đây có thể làm gì để tỏ lòng cám ơn với DW?

  3. huỳnh thái khoa says:

    thanks bài viết của anh, mong là anh sẽ ra nhìu bài hữu ích như thế này nữa

  4. Đỗ Thị Kim Thoa says:

    có thể nào là do cài đặt wamp của em không!

  5. Đỗ Thị Kim Thoa says:

    Nhờ mọi người kiểm tra thử xem em bị lỗi chỗ nào khi em chạy trên trình duyệt lại không thể xử lý dữ liệu chỉ hiển thì design .Cảm ơn mọi người

    Mail

    <?php
    if(isset($_POST['submit'])){
    $requeries = array('name','email');
    foreach($requeries as $fieldname){
    if(isset($_POST['$fieldname'])||empty($_POST['$fieldname'])){
    header("Location:mailling_list.php");
    exit;
    }
    }
    $name =mysql_real_escape_string($_POST['name']);
    $email=mysql_real_escape_string($_POST['email']);
    if (preg_match('/^[a-z0-9._-]+@[a-z0-9._-]+\.([a-z]{2,4})$/i', $email)){
    echo"email not corect format";
    exit;
    }
    if($_POST['subcribe']== 'sub'){
    $sql ="SELECT * FROM subcribe WHERE email='".$email."'";
    $rus= mysql_query($sql)or die('Cannot select table');
    if(mysql_num_rows($rus)<1){
    $add_sql= "INSERT INTO subcribe VALUES (null,'".$name."','".$email."')";
    $add_query= mysql_query($add_sql);
    echo $add_query? " You have successfully subcribe to our mailling list”:”Faild subcribe to our mailling list “;
    }
    else{
    echo “Email already exited.”;
    }
    }
    elseif($_POST['unsubcribe']==’unsub’){
    $sql_email = “SELECT * FROM subcribe WHERE email=’”.$email.”‘”;
    $sql_query =”mysql_query($sql_email)”or die(‘can\’t delete email’).mysql_error($connection);
    if(mysql_num_rows($sql_query)<1){
    echo"No record found”;
    }else{
    $del_sql=”DELETE FROM subcribe WHERE email=’”.email.”‘”;
    $del_query=mysql_query($del_sql);
    echo $del_query?”You have successfully unsubscribe “:”Faild unsubscribe”;
    }
    }//end $_POST['subcribe']==’sub’
    } ?>

    Please subcribe to our mailling list
    <form action="” method=”post” id=”subcribe”>

    Name:* 

    Email:* 

    Subscribe
    Unsubscribe

  6. Đỗ Thị Kim Thoa says:

    Em cảm ơn anh Dome Warlock nhiều nhièu nhé ! những tài liệu này thật tuyệt cho em đang tự mình nghiên cứu về ngôn ngữ này.

    • rupic says:

      DW cho mình hỏi:
      mình sử dụng Jquery và Ajax để validateForm nhưng không biết làm thế nào để ínert data vào database và cả send mail nữa tức là nếu bên Jquery validate dữ liệu đúng thì PHP mới INSERT vào database

      • thì bạn cứ dùng function $.ajax({}) để gửi thông tin ngầm đến file php xử lí dữ liệu như bình thường thôi, còn check dữ liệu hợp lệ thì dùng javascript bên máy khách. Tốt nhất là cứ học php manual để bảo mật cho tốt :D . Câu trả lời của mình có đúng ko? Hay ý bạn là như thế nào ???

  7. Trần Tuế says:

    Anh DW cho em hỏi tí, cái phần 3 send mail. sao em làm giống anh rồi nhưng khi gởi đi thì trình duyệt báo lỗi như thế này “Warning : mail() [function.mail]: “sendmail_from” not set in php.ini or custom “From:” header missing in E:\AppServ\www\LamquenvoiPHP\TMP354fkhdkyq.php on line 53 “. mà dòng 13 thì chỉ có mỗi cái dấu ngoặc đơn. anh giúp em sửa lỗi này với, cám ơn anh rất nhiều.

  8. Hùng says:

    anh ơi, cho em hỏi, làm sao khi a gửi email nó biết là từ đâu gửi tới, trong đoạn code của a ko có địa chỉ email nguồn (demon@yahoo.com)

  9. traiphonui says:

    Đọc một loạt bài hay quá. Nhưng hình như còn thiếu bài về tiềm kiếm sản phẩm. Rất mong bạn bổ sung. Thank

  10. Kabigon says:

    Failed to connect to mailserver at “localhost” port 25, verify your “SMTP” and “smtp_port” setting in php.ini or use ini_set() in C:\wamp\www\sendemail.php on line 40

    Em làm đến phần gửi mail thì nó báo thế này nghĩa là sao mấy anh
    Sửa giùm em với

    • King says:

      Mình cũng bị lỗi trên, ai có thể gỡ giúp với. Đã kiểm tra file php.ini rồi.
      SMTP = localhost, smtp_port = 25.
      Nhưng vẫn thông báo lỗi trên.

      • hông chung says:

        Em cũng bị lỗi như vậy (Failed to connect to mailserver at “localhost” port 25, verify your “SMTP” and “smtp_port” setting in php.ini or use ini_set() in C:\wamp\www\sendemail.php ) và trong hàm gửi mail em đã khai báo ($header =’Content-type:text/html; charset=UTF-8′;) mà vẫn không gửi được tiếng việt có giấu mong anh DW hướng dẫn giúp em với. Cảm ơn anh DW.

    • Nguyễn Đức Quý says:

      Bạn không thể gửi mail được vì bạn đang xài localhost. Bạn có thể sử dụng MS Outlock để test. Bạn tham khảo thêm trên mạng để thay đổi port và id của bạn.
      chúc bạn thành công.

  11. jokan says:

    anh DW code “exist” trong video anh nói thoát ra nhưng ko em ko hiểu thoát ra cái gì
    mong and giải thích kỷ một chút :D thanks nice tut

  12. santhudem says:

    cho em hỏi câu ngoài chủ đề:”Php có hỗ trợ cách post các bài như trong wordpress không. Và làm thế nào để post được các bài lên trang web ?”

    • Vậy bạn chưa hiểu bản chất của lập trình PHP rồi !
      Wordpress là một ứng dụng được viết bẳng ngôn ngữ PHP để post các bài viết lên trang web thì wordpress đã viết sẵn một hàm để post thông tin lên trang web tôi lấy VD như sau :
      bạn có môt trang gustbook chẳng hạn bạn muốn người ta hoặc bạn có thể post lên trang web của bạn thì bạn phải xây dựng một hàm post bài như Insert chẳng hạn bạn sẽ lấy các thông tin của form do người dùng post lên rôi kết xuất các thông tin thành một câu truy vấn hoặc là một thủ tục chẳng hạn rồi dùng hàm mysqli_query() hoặc mysql_query() để thực hiện câu truy vấn hoặc thủ tục của bạn vào database của bạn tôi chỉ đưa ra ý tưởng cho bạn để bạn tham khảo không nhất thiết bạn phải làm theo tôi đó là tùy biến của bạn

  13. Anh DW ơi !!! Links down bị lỗi rồi anh ah !
    Anh check lại giùm em cái , em down mãi mà không được

  14. Hùng says:

    Anh DW ơi trang web của anh rất hay và bổ ích? Em chỉ mới học thiết kế web thôi nên còn gà lắm. Em có ý kiến thế này , sao anh không làm một trang web hoàn chỉnh để mọi người cùng học hỏi và chia sẻ. Từ phần thiết kế giao diện, HTML và chủ yếu là về code PHP để xử lý đó …vv. Em rất thích làm web nhưng lại code dở lắm không biết có học được không , huhu , Anh có thể cho em vài lời khuyên được không . cảm ơn anh rất nhiều . chúc trang web của anh ngày càng phát triển hơn .

  15. tuong says:

    Anh cho em xin đoạn Code “Gửi email đến danh sách trong CSDL”
    Em đánh y vậy mà sao báo lỗi hoài.
    sửa hết lỗi mà vẫn không gửi đc, em đang cần cái này. cho em xin
    chuyentinh379@gmail.com

  16. đoàn says:

    anh dw ơi bây giờ em làm video rồi muốn up lên izweb thì làm ntnao?

  17. Ngyen van hai says:

    Anh chỉ giúp em đoạn code truy vấn này nghĩa là gì ?

    <?php
                     $tags = $data->select ( "Tag" , "*" , NULL , 0 , 500 ) ;
                         if ( ! empty ( $tags ) )
                              foreach ( $tags as $tag ) :
                                   $counts = $data->count_record ( "Website_Tag" , array ( "TagID" => $tag["TagID"] ) ) ;
    
                                   if ( $counts > 20 )
                                         $font_size = $counts ;
                                    else
                                         $font_size = 11 ;
    
                            ?>
                                <a style="font-size: <?php echo $font_size ?>px;" href="<?php echo base_url."coupons/".get_sef_url ( $tag["TagID"] , "Tag" ) ?>/"><?php echo $tag["TagName"] ?></a>
    
                            <?php
                                endforeach ;
                            ?>
    

    quan trọng nhất là dòng
    $tags = $data->select ( “Tag” , “*” , NULL , 0 , 500 ) ;
    nghĩa là sao nếu giải thích hộ cả thì càng hay :D . còn đây là link hình Table :Tag
    freecode.vn/for@um/showthread.php?t=113699
    Em xin cảm ơn !

    • nhtera says:

      @Ngyen van hai
      Code này bạn lấy ở đâu vậy, đưa thiếu thế này thì giải thích thế nào :D
      Cái này là họ viết một class data có phương thức select để truy vấn database.
      Lúc cần thì chỉ cần đưa các tham số như tên bảng, trường dữ liệu cần lấy, limit…
      Bạn cần xem code của phương thức select trong class data để xem chi tiết .

  18. giang says:

    Anh xem hộ em đoạn code này với, sao em gõ giông y hệt anh rồi nhưng nó không insert vao DB được

     <?php $connection = mysqli_connect("localhost", "root", "", "test")
                            or die('Cannot connect Database'.mysql_error());
                         ?>
                         <?php
                            if(isset($_POST["submit"])){
                                $required = array("name", "email");
                                foreach($required as $fieldname){
                                if(!isset($_POST["$fieldname"]) || empty($_POST["$fieldname"])){
                                    header("location: contact.php");
                                    exit();
                                }
                                }
                                $email = $_POST["email"];
                                $name = $_POST["name"];
                                if($_POST["send"] == "snd"){
                                    $sql = "select * from members where email ='".$email."'";
                                    $result = mysqli_query($conection, $sql) or die('Cannot select table').mysql_error($connection);
                                    if(mysql_num_rows($result) < 1){
                                        $add_sql = "insert into members VALUES (null,'".$name."','".$email."')";
                                        $add_result = mysql_query($connetion, $add_sql) or die('Cannot insert email');
                                        echo $add_result ? "<p class='success'>You have successfully subcribed to our mailing list</p>" : "<p class='error'>Failed to subcribe email</p>";
                                    }
                                }
                            }//if(isset($_POST["send"]))
                         ?>
    
  19. Hiệu says:

    Rất bổ ích. Cảm ơn anh nhiều, mong anh có nhiều bài hay nữa

  20. mrkyt says:

    DW đã hướng dẫn php, IT Việt Nam có hướng đi mới :)

  21. vantay says:

    rất bổ ích anh ạ, cám ơn anh rất nhiều về tut này

  22. tieuharris says:

    Chào anh DW. Trc hết xin cảm ơn anh DW về những video bổ ích của anh. E thấy trong các video anh đã đính kèm sẵn các source files nên đã tìm cách chắp nỗi các files của anh để thành 1 theme nhưng không được. E không hiểu gì về lập trình web nhưng rất thik và sau này sẽ tìm hiểu để tự làm. Thế nên nếu không phiền thì anh có thể tập hợp các files lại thành 1 theme hoàn chỉnh ( như các theme down trên mạng) và up cho e dc k? Hiện giờ e đang cần nhưng lại chưa có tg để học từ đầu, mong anh thông cảm. Em xin cảm ơn anh trước!

  23. ngoc lan says:

    Các anh có thể giải thích về hệ thống newsletter của phplist được không ạ? Làm sao để form newsletter ( subscribe form ) của mình có thể đăng ký với hệ thống này?

  24. Mạnh Linh says:

    Pác DW ơi, pác check lại link giùm em, 2 cái Phần 1 & 2, link giống nhau mà pác
    Thanks!

  25. Press Any key says:

    Anh có thể nói rõ hơn một tí xíu là vì sao không nên sử dụng trong project thật không.
    Em code PHP toàn làm đến mức này, vậy chưa đi làm được rồi,,,híc

    • Nói chung thì đoạn mã trên cũng đã khá an toàn nhưng nếu sử dụng vào những Project thực sự thì em phải tùy từng trường hợp để giải quyết. Nếu là trang về TMDT và những thông tin liên quan rất quan trọng thì phải có những biện pháp an ninh tốt hơn nữa.

  26. quanhao says:

    Bác DW ơi! Sao lâu quá không thấy video về HTML5(canvas…) và CSS3 vậy bác?

    • Nói thật với chú HTML5 còn khá mới và anh cũng chưa có thời gian nghiên cứu nhiều về nó. Muốn làm tut thì phải hiểu sâu và kỹ về nó mới có thể hướng dẫn người khác được. Chứ anh ko muốn làm video về chủ đề mà mình chưa hiểu rõ.

    • HTML5 là một phiên bản mới của HTML và XHTML gì đó tôi mới hiểu sơ sơ thôi chưa đi sâu được bạn có thể tham khảo qua đây tôi hiện tại cũng đang nghiên cứu vể nó trên trang này rất mong có thể ai đó hiểu hết được nó và chia sẻ với mọi người

  27. tinharvard says:

    hj..cảm ơn bác dw..em dang cần tham khảo…

  28. ruaconda07tt says:

    tutorial rất hay rất bổ ích, cảm ơn anh DW.

  1. BB
  2. BB
  3. BB

arrow

Lưu ý khi post comment:

  • Không "bóc tem" topic
  • Dùng lời lẽ có văn hoá và lịch sự
  • Xem trang FAQs trước khi hỏi
  • Bạn có thể dùng thẻ HTML như:<strong>, <em>, <a>
  • Đặt code trong thẻ [php],[html],[javascript],[css]

Chọn kiểu gõ: Tự động TELEX VNI Tắt