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

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

ThaiSEOBoard.comพัฒนาเว็บไซต์ProgrammingPHP สอบถามเรื่องดึงค่าจากฐานข้อมูลมาเปรียบเทียบหน่อยครับ
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: PHP สอบถามเรื่องดึงค่าจากฐานข้อมูลมาเปรียบเทียบหน่อยครับ  (อ่าน 6347 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
deadclosed
หัวหน้าแก๊งเสียว
*

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

กระทู้: 1,553



ดูรายละเอียด เว็บไซต์
« เมื่อ: 05 กันยายน 2011, 15:23:41 »

ปกติถ้าดึงมา 1 คำจะเปรียบเทียบได้ แต่พอ2คำขึ้นไปกลับเปรียบเทียบไม่ได้ครับ  wanwan023
งง ช่วยหน่อยครับ  wanwan017

โค๊ด:
$keyword=$_GET["brand"];
$check = mysql_query("SELECT keyword FROM keyword WHERE keyword = '$keyword';");
$data = mysql_fetch_array($check);

บันทึกการเข้า
smapan
Global Moderator
เจ้าพ่อบอร์ดเสียว
*****

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

กระทู้: 8,272



ดูรายละเอียด เว็บไซต์
« ตอบ #1 เมื่อ: 05 กันยายน 2011, 15:40:05 »

2คำขึ้นไป ที่ทำอยู่ปัจจุบันยังไงครับ ขอดูตัวอย่างหน่อยครับ
บันทึกการเข้า

จูมล่าโฮส สยามโฮสเว็บ modty.com
รวมที่พัก เช่ารายวัน ที่พักเช่ารายเดือนมากที่สุดแจ่มจริง
***Tel 083-757-1515 ติดปัญหา Joomla ตรงไหนรับปรึกษาฟรี โทรมาเถอะครับ ถ้าตอบได้ช่วยแน่นอน ไม่มีกั้ก. ***
ekateikate
ก๊วนเสียว
*

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

กระทู้: 480



ดูรายละเอียด
« ตอบ #2 เมื่อ: 05 กันยายน 2011, 15:48:33 »

 WHERE keyword = '".$keyword."'  รึเปล่าครับ

ไม่เเน่ใจ ลองเเก้ดู
บันทึกการเข้า

suchatd
คนรักเสียว
*

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

กระทู้: 151



ดูรายละเอียด เว็บไซต์
« ตอบ #3 เมื่อ: 05 กันยายน 2011, 15:54:40 »

form ของ "brand" ที่ Get มาเป็นรูปแบบไหนครับ checkbox หรือเปล่า
เพราะถ้าใช่ ค่าที่ get มาจะเป็น brand1, brand2, brand3 นะครับ

ดังนั้น ก่อนจะเอาเข้า sql โดยเทียบด้วย = ต้อง split ก่อนนะครับ
หรือไม่ก็ใช้ where cause ด้วย IN แทน = ครับผม

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

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

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

กระทู้: 1,553



ดูรายละเอียด เว็บไซต์
« ตอบ #4 เมื่อ: 05 กันยายน 2011, 15:56:14 »

2คำขึ้นไป ที่ทำอยู่ปัจจุบันยังไงครับ ขอดูตัวอย่างหน่อยครับ


อยู่ใน localhost ครับ ขอโทษด้วย  wanwan017
บันทึกการเข้า
deadclosed
หัวหน้าแก๊งเสียว
*

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

กระทู้: 1,553



ดูรายละเอียด เว็บไซต์
« ตอบ #5 เมื่อ: 05 กันยายน 2011, 15:58:58 »

ผมว่ามันต้องมีปัญหากับ " " แน่ๆเลย
บันทึกการเข้า
nst_nk
Verified Seller
เจ้าพ่อบอร์ดเสียว
*

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

กระทู้: 3,396



ดูรายละเอียด เว็บไซต์
« ตอบ #6 เมื่อ: 05 กันยายน 2011, 16:17:06 »

 wanwan023  อ่านแล้ว งงๆ ครับ ต้องการเปรียบเทียบ แล้ว out put ต้องการอะไรครับ ?

 จริงๆยก code มาให้ดูก็ได้ครับ จะได้ช่วยๆกัน ถ้ายกมานิดๆหน่อย + คำอธิบายไม่มาก
 คงช่วยกันไม่ได้ครับ ( เพราะว่าต้องเดา )
บันทึกการเข้า


  ◤◤ รับเขียนระบบต่างๆครับ เช่น ระบบ Shipping , ร้านค้าออนไลน์ , อสังหาริมทรัพย์ , ระบบจัดการหลังบ้านทุกประเภท  สอบถามได้ครับ Line : bigznst ◥◥
amazegu
สมุนแก๊งเสียว
*

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

กระทู้: 875



ดูรายละเอียด
« ตอบ #7 เมื่อ: 05 กันยายน 2011, 16:26:06 »

อยู่ใน localhost แล้วยังไง คนที่เค้าจะช่วยแค่อยากเห็นโค้ดที่ท่านว่ามันไม่ได้ มันเป็นยังไง จะได้ช่วยดูได้

ก็แค่ก็อปปี้มาวาง แค่นั้นเอง ...
บันทึกการเข้า
deadclosed
หัวหน้าแก๊งเสียว
*

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

กระทู้: 1,553



ดูรายละเอียด เว็บไซต์
« ตอบ #8 เมื่อ: 05 กันยายน 2011, 16:29:06 »

อธิบายแบบละเอียดเลยน่ะครับ

 wanwan017
ผมส่งค่าจากหน้าแรก โดยส่งค่าเป็น GET ไป จากโค๊ดข้างล่าง
โค๊ด:
   <form action="page.php" method="get" >    
    <div class="top_search2">
        <div class="search_text"><a href="#">Advanced Search</a></div>
            <input type="text" class="search_input" name="brand" />
            <input type="image" src="images/search.gif" class="search_bt"/>
        </div>
</form>

เมื่อส่งค่า ไปหน้า page.php
จะได้ค่าตัวแปรมาเปรียบเทียบโดยเอาค่า brand มาเปรียบเทียบกับค่าในฐานข้อมูลว่า มีแล้วหรือไม่
โดยการทดสอบโค๊ด จาก
โค๊ด:
$check = mysql_query("SELECT keyword FROM tablekeyword WHERE keyword = '$keyword';");
$data = mysql_fetch_array($check);

if(empty($data)){
echo $data;
echo "empty";
}else {echo "no emtpy";echo $data;}

โค๊ดนี้ผมเอามาทดสอบว่ากรณีมีค่าตัวแปรให้มันข้อมูลตามเงื่อนไข

จากการทดสอบผมลองทดสอบ ส่งค่าตัวแปรมา 1 คำ ผลลัพธ์ที่ได้ ตรงตามต้องการ  wanwan011
แต่พอสองคำขึ้น ข้อมูลจะไม่ได้ล่ะ

เลยมาหามือกระบี่ช่วยหน่อย

ต้องขอโทษด้วยเรื่องพิมพ์แล้วอ่านไม่เข้าใจ  wanwan031 วันๆไม่ได้พูดกับใครเลยครับ เรียบเรียงคำไม่ค่อยถูก  wanwan017


« แก้ไขครั้งสุดท้าย: 05 กันยายน 2011, 16:38:21 โดย deadclosed » บันทึกการเข้า
deadclosed
หัวหน้าแก๊งเสียว
*

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

กระทู้: 1,553



ดูรายละเอียด เว็บไซต์
« ตอบ #9 เมื่อ: 05 กันยายน 2011, 16:29:42 »

อยู่ใน localhost แล้วยังไง คนที่เค้าจะช่วยแค่อยากเห็นโค้ดที่ท่านว่ามันไม่ได้ มันเป็นยังไง จะได้ช่วยดูได้

ก็แค่ก็อปปี้มาวาง แค่นั้นเอง ...

ขอโทษทีครับพอดีพิมพ์ช้าไปหน่อย  wanwan017
บันทึกการเข้า
amazegu
สมุนแก๊งเสียว
*

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

กระทู้: 875



ดูรายละเอียด
« ตอบ #10 เมื่อ: 05 กันยายน 2011, 16:38:16 »

ลอง print_r($_GET); ที่หน้า page.php ดูครับ จะได้รู้ว่ามีค่าส่งมาจริงๆหรือเปล่า

ใช้ print_r() ในการ ดีบั๊กโค้ด จะช่วยได้เยอะ

ส่วนการส่งมาหลายๆค่าก็ประกาศ name ให้มันต่างกัน ถ้าจะให้ดีใส่ id ให้มันด้วย

<input type="" name="" id="" value="" />

ผมยังไม่เข้าใจความต้องการของท่านอยู่ดี ถ้าจะเปรียบเทียบหลายค่าใน db ก็ใช้ AND หรือ OR หรือ LIKE ก็ว่าไป

WHERE a='".$key1."' AND b='".$key2."'...

บันทึกการเข้า
kppser
ก๊วนเสียว
*

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

กระทู้: 413



ดูรายละเอียด เว็บไซต์
« ตอบ #11 เมื่อ: 05 กันยายน 2011, 16:39:21 »

ขอตอบจากความเข้าใจเล็กน้อยๆนะครับ Tongue
ผมคิดว่าน่าจะกำหนดเครื่องหมายคั่นระหว่าง keyword เช่น ,  หรือ ใช้ช่องว่างเป้นต้นนะครับ wanwan013
แต่กรณีที่ใช้ช่องว่างอยู่แล้วก็จะใช้ ฟังก์ชันในการแยก คือ $keyword[] = explode(' ',$keyword);
หลังจากใช้คำสั่งนี้แล้วก็จะได้ตัวแปรอาเรย์โดยการเรียกใช้(ถ้าจำไม่ผิด)ก็จะเป็น  $keyword[0] พอได้ตัวแปรมาแล้วก็ให้นำไปค้นหาในฐานข้อมูลต่อไปครับ
คิดว่าคงจะไม่ทำให้งงไปนะครับ Embarrassed
บันทึกการเข้า

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

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

กระทู้: 1,553



ดูรายละเอียด เว็บไซต์
« ตอบ #12 เมื่อ: 05 กันยายน 2011, 16:43:06 »

ลอง print_r($_GET); ที่หน้า page.php ดูครับ จะได้รู้ว่ามีค่าส่งมาจริงๆหรือเปล่า

ใช้ print_r() ในการ ดีบั๊กโค้ด จะช่วยได้เยอะ

ส่วนการส่งมาหลายๆค่าก็ประกาศ name ให้มันต่างกัน ถ้าจะให้ดีใส่ id ให้มันด้วย

<input type="" name="" id="" value="" />

ผมยังไม่เข้าใจความต้องการของท่านอยู่ดี ถ้าจะเปรียบเทียบหลายค่าใน db ก็ใช้ AND หรือ OR หรือ LIKE ก็ว่าไป

WHERE a='".$key1."' AND b='".$key2."'...



ขอบคุณครับเดี่ยวไปลอง

คือที่ผมอยากเอาไปเปรียบเทียบคือ
สมมุติ
- ผมกดส่งคำว่า "moon light" มาจาก Form จากนั้นผมจะเอา "moon light" ไปเปรียบเทียบในdatabase ว่าคำนี้มีอยู่หรือไม่
ถ้าไม่มีให้เพิ่มค่า "moon light" ลองไป ถ้ามีแล้วให้ข้ามไป ประมาณนี้ครับ  wanwan019
บันทึกการเข้า
amazegu
สมุนแก๊งเสียว
*

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

กระทู้: 875



ดูรายละเอียด
« ตอบ #13 เมื่อ: 05 กันยายน 2011, 16:55:13 »

โค๊ด:
$res = @mysql_query("SELECT id FROM table WHERE kw = '".$_GET['brands']."'");
if(@mysql_num_rows($res) == 0){//แสดงว่าไม่มีข้อมูลอยู่

@mysql_query("INSERT INTO table SET kw = '".$_GET['brands']."'");
}else{
echo "มีข้อมูลแล้ว";
}
บันทึกการเข้า
9-Kumaro
บุคคลทั่วไป
« ตอบ #14 เมื่อ: 06 กันยายน 2011, 20:55:51 »

1. ตัดช่องว่างออก = trim($_GET["brand"]);
2. เปลี่ยน เงื่อนไข WHERE (keyword = \"$keyword\")  กันฟันเดี่ยวฟันคู่

แค่นี้คงไม่ผิดพลาดแล้วครับ ... คงช้าไปแล้วมั้งตู


$keyword = trim($_GET["brand"]);
   $check = mysql_query("SELECT keyword FROM tablekeyword WHERE (keyword = \"$keyword\") ");
   $data = mysql_fetch_array($check);
   
   if(empty($data)){
      echo "empty";
   } else {
      echo "No Emtpy <br /> Data Found = $data";
   }
บันทึกการเข้า
deadclosed
หัวหน้าแก๊งเสียว
*

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

กระทู้: 1,553



ดูรายละเอียด เว็บไซต์
« ตอบ #15 เมื่อ: 06 กันยายน 2011, 21:08:40 »

1. ตัดช่องว่างออก = trim($_GET["brand"]);
2. เปลี่ยน เงื่อนไข WHERE (keyword = \"$keyword\")  กันฟันเดี่ยวฟันคู่

แค่นี้คงไม่ผิดพลาดแล้วครับ ... คงช้าไปแล้วมั้งตู


$keyword = trim($_GET["brand"]);
   $check = mysql_query("SELECT keyword FROM tablekeyword WHERE (keyword = \"$keyword\") ");
   $data = mysql_fetch_array($check);
   
   if(empty($data)){
      echo "empty";
   } else {
      echo "No Emtpy <br /> Data Found = $data";
   }


ขอบคุณครับ ผมตัดสินใจเพิ่มอีกเร็คคอร์ด เอาไว้ใส่ตัวที่ตัดช่องว่างทั้งหมด จะเอามาใช้ตอนเปรียบเทียบ  wanwan019
บันทึกการเข้า
thenetxx
หัวหน้าแก๊งเสียว
*

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

กระทู้: 1,986



ดูรายละเอียด เว็บไซต์
« ตอบ #16 เมื่อ: 07 กันยายน 2011, 17:47:27 »

 wanwan004

โค๊ด:
where keyword like '%$keyword%';
บันทึกการเข้า

Develop site but can't develop life
ASIA
djoser
คนรักเสียว
*

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

กระทู้: 152



ดูรายละเอียด
« ตอบ #17 เมื่อ: 08 กันยายน 2011, 12:33:23 »

ไม่ลองใช้ syntax sql แบบนี้อ่ะคะ SELECT keyword FROM keyword WHERE keyword in ($keyword) ;
โดยที่ถ้า keyword เป็น string จะต้องเอามาทำให้อยู่ในรูปแบบเช่นนี้ก่อน $keyword = " 'A','B', 'C' ";
แต่ถ้าเป็น ตัวเลข ก็ไม่ต้องทำอะไรเพิ่มอ่ะค่ะ
บันทึกการเข้า
หน้า: [1]   ขึ้นบน
พิมพ์