วันพุธที่ 27 ตุลาคม พ.ศ. 2553

ระบบทะเบียนสินค้า ตอนที่ 3 เพิ่ม/แสดง/ลบ รายการสินค้า

ระบบทะเบียนสินค้า ตอนที่ 3  เพิ่ม/แสดง/ลบ รายการสินค้า
วันนี้ขออัปเดตบล็อกของตัวเองซะหน่อยคับ ผมสอนแค่การเพิ่มรายการสินค้า แสดงรายการสินค้า และลบรายการสินค้าก่อนคับ ส่วนการแก้ไขข้อมูลสินค้า ,แก้ไขรูป ,ลบรูปสินค้า จะขออธิบายในบทความตอนต่อไปคับ เนื่องจากว่า เนื้อหาที่จะนำเสนอมีค่อนข้างเยอะ ไม่สามารถอธิบายทั้งหมดได้ในบทความนี้คับ  ก่อนอื่นท่านต้องกลับไปศึกษา บทความตอนที่ 1 กับ ตอนที่ 2 ก่อนคับ เผื่อจะได้ไม่งงกับบทความตอนนี้ เพราะมันต่อยอดมาจากบทความตอนที่1กับตอนที่2นั้นเองคับ
ผมได้ดีไซน์เว็บเพจของผม ดังนี้คับ
หน้าเพิ่มรายการสินค้า ไฟล์ addpd.php
หน้าแสดงข้อความแจ้งการเพิ่มรายการสินค้า ไฟล์ addpd_save.php
หน้าแสดงรายการสินค้าและลบรายการสินค้า showpd.php
ผมขอไปไวหน่อยนะคับ  ไม่เข้าใจก้อคอมเม้นท์ถามผมก็ได้นะคับ
ดูตัวอย่างได้ที่นี่คับ
อันดับแรกให้ท่านสร้าง Folder เพื่อเก็บไฟล์รูปสินค้า ของผมตั้งชือว่า img_pd ดังรูป


