เพิ่มข้อมูลรายการ clone() จากการดึงข้อมูลแบบ autocomplete

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา เพิ่มข้อมูลรายการ clone() จากการดึงข้อมูลแบบ autocomplete

เพิ่มข้อมูลรายการ clone() จากการดึงข้อมูลแบบ autocomplete
จากรูปนะคะ เป็น การ orderสินค้า  ถ้าเราเลือกสินค้าที่1 คือ parate size M
โดยการพิมพ์และดึงข้อมูลแบบ autocomplete ถ้าเราเลือก  parate size M
ในช่อง Sid จะปรากฏว่า 1376 คือ Sidของรหัสสินค้าparate size M
แต่ถ้าต้องการ เพิ่มสินค้าใหม่ เป็น parate size SS ซึ่งผู้ใช้งานอาจจะเลือก parate size M มาก่อน
แล้วค่อยไปเปลี่ยนจากคำว่า size M เป็น size SS
คือหลังจากกด parate size M รหัส Sid ยังคงค้างอยู่ในช่องSid คือ 1376 ซึ่งในที่นี่จะเป็น hidden ผู้ใช้งานแก้ไขไม่ได้ 
เราจะทำอย่างไรค่ะ ถ้าต้องการเพิ่ม parate size SS ซึ่งเป็นสินค้าใหม่เข้าไปในตาราง Stock ด้วยและตาราง sale_order_dsโดยให้ Sid รันเองอัตโนมัติ
 
 
ตาราง Stock ที่ใช้ดึงข้อมูล
CREATE TABLE `stock` (
  `Sid` int(11) NOT NULL auto_increment,
  `Scode` varchar(50) NOT NULL,
  `Sname` varchar(200) NOT NULL,
  `Spic` varchar(100) NOT NULL,
  `Price` double NOT NULL,
  `Unit` varchar(20) NOT NULL,
  `flag` varchar(10) NOT NULL,
  PRIMARY KEY  (`Sid`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1380 ;
 
INSERT INTO `stock` VALUES (1376, 'parate', 'size M', '', 0, 'plates', '1');
INSERT INTO `stock` VALUES (1377, 'parate', 'size L', '', 0, 'plates', '1');
INSERT INTO `stock` VALUES (1378, 'parate', 'size XL', '', 0, 'plates', '1');
 
ตาราง sale_order_ds
CREATE TABLE `sale_order_ds` (
  `id` int(5) NOT NULL auto_increment,
  `Scode` varchar(50) NOT NULL,
  `Price` double NOT NULL,
  `quantity` int(11) NOT NULL,
  `discount` int(11) NOT NULL,
  `Sacode` varchar(10) NOT NULL,
  `pic` varchar(50) NOT NULL,
  `more` varchar(500) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=11 ;
 
INSERT INTO `sale_order_ds` VALUES (9, '1376', 750, 3, 0, 'DS57/0005', '2', '');
INSERT INTO `sale_order_ds` VALUES (10, '1377', 800, 1, 0, 'DS57/0005', '2', '');
 
 
 
แต่มันไม่ได้ดึงข้อมูลจาก DB แบบ autocomplete มา ซึ่งจะไม่มี Sid รหัสสินค้ามาด้วย 
 
 
 
 


Bsaranya 223.204.255.xxx 18-12-2014 14:35:24

คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
  • เปลี่ยน


    ( หรือ เข้าใช้งานผ่าน Social Login )

 ความคิดเห็นที่ 1
ตามตารางฐานข้อมูล ค่า Sid ก็รันเองอัตโนมัติตามค่า autoincrement แล้ว
ตอนทำคำสั่ง query เราก็ไม่ต้องกำหนดค่าในลงไปก็ได้ ค่าก็จะเพิ่มขึ้นมาเอง 
แต่หลังจาก บันทึกลงตาราง stock แล้ว ก็เอาค่า Sid นั้น ไปใช้ในการบันทึกในตาราง sale_order_ds เลย
เช่น

$q="
INSERT INTO stock (
Scode,
Price,
.....
) VALUES (
$scode',
'$price',
......'
)
";
$qr=mysql_query($q);
$Sid=mysql_insert_id($qr);  // ค่า sid ไว้บันทึกในตาราง sale_order_ds


ให้เป็นแนวทาง ส่วนใช้ยังไงขึ้นกับรูปแบบงานนั้นๆ ต้องไปประยุกต์ตามความเข้าใจ

>>>  อัพเดท >>> 18-12-2014
------------------------------------------
เพิ่มเติมเป็นข้อมูล การใช้งาน autocomplete ของ jqueryui กับฐานข้อมูล

ประยุกต์ ใช้งาน jquery ui autocomplete ร่วมกับฐานข้อมูล อย่างง่าย 


ninenik 171.96.14.xxx 18-12-2014
 ความคิดเห็นที่ 2
แล้วถ้าต้องการเช็คค่าซ้ำ ก่อนการ insert ล่ะคะ
เนื่องจากข้อมูลที่ใส่เป็นแบบ array เราจะเช็คยังไง

ถ้าข้อมูลที่ 1 เป็นข้อมูลสินค้าเก่า (parate Size M)
    ข้อมูลที่ 2 เป็นข้อมูลสินค้าใหม่ (parate Size S) ที่จะเพิ่มเข้ามาในรายการ order
จะต้องเช็คค่าที่ post ยังไง ให้เพิ่มแต่ข้อมูลใหม่ในตาราง Stock
และเพิ่มข้อมูลสินค้าทั้ง 1และ2 ในตาราง order


bsaranya 223.204.255.xxx 18-12-2014 15:26
 ความคิดเห็นที่ 3
ไม่รู้เข้าใจถูกไหม คือจะใช้ฟรอ์ม ที่เดิมใช้สำหรับ บันทึกเฉพาะรายการลงตาราง sale_order_ds
แต่จะใช้ ค่าใหม่ หากมีการเปลี่ยนแปลง ไปบันทึกตาราง stock ด้วย ถ้าแบบนี้โค้ดก็จะซับซ้อน คงให้ได้แค่แนวทาง
ก็คงต้องวนลูปตัวแปร array แล้วเอาค่าไปเทียบกับข้อมูลเดิมก่อน ถ้าเป็นค่าใหม่ก็บันทึกลงตาราง stock ก่อน
สวนการเปรียบ ก็ if else ธรรมดา
พอบันทึกสินค้าใหม่เข้าไปในตาราง stock แล้ว ก็ค่อยไปบันทึกในตาราง order ต่อ ส่วนค่า $sid ก็ใช้แนวทางตามความเห็นก่อนหน้า

แต่ถ้าแนะนำจริงๆ ควรทำเป็น popup หรือมีมีเมนูเพิ่ม สินค้าใหม่เข้าไป แยกออกมาต่างหากจะดีกว่า 


ninenik 171.96.14.xxx 18-12-2014
 ความคิดเห็นที่ 4
ตามที่เข้าจะถูกต้องแล้วค่ะ
ตอนนี้กำลังพยายามดูเรื่อง ตรวจสอบค่าซ้ำจาก array อยู่
จะทำวนลูปนั่นแหละค่ะ แต่ทำไม่เป็น เดี๋ยวลองพยายามดู
ก่อนหน้านี้ก็ทำอย่างที่บอกอ่ะคะ
if แล้ว insert ค่าทั้งสองตารางพร้อมกัน
ถ้า สินค้าซ้ำ ก็ else แล้ว insert แค่ตาราง order


bsaranya 223.204.255.xxx 18-12-2014 15:46
 ความคิดเห็นที่ 5
ได้แล้วค่ะ

foreach($_POST["Scode"] as $index =>$sT){ 
$Sname = $_POST["Sname"][$index];


$sqlIn="SELECT * FROM stock WHERE Sname = '".$Sname."' AND Scode = '".$sT."'";
$qIn= mysql_query($sqlIn);
$objIn= mysql_fetch_array($qIn);
if($objIn)
{
/*ซ้ำ*/
$q = "INSERT INTO `sale_order_ds` (Scode,Price,quantity,discount,Sacode,pic,more)
             VALUES ('$sT','$pT','$qT','$dT','$Sacode','$pic','$mT')";

mysql_query($q);

} else { 
/*ไม่ซ้ำ*/
$sql="SELECT MAX(Sid) As maxSid FROM stock";
$query = mysql_query($sql);
 while($row = mysql_fetch_array($query)){
		$maxSid =$row['maxSid']+1;
 }
$q = "INSERT INTO `sale_order_ds` (Scode,Price,quantity,discount,Sacode,pic,more)
             VALUES ('$maxSid','$pT','$qT','$dT','$Sacode','$pic','$mT')";
mysql_query($q);

$sqlAddstock = "INSERT INTO stock (Sid,Scode,Sname,Spic,Price,Unit,flag) VALUES('$maxSid','$sT', '$Sname','','$Price','$Unit','1')";
mysql_query($sqlAddstock);

}
}


bsaranya 223.204.255.xxx 18-12-2014 17:24
1






เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