หัวข้อ: โปรแกรมเมอร์ทุกท่านๆ ใช้ logic ไหนอยู่ครับ เริ่มหัวข้อโดย: p44n ที่ 08 มีนาคม 2012, 15:05:19 โจทย์ :
มี select อยู่ 5 ตัว เช่น select A มี 3 ค่า A1 A2 A3 select B มี 3 ค่า B1 B2 B3 select C มี 3 ค่า C1 C2 C3 select D มี 3 ค่า D1 D2 D3 select E มี 3 ค่า E1 E2 E3 ตัวอย่างที่เจอเช่น เว็บรถ select ประเภทรถ --> select ยี่ห้อ --> select ปี --> select ราคา ท่านใช้ LOGIC ไหนกันอยู่ครับ ส่วน Logic ของผมนั้น ผมมองมันน่าจะกระชับกว่านี้ได้ เลยหาความรู้เพิ่มเติมจากโปรแกรมเมอร์ในนี้ครับ หัวข้อ: Re: โปรแกรมเมอร์ทุกท่านๆ ใช้ logic ไหนอยู่ครับ เริ่มหัวข้อโดย: jubajuba ที่ 08 มีนาคม 2012, 15:08:37 งงกะคำถามอะครับ
หัวข้อ: Re: โปรแกรมเมอร์ทุกท่านๆ ใช้ logic ไหนอยู่ครับ เริ่มหัวข้อโดย: tinnakorn ที่ 08 มีนาคม 2012, 15:20:48 หมายถึง คำสั่ง ส่งค่าจาก form (Select 5 ค่า) ไป query จากฐานข้อมูล sql หรือครับ ?
หัวข้อ: Re: โปรแกรมเมอร์ทุกท่านๆ ใช้ logic ไหนอยู่ครับ เริ่มหัวข้อโดย: p44n ที่ 08 มีนาคม 2012, 15:23:50 select ประเภท เช่น ทุกประเภท, กระบะ,เก๋ง
select ยี่ห้อ เช่น ทุกยี่ห้อ,ฮอนด้า,โตโยต้า ท่าน check แล้ว select database ยังไง ของผมทำไมเขียนยังไง ทำไมมันยาวจัง หัวข้อ: Re: โปรแกรมเมอร์ทุกท่านๆ ใช้ logic ไหนอยู่ครับ เริ่มหัวข้อโดย: tinnakorn ที่ 08 มีนาคม 2012, 15:39:22 ออกแบบ table ฐานข้อมูลยังไงหรือครับ ถ้าเป็น table เีดียว จะใช้คำสั่ง query ได้ไม่ยาก
ที่ผมใช้อยู่ รับค่า $x = 'AND 'x' = '".$_POST['x']."'; $y = 'AND 'y' = '".$_POST['y']."'; $z = 'AND 'z' = '".$_POST['z']."'; คำสั่ง sql : $q= 'select * from table where '".$x.$y.$z"'; $qr = mysql_query($q); อะไรประมาณนี้ พอช่วยได้ไหมครับ หัวข้อ: Re: โปรแกรมเมอร์ทุกท่านๆ ใช้ logic ไหนอยู่ครับ เริ่มหัวข้อโดย: blogbooking ที่ 08 มีนาคม 2012, 15:43:33 เปลี่ยนโจทย์ใหม่หน่อยนะครับ ว่าจะจัดหมวด(Category)แบบไหนดีสำหรับรายละเีอียดแบบนี้
------------------------- มี select อยู่ 5 ตัว เช่น select A มี 3 ค่า A1 A2 A3 select B มี 3 ค่า B1 B2 B3 select C มี 3 ค่า C1 C2 C3 select D มี 3 ค่า D1 D2 D3 select E มี 3 ค่า E1 E2 E3 ------------------------- <table border="1" width="100%"> <tr> <td>description(<span lang="th">รถตามตัวอย่าง</span>)</td> <td><span lang="th">ประเภท</span>(<span lang="th">เก๋ง</span>->A1<span lang="th">/กระบะ</span>->A2<span lang="th">/</span>suv->A3)</td> <td><span lang="th">ยี่ห้อ</span>(Toyota->B1/Honda->B2/Nissan->B3)</td> <td><span lang="th">ปี</span>(2010->c1/2011->c2/2012->c3)</td> <td><span lang="th">รุ่น</span>(specific)</td> </tr> <tr> <td>select A</td> <td>A1</td> <td>B1</td> <td>C1</td> <td>123</td> </tr> <tr> <td>select B</td> <td>A2</td> <td>B2</td> <td>C2</td> <td>254</td> </tr> <tr> <td>select C</td> <td>A3</td> <td>B3</td> <td>C3</td> <td>256</td> </tr> <tr> <td>select D</td> <td>A1</td> <td>B1</td> <td>C2</td> <td>452</td> </tr> <tr> <td>select E</td> <td>A2</td> <td>B2</td> <td>C1</td> <td>254</td> </tr> </table> ------------------------ แล้วจะใช้คำสั่ง sql select ข้อมูลขึ้นมาใช่ไหม ถ้าใช่ก็น่าจะแถวๆนี้ select field(ถ้าเอาทั้งหมดก็ *) from table_name whare ก็ว่ากันไปตามเงื่อนไขเช่น select *from table_name where ประเภท = A1 ผลก็จะโชว์เหลือเฉพาะ select A,Select E แล้วถ้าจะเลือกซ้่อน ก็ซ้อนกันไปอีกชั้นก็เท่านั้น ก็คือจากหน้า result ใส่ตัวแปรแล้วก็ไล่เข้าไปอีกทีโดยใช้ sql statement เหมือนเดิม แต่กรณี multi searching เค้าจะใช้แบบนี้ Var_type=....... Var_Year=....... Var_Brand=...... แล้วก็ select *from table_name where ประเภท =Var_type,Year=Var_Year,Brand=Var_brand เพราะจริงๆมันใช้ตัว filter ธรรมดาก็ได้ลองดูครับ หัวข้อ: Re: โปรแกรมเมอร์ทุกท่านๆ ใช้ logic ไหนอยู่ครับ เริ่มหัวข้อโดย: p44n ที่ 08 มีนาคม 2012, 15:54:46 ออกแบบ table ฐานข้อมูลยังไงหรือครับ ถ้าเป็น table เีดียว จะใช้คำสั่ง query ได้ไม่ยาก ที่ผมใช้อยู่ รับค่า $x = 'AND 'x' = '".$_POST['x']."'; $y = 'AND 'y' = '".$_POST['y']."'; $z = 'AND 'z' = '".$_POST['z']."'; คำสั่ง sql : $q= 'select * from table where '".$x.$y.$z"'; $qr = mysql_query($q); อะไรประมาณนี้ พอช่วยได้ไหมครับ มันควรจะเป็นแบบนี้ล่ะคับ แต่มันจะมี select ที่ไม่ได้เลือกค่ามาด้วย คือค่า "ทุกประเภท" คับ เช่น AND y='ฮอนด้า' กับ AND y='ทุกประเภท' ซึ่งในฐานข้อมูล ไม่มียี่ห้อทุกประเภท ผมต้องมาลบค่า $y ก่อน query ให้เหลือเฉพาะ where $x.$z ถ้าเราบังคับให้เลือกก็จบ แต่ความเป็นจริง เราก็ไม่อยากบังคับว่าต้องเลือก ขอบคุณคับ หัวข้อ: Re: โปรแกรมเมอร์ทุกท่านๆ ใช้ logic ไหนอยู่ครับ เริ่มหัวข้อโดย: ossytong ที่ 08 มีนาคม 2012, 16:19:08 normalization ใหม่เถอะครับ
ถ้าจะต้อง SELECT โดยใช้ ชื่อยี่ห้อ มากำหนดใน where แบบนี้ หัวข้อ: Re: โปรแกรมเมอร์ทุกท่านๆ ใช้ logic ไหนอยู่ครับ เริ่มหัวข้อโดย: MeenyFancy ที่ 08 มีนาคม 2012, 16:22:58 Front end
โค๊ด: <select id="car" name="car"> Back end โค๊ด: $car = $_POST["car"]; ประมาณนี้ปะ หัวข้อ: Re: โปรแกรมเมอร์ทุกท่านๆ ใช้ logic ไหนอยู่ครับ เริ่มหัวข้อโดย: tinnakorn ที่ 08 มีนาคม 2012, 17:08:10 ออกแบบ table ฐานข้อมูลยังไงหรือครับ ถ้าเป็น table เีดียว จะใช้คำสั่ง query ได้ไม่ยาก ที่ผมใช้อยู่ รับค่า $x = 'AND 'x' = '".$_POST['x']."'; $y = 'AND 'y' = '".$_POST['y']."'; $z = 'AND 'z' = '".$_POST['z']."'; คำสั่ง sql : $q= 'select * from table where '".$x.$y.$z"'; $qr = mysql_query($q); อะไรประมาณนี้ พอช่วยได้ไหมครับ มันควรจะเป็นแบบนี้ล่ะคับ แต่มันจะมี select ที่ไม่ได้เลือกค่ามาด้วย คือค่า "ทุกประเภท" คับ เช่น AND y='ฮอนด้า' กับ AND y='ทุกประเภท' ซึ่งในฐานข้อมูล ไม่มียี่ห้อทุกประเภท ผมต้องมาลบค่า $y ก่อน query ให้เหลือเฉพาะ where $x.$z ถ้าเราบังคับให้เลือกก็จบ แต่ความเป็นจริง เราก็ไม่อยากบังคับว่าต้องเลือก ขอบคุณคับ ถ้า "ทุกประเภท" ค่า x,y หรือ z ที่ส่งมาไม่มีค่านะครับ รับค่า if($_POST['x']){$x = 'AND 'x' = '".$_POST['x']."';}else{ $x =''; } //ไม่ส่ง x กรณีไม่มี x ส่งมาให้ $x = ''; if($_POST['y']){$y = 'AND 'y' = '".$_POST['y']."';}else{ $y =''; } //ไม่ส่งค่า y if($_POST['z']){$z = 'AND 'z' = '".$_POST['z']."';}else{ $z =''; } //ไม่ส่งค่า z $q= 'select * from table where id '".$x.$y.$z"'; ผมใช้วิธีนี้อยู่ ไอเดียคล้ายท่าน MeenyFancy พี่ post ไว้ข้างบนเลยครับ หัวข้อ: Re: โปรแกรมเมอร์ทุกท่านๆ ใช้ logic ไหนอยู่ครับ เริ่มหัวข้อโดย: tapanon ที่ 08 มีนาคม 2012, 17:42:57 งง :P
หัวข้อ: Re: โปรแกรมเมอร์ทุกท่านๆ ใช้ logic ไหนอยู่ครับ เริ่มหัวข้อโดย: Railway ที่ 08 มีนาคม 2012, 17:53:17 normalization ใหม่เถอะครับ ถ้าจะต้อง SELECT โดยใช้ ชื่อยี่ห้อ มากำหนดใน where แบบนี้ ผมก็ว่างั้น เขียนขอบเขตแล้ว normalization ใหม่ดูครับ เพื่อเวลาเรียกใช้งานได้ไม่ซับซ้อน ถ้าไม่ได้ normalization เขียนยังไงก็ไม่สั้นครับ และซับซ้อนด้วย หัวข้อ: Re: โปรแกรมเมอร์ทุกท่านๆ ใช้ logic ไหนอยู่ครับ เริ่มหัวข้อโดย: p44n ที่ 08 มีนาคม 2012, 18:03:21 สั้นสุด ได้ if else 5 รอบ จาก 5 select ก้อถือว่าโอคับ ดูเป็นระเบียบดี ไม่น่าจะหนัก
หัวข้อ: Re: โปรแกรมเมอร์ทุกท่านๆ ใช้ logic ไหนอยู่ครับ เริ่มหัวข้อโดย: tdelphi ที่ 08 มีนาคม 2012, 18:45:33 โจทย์นี้คล้าย จังหวัด-->อำเภอ-->ตำบล
ใช้ ajax ครับ หัวข้อ: Re: โปรแกรมเมอร์ทุกท่านๆ ใช้ logic ไหนอยู่ครับ เริ่มหัวข้อโดย: arabanaki ที่ 08 มีนาคม 2012, 20:36:29 เหมือนผมจะตอบได้ แต่คิดไปคิดมาเริ่มงงละ :wanwan031:
หัวข้อ: Re: โปรแกรมเมอร์ทุกท่านๆ ใช้ logic ไหนอยู่ครับ เริ่มหัวข้อโดย: bonshington ที่ 09 มีนาคม 2012, 19:16:04 table Parameter
tag key val เช่นว่า tag = CAR_CATEGORY, key = SPORT, val = รถสปอร์ต และ tag = CAR_COLOR, key = FFFFFF, val = White tag = CAR_COLOR, key = FF0000, val = Red เวลาใช้ select c.*, p_cat.*, p_color.* from Car c join Parameter p_cat on p_cat = 'CAR_CATEGORY' and p_cat.key = c.category join Parameter p_color on p_color = 'CAR_COLOR' and p_color.key = c.color ข้อดีคือรวม parameter ไว้ table เดียว ดูแลง่าย ทำ index ง่าย และไม่ซับซ้อน หรือถ้าอยาก select หลายๆที แต่ให้มันเร็ว แนะนำภาษา PL เช่น PL Postgres หรือ PL Oracle เช่นว่า declare _cars cursor for select * from Car; declare _colors cursor for select * from Parameter where tag = 'CAR_COLOR'; declare _categories cursor for select * from Car where tag = 'CAR_CATEGORY'; open _cars; open _colors; open _categories; return next _cars; return next _colors; return next _categories; ถ้าเป็น PL มันจะ return ได้หลาย select ด้วยการ call ครั้งเดียว หัวข้อ: Re: โปรแกรมเมอร์ทุกท่านๆ ใช้ logic ไหนอยู่ครับ เริ่มหัวข้อโดย: p44n ที่ 09 มีนาคม 2012, 19:59:04 ขอบคุณแนวทางของแต่ละท่าน ทำให้ผมได้ไอเดีย เขียนโค้ดที่สั้น กระชับ เข้าใจง่ายไว้ใช้งาน
|