ไฟล์ addpd.php ให้เขียนเพิ่ม แก้ไข โค๊ดตามนี้เลยคับ
<?php
require_once("config.php");
$rs_showcg=$conn->Execute("SELECT * FROM tb_category ORDER BY cg_name ASC");
?>
<!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=windows-874" />
<link rel="stylesheet" type="text/css" href="jquery/css/ui-lightness/jquery-ui-1.7.2.custom.css">
<link rel="stylesheet" type="text/css" href="style.css"/>
<title>เพิ่มรายการสินค้า</title>
<script  type="text/javascript" src="jquery/jquery-1.4.2.min.js"></script>
<script  type="text/javascript" src="jquery/jquery-ui-1.7.1.custom.min.js"></script>
<script type="text/javascript">
function DialogAlert(){
 $("#dialogMsg").dialog("destroy");
 $('#dialogMsg').dialog({
 bgiframe: true,
 modal: true,
 autoOpen: false,
 width: 400,
 buttons: {
 "Ok": function() { 
 $(this).dialog("close"); 
 }
 }
 });
}
function chkVal(){
 var pdname=$(":input#pd_name").val();
 var pdamount=$(":input#pd_amount").val();
 var pdprice=$(":input#pd_price").val();
 var MSG="";
 if(pdname==""){
 MSG +="ชื่อสินค้าจำเป็นต้องกรอก<br>";
 }
 if(pdamount==""){
 MSG+="จำนวนสินค้าจำเป็นต้องกรอก<br>"; 
 }
 if(pdprice==""){
 MSG+="ราคาขายจำเป็นต้องกรอก"; 
 }
 if(MSG!=""){
 DialogAlert();$("#showMsg").html("<font color='red'>"+MSG+"</font>");$("#dialogMsg").dialog("open");
 return false;
 
 } else {
 return true;
 }
}
</script>
<?
if($_SERVER["REQUEST_METHOD"]=="POST"){
 $pdname=$_POST["pd_name"];
 $cgid=$_POST["cg_id"];
 $pddetail=$_POST["pd_detail"];
 $pdamount=$_POST["pd_amount"];
 $pdunit=$_POST["pd_unit"];
 $pdcosts=$_POST["pd_costs"];
 $pdprice=$_POST["pd_price"];
 $pdstatus=$_POST["pd_status"];
 $img_name=$_FILES["pd_img"]["name"];
 $img_tmp=$_FILES["pd_img"]["tmp_name"];
 if($img_name!=""){
 $fileType=chkfiletype($img_name);
 if(!$fileType=="0"){
 $pdimg=rand(1,9999999).date("_d-m-y").$fileType;#ตั้งชื่อกับรูปภาพ
 $sql_addpd="INSERT INTO tb_product(pd_name,cg_id,pd_detail,pd_amount,pd_unit,pd_costs,pd_price,pd_status,pd_img,pd_date) VALUES('".$pdname."',".$cgid.",'".$pddetail."',".$pdamount.",'".$pdunit."',".$pdcosts.",".$pdprice.",'".$pdstatus."','".$pdimg."',SYSDATE())";
 
 $rs_addpd=$conn->Execute($sql_addpd);
 move_uploaded_file($img_tmp,"img_pd/".$pdimg);
 @chmod("./img_pd/".$pdimg,0777);
 } else{
 echo "<span id='dialogMsg' title='มีปัญหากับไฟล์รูปสินค้า'><font color='red'><span id='showMsg'>&nbsp;</span></font></span>";
     echo "<script>DialogAlert();$('#showMsg').html('คุณเลือกชนิดไฟล์ไม่ถูกต้อง');$('#dialogMsg').dialog('open');</script>";
 }
 }else{
 $sql_addpd="INSERT INTO tb_product(pd_name,cg_id,pd_detail,pd_amount,pd_unit,pd_costs,pd_price,pd_status,pd_date) VALUES('".$pdname."',".$cgid.",'".$pddetail."',".$pdamount.",'".$pdunit."',".$pdcosts.",".$pdprice.",'".$pdstatus."',SYSDATE())";
 $rs_addpd=$conn->Execute($sql_addpd); 
 }
 if($rs_addpd==true){
 echo "<script>window.location='addpd_save.php';</script>";
 }
}
?>
</head>
<body>
<div id="container">
  <div id="header">
    <div id="headerText">Crochet Tukta Online(หลังร้าน)<img src="images/logo.png" width="35" height="57" /></div>
  </div>
  <div id="content">
    <div id="m_left">
      <? require_once("leftmenu.php");?>
    </div>
    <div id="m_center"><strong>เพิ่มสินค้าใหม่</strong><br />
      <div id="dialogMsg" title="เกิดข้อผิดพลาด">
        <div id="showMsg"></div>
      </div>
      <form action="<?=$_SERVER["PHP_SELF"]?>" method="post" enctype="multipart/form-data" name="FaddPg" id="FaddPg" onsubmit="return chkVal()">
        <table width="100%" border="0" align="center">
          <tr>
            <td align="right">ชื่อสินค้า</td>
            <td><input name="pd_name" type="text" id="pd_name" value="<?=$pdname?>" size="40" />
              *</td>
          </tr>
          <tr>
            <td align="right">หมวดหมู่สินค้า</td>
            <td><select id="cg_id" name="cg_id">
                <? while(!$rs_showcg->EOF){?>
                <option value="<?=$rs_showcg->fields["cg_id"]?>">
                <?=$rs_showcg->fields["cg_name"]?>
                </option>
                <? $rs_showcg->MoveNext(); } ?>
              </select>
              <a href="addcg.php">เพิ่มหมวดหมู่ใหม่</a></td>
          </tr>
          <tr>
            <td align="right">รายละเอียดสินค้า</td>
            <td><textarea name="pd_detail" id="pd_detail" cols="45" rows="5"><?=$pddetail?>
</textarea></td>
          </tr>
          <tr>
            <td align="right">จำนวน</td>
            <td><input name="pd_amount" type="text" id="pd_amount" size="7" value="1" />
              *
              หน่วยนับ
              <select id="pd_unit" name="pd_unit">
                <? 
     for($unit_i=0;$unit_i<=count($pd_unit);$unit_i++){ ?>
                <option value="<?=$pd_unit[$unit_i]?>">
                <?=$pd_unit[$unit_i]?>
                </option>
                <? } ?>
              </select>
              *</td>
          </tr>
          <tr>
            <td align="right">ราคาต้นทุน</td>
            <td><input name="pd_costs" type="text" id="pd_costs" size="7"  value="0.00"/>
              ราคาขาย
              <input name="pd_price" type="text" id="pd_price" size="7" value="0.00" />
              *</td>
          </tr>
          <tr>
            <td align="right">สถานะสินค้า</td>
            <td><select id="pd_status"  name="pd_status">
                <? foreach($pdstatus as $key=>$value){?>
                <option value="<?=$value?>" <? if($value==$rs_showpd_edit->fields["pd_status"])echo "selected"; ?>>
                <?=$key?>
                </option>
                <? }?>
              </select>
              *</td>
          </tr>
          <tr>
            <td align="right">รูปสินค้า</td>
            <td><input type="file" name="pd_img" id="pd_img" /></td>
          </tr>
          <tr>
            <td>&nbsp;</td>
            <td><input type="submit" name="bt_savePd" id="bt_savePd" value="บันทึก" /></td>
          </tr>
        </table>
      </form>
    </div>
  </div>
  <div class="clear"></div>
  <div id="footer">
    <h1>copyright&copy;2010 http://php-for-ecommerce.blogspot.com</h1>
  </div>
