เขียนโค้ดยังไงคะ อยากได้โค้ด search แบบนี้ต้องเขียนยังไงคะ สินค้า_________บริษัท________จากวันที่
ไม่มีแนวให้ต้อบเลยนะเนี่ย
Date :
29 พ.ย. 2550 13:03:29
By :
ravatna
เอางี้
สร้างฟอร์มสำหรับรับค่าการค้นหาของคุณขึ้นมา
แล้วก้อสร้างหน้าแสดงผลการค้นหาขึ้นมา
จากนั้นทำปุ่ม Submit ไปยังหน้าแสดงผลการค้นหา
ทำการติดต่อฐานข้อมูล แล้วใช้คำสั่ง SQL เพื่อทำการค้นหาข้อมูลตามที่คุณต้องการ แค่นี้ก้อได้แล้วครับ
(ลองศึกษาเรื่องพวกนี้ดูสิ แล้วจะทำได้ครับ)
Date :
29 พ.ย. 2550 13:25:20
By :
หนุ่มคุง
คือว่า _________ อันนี้ให้ใส่ข้อมูล รับค่าจาก text เช่นสินค้า ram บริษัท a จากวันที่ 10/11/50 5ถึงวันที่ 20/11/50 แล้วกดปุ่มค้นหา จะแสดงรายการตามที่เราใส่อ่ะค่ะ
ขอบคุณค่ะ
Date :
29 พ.ย. 2550 13:27:21
By :
ขอบคุณค่ะ
คุณหนุ่มคุงคะ สร้างฟอร์มและหน้าแสดงการค้นหาแล้ว แต่ติดตรง sql อ่ะคะคือมันมีหลายเงื่อนไขมาก เลยงง ยังไงขอโค้ดตัวอย่างหน่อยนะคะ
Date :
29 พ.ย. 2550 13:31:07
By :
คืบหน้ามาหน่อย
พอ submit form แล้วจะได้ตัวแปรดังนี้ใช่ปะคะ $goods , $company,
ส่วนของวันที่ก็แยกเป็น ช่อง วันที่($lday), เดือน($lmonth), ปี($lyear) ถึงวันที่ วันที่($nday), เดือน($nmonth), ปี($nyear)
สมมุติเราจะแยกการค้นหาออกเป็น 2 กรณี คือ
1 มีวันที่
2 ไม่มี
กรณีที่ 1 แบบมีวันที่
แบ่งได้อีก กรณี
คือ 1.1 สินค้า+วัน
1.2บริษัท+วัน
1.3 สินค้า+บริษัท+วัน
1.4 วันที่เท่านั้น
กรณีที่ 2 แบบไม่มีวันที่
แบ่งได้อีก กรณี
คือ 2.1 สินค้าเท่านั้น
2.2 บริษัทเท่านั้น
2.3 สินค้า+บริษัท
----------------------------------------------------------
ตรงวันที่เขียน script เช็คว่าถ้าเลือกวันที่ในการค้นหาให้เลือกเดือน เลือกปี และ ถึงวันที่ วัน เดือน ปี ให้ครบทุกช่องด้วยอะค่ะ
แต่ถ้าไม่เลือกก็ไม่เป็นไร (ตัวอย่าง script ข้างล่างค่ะ )
<script>
function checkday(){
if(docoment.form1.lday.value!='' || document.form1.lmonnt.value!='' || document.form1.lyear.value!='' || document.form1.nday.value!='' || document.form1.nmonth.value!='' || document.form1.nyear.value!='')
alert("หากคุณจะใช้วันที่เป็น keyword กรุณากรอกวันเดือนปี ให้ครบทุกช่องด้วยค่ะ");
return false;
}
}
</script>
--------------------------------------------------------
ตรงหน้า show search ก็ select ข้อมูลโดยใช้ keyword ที่ได้มาใช่ปะคะ ตอนนี้เรามี 2 กรณีใหญ่ๆ และ ก็มีกรณีย่อยๆอีก
เขียนหน้าตาก็ออกมาประมาณนี้
//บรรทัดข้างล่างคือค้นหาโดยไม่มีวันที่เป็น keyword
if($lday=="" && $lmonth=="" && $lyear=="" && $nday=="" && $nmonth=="" &&$nyear==""){
if($goods!=""&&$company!=""){
$sql="select * from buy where goods like '%".$goods."%' and company like '%".$company."%'";
}elseif($goods!=""&&$company==""){
$sql="select * from buy where goods like '%".$goods."%'";
}elseif($goods==""&&$company!=""){
$sql="select * from buy where company like'%".$company."%'";
}else{
$sql="select * from buy";
}
}
// ข้างล่างคือค้นหาโดยมีวันที่เป็น keyword ด้วย
else{
//นำวันเดือนปีมาต่อกัน
$l="$lyear-$lmonth-$lday";
$n="$nyear-$nmonth-$nday";
if($goods!=""&&$company!=""){
$sql="select * from buy where goods like '%".$goods."%' and company like '%".$company."%' and date>= '$l' and date<='$n'";
}elseif($goods!=""&&$company==""){
$sql="select * from buy where goods like '%".$goods."%' and date>= '$l' and date<='$n'";
}elseif($goods==""&&$company!=""){
$sql="select * from buy where company like'%".$company."%' and date>= '$l' and date<='$n'";
}elseif($goods==""&&$company==""){
$sql="select * from buy where date>= '$l' and date<='$n'";
}else{
$sql="select * from buy";
}
}
แล้วก็ query ข้อมูล นำมาแสดง จบการประมวลผล
Date :
29 พ.ย. 2550 13:33:46
By :
hobbits
อันที่จริงการเขียนโค้ด อย่างที่เขียนหาผลการค้นหาเนี่ย บางทีเราดูๆแล้วมันเยอะแยะมาก ยิ่งใช้ keyword หลายประเภทความน่าจะเป็นในการค้นหาก็ยิ่งเพิ่มขึ้นแบบไม่อยากจะเซดเลยใช่อะป่าว แบบ 2 ยกกำลัง 5 งี้ ไคเขียนก็บร้าตายระค่ะ เอิกๆ
วิธีแก้ก็ทำแบบแยกกรณีอย่างที่เราทำ หรืออาจแบ่งเป็นสอง form สาม form ให้เค้าเลือกค้นหาก็ได้อะค่ะ ไม่จำเป็นต้อง
นำมารวมกัน form เดว นะจ้ะ
Date :
29 พ.ย. 2550 13:39:42
By :
hobbits
ขอบคุณคุณhobbits นะคะ แต่ถ้าเราไม่แยกวันเดือนปีล่ะคะ คือรับมาค่าเดียวเป็นวันเดือนปีเลยค่ะ เช่น 10/11/50 อย่างนี้นะคะ
Date :
29 พ.ย. 2550 13:44:43
By :
:P
ตอนนี้ออนอยู่ยังไงเข้ามาช่วยด้วยนะคะ [email protected]
Date :
29 พ.ย. 2550 13:46:59
By :
:p
ในฐานข้อมูลเรามันจะเก็บวันที่เป็นแบบนี้อะค่ะ yyyy-mm-dd
เพราะงั้นเวลา select ข้อมูล ตัวแปรวันที่เราต้องมีรูปแบบเดียวกันคือ yyyy-mm-dd
ถ้างั้นเวลา input ข้อมูลเข้ามาเป็นรูปแบบอื่น ก่อนที่จะเอามา select ก็ต้องทำให้เป็นรูปแบบนี้ก่อน
สังเกตว่าเราก็ต้องเอามาต่อกันเหมือนกัน
แต่สมมุติว่าเปง 10/11/50 แบบนี้ก็ ใช่นี่เลย
$date_arr = explode("/", $date); // $date ก็วันที่ที่เราจะเอามาแปลงไง ก็ให้ $date=10/11/50 ปะมาณนี้
// ข้างบนเป็นการแยกตัวอักษรที่คั่นด้วยเครื่องหมาย / ออกทำเปง array
//จาได้ $date_arr[0]=10 , $date_arr[1]=11 , $date_arr[2]=50 อย่างงี้
// พอได้ถึงนี่แล้วก็เสร็จโก๋ เอาไปต่อกันใหม่เลย
-------------------------------------------------------------
//นำวันเดือนปีมาต่อกัน
$l="$date_arr[2]-$date_arr[1]-$date_arr[0]";
// ข้างล่างเหมือนกันแค่เปลี่ยนตัวแปรจ้า
$n="$ndate_arr[2]-$ndate_arr[1]-$ndate_arr[0]";
-------------------------------------------------
Date :
29 พ.ย. 2550 14:00:56
By :
hobbits
ครับแบบนี้สิครับ
ใช้การต่อตัวแปรเอา คีองี้ เราสร้างคำสั่ง SQL ที่ตายตัวก่อน
จากนั้นทำการตรวจสอบการ Submit ของผู้ใช้ว่ามีการกรอกข้อมูลเข้ามาหรือเปล่าโดยนำไปใส่ตัวแปร เช่น
(pname=ชื่อสินค้า),(cname=ชื่อบริษัท)
$where="";
if(len($pname==0)
{$where=$where."Where table1.pname='$pname'";}
if(len($cname)==0)
{$where=$where."Where table2.cname='$cname'";}
(อันนี้ในกรณีที่หลายตารางนะครับ สมมตินะ)
$sql="Select * From table1 inner join table2 on table1.idn=table2.idn".$where;
ไว้แค่นี้ เมื่อทำการ Submit โดยไม่กรอกข้อมูลจะทำการแสดงข้อมูลทั้งหมด
อะไรประมาณเนี้ยอ่ะครับ.. จะเข้าใจเรามะเนี้ย
ลองดูนะครับ
Date :
29 พ.ย. 2550 14:01:42
By :
หนุ่มคุง
เข้าใจแล้วค่ะ คุณหนุ่มคุง แล้ววันที่ละคะ
Date :
29 พ.ย. 2550 14:13:19
By :
:P
เขียนโค้ดป่มค้นหายังไงค่ะ
Date :
2010-08-03 13:59:29
By :
น้องแป้ง
$l="$lyear-$lmonth-$lday";
$n="$nyear-$nmonth-$nday";
$sql="select * from buy where goods like '%".$goods."%' and company like '%".$company."%' and date between $l and $n";
ลองแบบนี้ดูอะยังคับ
"เขียนโค้ดป่มค้นหายังไงค่ะ"
ผมใช้วิธี ส่งคีย์ ไป อีกหน้า แล้ว ให้มันส่งคีย์ที่เราส่งไปกลับมา แล้วเอามา ทำ sql อะครับ
เพราะว่าผม ใช้ AJAX (ตอนนี้ยังอ่านว่า อะจ๊ากซ์ อยู่) ไม่เป็น
ประวัติการแก้ไข 2010-08-03 16:17:32
Date :
2010-08-03 16:13:35
By :
loginthc
ตรงวันที่หา javascript มาใส่จิ
Date :
2010-08-03 16:47:02
By :
aefcpe49
Load balance : Server 01