ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programmingโปรแกรมเมอร์ทุกท่านๆ ใช้ logic ไหนอยู่ครับ
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: โปรแกรมเมอร์ทุกท่านๆ ใช้ logic ไหนอยู่ครับ  (อ่าน 2273 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
p44n
Verified Seller
สมุนแก๊งเสียว
*

พลังน้ำใจ: 105
ออฟไลน์ ออฟไลน์

กระทู้: 676



ดูรายละเอียด
« เมื่อ: 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 ของผมนั้น ผมมองมันน่าจะกระชับกว่านี้ได้ เลยหาความรู้เพิ่มเติมจากโปรแกรมเมอร์ในนี้ครับ
« แก้ไขครั้งสุดท้าย: 08 มีนาคม 2012, 15:17:57 โดย p44n » บันทึกการเข้า

Python, PHP OOP, MVC CodeIgniter, MongoDB, MySQL, MsSQL ,CSS Tableless, Responsive Design, Cross-platform, Javascript, jQuery, AngularJS, NodeJS,  Fackbook API, Paypal API, Omise API, Google Map API, C# Window Applications, .NET Framework, JAVA (Android Developer, JSP), Hybrid Application with Cordova + Ionic Framework, ReactJS, React Native
jubajuba
สมุนแก๊งเสียว
*

พลังน้ำใจ: 32
ออฟไลน์ ออฟไลน์

กระทู้: 536



ดูรายละเอียด เว็บไซต์
« ตอบ #1 เมื่อ: 08 มีนาคม 2012, 15:08:37 »

งงกะคำถามอะครับ
บันทึกการเข้า

tinnakorn
ก๊วนเสียว
*

พลังน้ำใจ: 22
ออฟไลน์ ออฟไลน์

กระทู้: 302



ดูรายละเอียด เว็บไซต์
« ตอบ #2 เมื่อ: 08 มีนาคม 2012, 15:20:48 »

หมายถึง คำสั่ง ส่งค่าจาก form (Select 5 ค่า)  ไป query จากฐานข้อมูล sql หรือครับ ?
บันทึกการเข้า

p44n
Verified Seller
สมุนแก๊งเสียว
*

พลังน้ำใจ: 105
ออฟไลน์ ออฟไลน์

กระทู้: 676



ดูรายละเอียด
« ตอบ #3 เมื่อ: 08 มีนาคม 2012, 15:23:50 »

select ประเภท เช่น ทุกประเภท, กระบะ,เก๋ง
select ยี่ห้อ เช่น ทุกยี่ห้อ,ฮอนด้า,โตโยต้า

ท่าน check แล้ว select database ยังไง ของผมทำไมเขียนยังไง ทำไมมันยาวจัง
บันทึกการเข้า

Python, PHP OOP, MVC CodeIgniter, MongoDB, MySQL, MsSQL ,CSS Tableless, Responsive Design, Cross-platform, Javascript, jQuery, AngularJS, NodeJS,  Fackbook API, Paypal API, Omise API, Google Map API, C# Window Applications, .NET Framework, JAVA (Android Developer, JSP), Hybrid Application with Cordova + Ionic Framework, ReactJS, React Native
tinnakorn
ก๊วนเสียว
*

พลังน้ำใจ: 22
ออฟไลน์ ออฟไลน์

กระทู้: 302



ดูรายละเอียด เว็บไซต์
« ตอบ #4 เมื่อ: 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);

อะไรประมาณนี้ พอช่วยได้ไหมครับ
บันทึกการเข้า

blogbooking
ก๊วนเสียว
*

พลังน้ำใจ: 15
ออฟไลน์ ออฟไลน์

กระทู้: 324



ดูรายละเอียด เว็บไซต์
« ตอบ #5 เมื่อ: 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>-&gt;A1<span lang="th">/กระบะ</span>-&gt;A2<span lang="th">/</span>suv-&gt;A3)</td>
      <td><span lang="th">ยี่ห้อ</span>(Toyota-&gt;B1/Honda-&gt;B2/Nissan-&gt;B3)</td>
      <td><span lang="th">ปี</span>(2010-&gt;c1/2011-&gt;c2/2012-&gt;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 ธรรมดาก็ได้ลองดูครับ
บันทึกการเข้า

สนใจเดินทางไป ทัวร์ต่างประเทศ แวะเข้าไปใน websites ได้นะครับ
เรามีบริการเกี่ยวกับการท่องเที่ยวมากมายเช่น Cisco Telepresence ,ทัวร์เกาหลี ,ทัวร์ญี่ปุ่น ,ทัวร์ฮ่องกง และอื่นๆหรือโทร 02-6381600 นะครับ
p44n
Verified Seller
สมุนแก๊งเสียว
*

พลังน้ำใจ: 105
ออฟไลน์ ออฟไลน์

กระทู้: 676



ดูรายละเอียด
« ตอบ #6 เมื่อ: 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
ถ้าเราบังคับให้เลือกก็จบ แต่ความเป็นจริง เราก็ไม่อยากบังคับว่าต้องเลือก

ขอบคุณคับ
« แก้ไขครั้งสุดท้าย: 08 มีนาคม 2012, 15:58:25 โดย p44n » บันทึกการเข้า

Python, PHP OOP, MVC CodeIgniter, MongoDB, MySQL, MsSQL ,CSS Tableless, Responsive Design, Cross-platform, Javascript, jQuery, AngularJS, NodeJS,  Fackbook API, Paypal API, Omise API, Google Map API, C# Window Applications, .NET Framework, JAVA (Android Developer, JSP), Hybrid Application with Cordova + Ionic Framework, ReactJS, React Native
ossytong
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 138
ออฟไลน์ ออฟไลน์

กระทู้: 1,151



ดูรายละเอียด
« ตอบ #7 เมื่อ: 08 มีนาคม 2012, 16:19:08 »

normalization ใหม่เถอะครับ

ถ้าจะต้อง SELECT โดยใช้ ชื่อยี่ห้อ มากำหนดใน where แบบนี้
บันทึกการเข้า
MeenyFancy
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 208
ออฟไลน์ ออฟไลน์

กระทู้: 1,270



ดูรายละเอียด
« ตอบ #8 เมื่อ: 08 มีนาคม 2012, 16:22:58 »

Front end
โค๊ด:
<select id="car" name="car">
  <option value="-1">select</option>
  <option value="1">Toyota</option>
  <option value="2">Honda</option>
  <option value="3">Mercedes</option>
  <option value="4">Audi</option>
</select>

<select id="year" name="year">
  <option value="-1">select</option>
  <option value="1">1990-2000</option>
  <option value="2">2001-2005</option>
  <option value="3">2006-2012</option>
</select>

Back end
โค๊ด:
$car = $_POST["car"];
$year = $_POST["year"];
$sql = "select * from cardatabase where 1=1 ";
if ($car <> "-1"){
   $sql = $sql . " and car = '" . $car . "'";
}
if ($year  <> "-1"){
   $sql = $sql . " and year = '" . $year . "'";
}

ประมาณนี้ปะ
บันทึกการเข้า

tinnakorn
ก๊วนเสียว
*

พลังน้ำใจ: 22
ออฟไลน์ ออฟไลน์

กระทู้: 302



ดูรายละเอียด เว็บไซต์
« ตอบ #9 เมื่อ: 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 ไว้ข้างบนเลยครับ
บันทึกการเข้า

tapanon
ก๊วนเสียว
*

พลังน้ำใจ: 17
ออฟไลน์ ออฟไลน์

กระทู้: 363



ดูรายละเอียด
« ตอบ #10 เมื่อ: 08 มีนาคม 2012, 17:42:57 »

งง  Tongue   
บันทึกการเข้า

รับเขียนเว็บไซด์และโปรแกรม (php, vb.net, c#.net, graphic, css, template)  ด้วยทีมงานมืออาชีพทุกคนครับ  PM มาเลยครับ
Railway
สมุนแก๊งเสียว
*

พลังน้ำใจ: 47
ออฟไลน์ ออฟไลน์

กระทู้: 605



ดูรายละเอียด
« ตอบ #11 เมื่อ: 08 มีนาคม 2012, 17:53:17 »

normalization ใหม่เถอะครับ

ถ้าจะต้อง SELECT โดยใช้ ชื่อยี่ห้อ มากำหนดใน where แบบนี้

ผมก็ว่างั้น เขียนขอบเขตแล้ว normalization ใหม่ดูครับ เพื่อเวลาเรียกใช้งานได้ไม่ซับซ้อน ถ้าไม่ได้ normalization เขียนยังไงก็ไม่สั้นครับ และซับซ้อนด้วย
บันทึกการเข้า

p44n
Verified Seller
สมุนแก๊งเสียว
*

พลังน้ำใจ: 105
ออฟไลน์ ออฟไลน์

กระทู้: 676



ดูรายละเอียด
« ตอบ #12 เมื่อ: 08 มีนาคม 2012, 18:03:21 »

สั้นสุด ได้ if else 5 รอบ จาก 5 select ก้อถือว่าโอคับ ดูเป็นระเบียบดี ไม่น่าจะหนัก
บันทึกการเข้า

Python, PHP OOP, MVC CodeIgniter, MongoDB, MySQL, MsSQL ,CSS Tableless, Responsive Design, Cross-platform, Javascript, jQuery, AngularJS, NodeJS,  Fackbook API, Paypal API, Omise API, Google Map API, C# Window Applications, .NET Framework, JAVA (Android Developer, JSP), Hybrid Application with Cordova + Ionic Framework, ReactJS, React Native
tdelphi
Global Moderator
หัวหน้าแก๊งเสียว
*****

พลังน้ำใจ: 308
ออฟไลน์ ออฟไลน์

กระทู้: 1,601



ดูรายละเอียด เว็บไซต์
« ตอบ #13 เมื่อ: 08 มีนาคม 2012, 18:45:33 »

โจทย์นี้คล้าย  จังหวัด-->อำเภอ-->ตำบล
ใช้ ajax ครับ
บันทึกการเข้า

arabanaki
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 37
ออฟไลน์ ออฟไลน์

กระทู้: 1,820



ดูรายละเอียด เว็บไซต์
« ตอบ #14 เมื่อ: 08 มีนาคม 2012, 20:36:29 »

เหมือนผมจะตอบได้ แต่คิดไปคิดมาเริ่มงงละ  wanwan031
บันทึกการเข้า

bonshington
ก๊วนเสียว
*

พลังน้ำใจ: 47
ออฟไลน์ ออฟไลน์

กระทู้: 376



ดูรายละเอียด
« ตอบ #15 เมื่อ: 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 ครั้งเดียว
บันทึกการเข้า
p44n
Verified Seller
สมุนแก๊งเสียว
*

พลังน้ำใจ: 105
ออฟไลน์ ออฟไลน์

กระทู้: 676



ดูรายละเอียด
« ตอบ #16 เมื่อ: 09 มีนาคม 2012, 19:59:04 »

ขอบคุณแนวทางของแต่ละท่าน ทำให้ผมได้ไอเดีย เขียนโค้ดที่สั้น กระชับ เข้าใจง่ายไว้ใช้งาน
บันทึกการเข้า

Python, PHP OOP, MVC CodeIgniter, MongoDB, MySQL, MsSQL ,CSS Tableless, Responsive Design, Cross-platform, Javascript, jQuery, AngularJS, NodeJS,  Fackbook API, Paypal API, Omise API, Google Map API, C# Window Applications, .NET Framework, JAVA (Android Developer, JSP), Hybrid Application with Cordova + Ionic Framework, ReactJS, React Native
หน้า: [1]   ขึ้นบน
พิมพ์