</div>
</body>
</html>
 
ไฟล์ addpd_save.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=windows-874" />
<link rel="stylesheet" type="text/css" href="jquery/css/ui-lightness/jquery-ui-1.7.2.custom.css">
<link rel="stylesheet" type="text/css" href="style.css"/>
<title>บันทึกรายการสินค้า</title>
</head>
<body>
<div id="container">
<div id="header">
  <div id="headerText">Crochet Tukta Online(หลังร้าน)<img src="images/logo.png" width="35" height="57" /></div></div>
<div id="content">
  <div id="m_left"><? require_once("leftmenu.php");?></div>
  <div id="m_center"><strong>เพิ่มหมวดหมู่สินค้า</strong><br />
    <p align="center"> ข้อมูลรายการสินค้าได้ถูกบันทึกเรียบร้อยแล้ว <br />
      <a href="showpd.php">ดูข้อมูล</a></p>
    <br />
  </div>
</div><div class="clear"></div>
<div id="footer"><h1>copyright&copy;2010 http://php-for-ecommerce.blogspot.com</h1></div>
</div>
</body>
</html>
ส่วนไฟล์ showpd.php ให้เขียนตามนี้คับ
<? 
require_once("config.php");
$rs_showpd=$conn->Execute("SELECT tb_product.pd_name,tb_product.pd_detail,tb_category.cg_name,tb_product.pd_id,tb_product.pd_amount,tb_product.pd_unit,
 tb_product.pd_price,tb_product.pd_img,tb_product.pd_status,tb_product.pd_date FROM tb_product Left Join tb_category ON tb_product.cg_id = tb_category.cg_id  ORDER BY tb_product.pd_date DESC");
if(isset($_POST["pd_id"])){
 for($i=0;$i<=count($_POST["pd_id"]);$i++){
 $conn->Execute("DELETE FROM tb_product WHERE pd_id=".$_POST["pd_id"][$i]."");
 header("Location:".$_SERVER["PHP_SELF"]);
 }
}
?>
<!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=windows-874" />
<link rel="stylesheet" type="text/css" href="jquery/css/ui-lightness/jquery-ui-1.7.2.custom.css">
<link rel="stylesheet" type="text/css" href="style.css"/>
<title>แสดงรายการสินค้า</title>
<script  type="text/javascript" src="jquery/jquery-1.4.2.min.js"></script>
<script  type="text/javascript" src="jquery/jquery-ui-1.7.1.custom.min.js"></script>
<script type="text/javascript">
function Delconf(){
 var conF=confirm("ยืนยันการลบสินค้า");
 if(conF==true){
 document.FshowPD.submit();
 }
}
</script>
</head>
<body>
<div id="container">
  <div id="header">
    <div id="headerText">Crochet Tukta Online(หลังร้าน) <img src="images/logo.png" width="35" height="57" /></div>
  </div>
  <div id="content">
    <div id="m_left">
      <? require_once("leftmenu.php");?>
    </div>
    <div id="m_center"><strong>แสดงรายการสินค้า</strong><br />
      <div id="dialogMsg" title="ข้อความจากระบบ">
        <div id="showMsg"></div>
      </div>
      <form id="FshowPD" name="FshowPD" method="post" action="<?=$_SERVER["PHP_SELP"]?>">
        <table width="100%" border="0" cellpadding="3" cellspacing="0">
          <tr bgcolor="#CCCC00">
            <td><strong>วันที่ืบันทึก</strong></td>
            <td><strong>ชื่อสินค้า</strong></td>
            <td><strong>หมวดหมู่</strong></td>
            <td><strong>จำนวน</strong></td>
            <td><strong>ต้นทุน</strong></td>
            <td><strong>ราคาขาย</strong></td>
            <td><strong>สถานะ</strong></td>
            <td><strong>ลบ</strong></td>
          </tr>
          <?
   $_COUNT=0;
    while(!$rs_showpd->EOF){
     if($_COUNT%2==0) $_BgColor="#CCCCCC"; else $_BgColor="#FF9900"; $_COUNT++;
    ?>
          <tr bgcolor="<?=$_BgColor?>">
            <td><?=$rs_showpd->fields["pd_date"];?></td>
            <td><a href="editpd.php?edit_id=<?=$rs_showpd->fields["pd_id"]?>"> <img src="images/icon/write.gif" width="16" height="16" border="0" /> </a>
              <?=$rs_showpd->fields["pd_name"];?></td>
            <td><?=$rs_showpd->fields["cg_name"];?></td>
            <td><?=$rs_showpd->fields["pd_amount"];?></td>
            <td><?=$rs_showpd->fields["pd_costs"];?></td>
            <td><?=$rs_showpd->fields["pd_price"];?></td>
            <td><?=pd_stauts($rs_showpd->fields["pd_status"]);?></td>
            <td><input type="checkbox" name="pd_id[]" id="pd_id[]"  value="<?=$rs_showpd->fields["pd_id"]?>"/></td>
          </tr>
          <? $rs_showpd->MoveNext();} ?>
          <tr>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td><a href="#" onclick=" Delconf()"> <img src="images/icon/del.gif" width="16" height="16" border="0" /> </a></td>
          </tr>
        </table>
      </form>
    </div>
  </div>
  <div class="clear"></div>
  <div id="footer">
    <h1>copyright&copy;2010 http://php-for-ecommerce.blogspot.com</h1>
  </div>
</div>
</body>
</html>
ดูตัวอย่างโปรแกรมได้ จากที่นี่คับ

19 ความคิดเห็น :

  1. พี่คะ แอดสินค้าได้ แต่หมวดหมู่ไม่เข้าค่ะ และก็ไม่โชว์ด้วย TT^TT

    ตอบลบ
  2. หมวดหมู่สินค้า ผมใช้ตัวแปร $cgid รับค่าที่ส่งมา คือ
    $cgid=$_POST["cg_id"];
    เวลา insert ลงฐานข้อมูลต้องลองเช็คดูว่าเราใช้ ฟิลด์ชื่ออะไรเก็บหมวดสินค้าครับ ของผมใช้ฟิลด์ชื่อ cg_id
    ดูคำสั่ง sql ด้านล่างเป็นตัวอย่างครับ
    INSERT INTO tb_product(pd_name,cg_id,pd_detail,pd_amount,pd_unit,pd_costs,pd_price,pd_status,pd_img,pd_date) VALUES('".$pdname."',".$cgid.",'".$pddetail."',".$pdamount.",'".$pdunit."',".$pdcosts.",".$pdprice.",'".$pdstatus."','".$pdimg."',SYSDATE())
    สังเกตุ cg_id กับตัวแปร $cgid ครับ
    ควรกำหนดตำแหน่งให้ตรงกัน ซึ่ง cg_id จะอยู่ตำแหน่งที่ 2 และค่าใน VALUES ต้องอยู่ในตำแหน่งที่ 2 เช่นกันครับ

    ตอบลบ
  3. แอดหมวดสินค้าเข้าแล้วค่ะ ขอบคุณนะคะ แต่ติดปัญหาตอนเอามาโชว์นี่แหละค่ะ มันไม่ขึ้น

    ตอบลบ
  4. ลองเช็คคำสั่ง SQL และการ Jonin Table ดูครับ ลองดูคำสั่งข้างล่างนี้
    SELECT tb_product.pd_name,tb_product.pd_detail,tb_category.cg_name,tb_product.pd_id,tb_product.pd_amount,tb_product.pd_unit,
    tb_product.pd_price,tb_product.pd_img,tb_product.pd_status,tb_product.pd_date FROM tb_product Left Join tb_category ON tb_product.cg_id = tb_category.cg_id ORDER BY tb_product.pd_date DESC
    สังเกตุตรง SELECT นะครับ tb_category.cg_name คือชื่อหมวดสินค้าที่ผมจะเอามาโชว์ครับ
    เวลาเอามาแสดงในหน้าเว็บผมใช้คำสั่ง
    <?=$rs_showpd->fields["cg_name"];?>(จะอยู่ในไฟล์ showpd.php บรรทัดที่ 65)

    ตอบลบ
  5. พี่ขาแจ้งที่ทำไม่ต้องสวยหรูมาก ราคาเท่าไหร่ค่

    ตอบลบ
  6. ไม่ระบุชื่อ28 กันยายน 2555 17:17

    จบง่ายดี จ้างพี่เค้าทำเยย
    เค้าอุสาสอน
    อิๆ
    แต่ขอบคุณจิงๆ
    เรียนรุ้อะไรจากพี่เยอะ

    ตอบลบ
  7. ไม่ระบุชื่อ28 กันยายน 2555 17:42

    พี่ครับ ลองrunหน้า addpd แล้วมันบอกว่ามีปัญหาตรงบรรทัดนี้อะครับ
    $fileType=chkfiletype($img_name);

    พอผมลบทิ้ง มันก็ได้ปกติเยย แต่รู้ที่อัพโหลดดันไม่ส่งไปที่folderอะครับ
    ทำไงดี

    ตอบลบ
    คำตอบ
    1. มันไม่ฟังชั่น chkfiletype ครับ
      ให้ทำตามในบทความนี้ครับ ในขั้นตอนที่ 1
      http://php-for-ecommerce.blogspot.com/2010/10/2.html

      ลบ
  8. ไม่ระบุชื่อ29 กันยายน 2555 02:46

    ดีคะพี่ หนูลองทำตามพี่หมดเยย แต่เวลาหนูรันมันอะคะ ตรงหน้า showpdอะ มันขึ้นฟ้องว่าผิดตรงนี้อะคะ
    MoveNext();} ?>
    แต่ก็ยังเปิดเห็นหน้านะคะ แค่มันขึ้นมาบนตารางว่าบันทัดนี้ผิดอะคะ
    แล้วหนู่ก็เจอปัญหาเดียวกับคนข้างบนนี้ด้วยอะคะ แต่อันนี้ไม่ขึ้นอะไรเยยนะคะ ขึ้นว่าบอกแต่ว่าผิด แบบเดียวกันเยยคะ
    หนูลองลบทิ้งแบบเค้า ก็เป็นแบบเค้าเลยคะ รูปมันไม่ส่งไปที่โฟเดอร์
    ไม่รู้จะแก้ยังไงคะ
    ขอบคุณมากคะ

    ตอบลบ
    คำตอบ
    1. ทำตามคำแนะนำ ตามที่ได้ผมตอบความคิดเห็นข้างบนได้เลยครับ
      ไม่น่าจะมีปัญหาแล้วครับ ขอบคุณที่แจ้งให้ทราบครับ ^^

      ลบ
  9. ไม่ระบุชื่อ3 ตุลาคม 2555 17:17

    พี่คะ
    หนู่อัพโหลด ไฟร์รูปเข้าใปในโฟเดอร์ได้แล้ว
    แล้วเวลากดเปิด รูป มันเปิดไม่ได้อะครับ
    หนูอัพโหลด Jpeg ไฟล์อะคะ

    ทำไงดี หรือว่าปกติจะเปิดไฟล์รูปไม่ได้หลอคะ

    ตอบลบ
    คำตอบ
    1. มันไม่รองรับไฟล์นามสกุลนี้ครับ รองรับแค่ jpg,gif,png เท่านั้น
      วิธีแก้
      พิมพ์คำสั่ง || $filetype==".jpeg"
      ต่อท้ายคำสั่ง $filetype==".png" ครับ

      โดยแก้ที่ฟังชั่น chkfiletype จาก http://php-for-ecommerce.blogspot.com/2010/10/2.html
      ตรงขั้นตอนที่ 1 ได้เลยครับ

      ลบ
  10. ไม่ระบุชื่อ15 กรกฎาคม 2556 10:36

    พี่คะตรง $rs_addpd=$conn->Execute($sql_addpd);

    มันขึ้น Parse error: syntax error, unexpected T_VARIABLE

    แก้ยังไงคะ

    ตอบลบ
    คำตอบ
    1. ดูวิธีแก้ตามนี้ครับ
      http://www.select2web.com/php/syntax-error-unexpected-t_variable.html

      ลบ
  11. พี่ครับ จะให้มันเลือกโชว์ตามหมวดหมู่ ด้วย dropdownlist ด้วย ทำไงอะครับ

    ตอบลบ
    คำตอบ
    1. ลองเอาเนื้อหาจากหน้านี้ไปประยุกต์ดูครับ-->การค้นหาสินค้า
      แค่เปลี่ยนช่องกรอกข้อมูลเป็นDropdownlistหมวดหมู่สินค้าแทน และแก้โค๊ดให้มันค้นหาจากหมวดสินค้าอีกนิดหน่อยเท่านั้นเองครับ ไม่ยากเลย...

      ลบ
    2. ขอบคุณมากเลยครับพี่ น่าจะเป็นเพราะว่า ผมสับสนกับการใช้ Get กับ Post อะครับ

      ลบ
  12. ไม่ระบุชื่อ2 พฤษภาคม 2557 13:35

    พี่ค่ะหนูทำตามพี่ทุกขั้นตอนแล้ว แต่แอดสินค้าไม่ได้ และก็ไม่โชว์ด้วยค่ะ

    ตอบลบ