|
|
|
การค้นหาแบบหลายเงื่อนไข ทำยังไงก็ค้นหาไม่เจอ ท่านที่ผ่านประสบการณ์มาชี้แนะด้วยครับ |
|
|
|
|
|
|
|
ไม่รู้ทำอะไรผิดตรงไหนรึป่าว ที่ต้องการคือ ถ้าผู้หาข้อมูลไม่เลือกอะไร ข้อมูลทั้งหมดจะถูกดึงมาแสดง แต่ถ้าเลือกอย่างน้อย 1 ตัวเลือกก็จะค้นหาตามสิ่งที่ค้น ผมทำผิดหรือเปล่าครับเป็นครึ่งอาทิตย์แล้วสำหรับการค้นหา ท่านใดรู้หรือมีตัวอย่างใกล้เคียงโปรดชี้แนะด้วยครับ
ส่วนฟอร์มรับข้อมูล
Code (PHP)
<form name="search" method="post" action="search.php">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>
<select name="type">
<option value="" selected="selected">--- ประเภท Type ---</option>
<option value="hotel">โรงแรม Hotel</option>
<option value="resort">รีสอร์ท Resort</option>
<option value="condo">คอนโด Condo</option>
<option value="land">ที่ดิน Land</option>
</select>
<select name="location">
<option value="" selected="selected">--- พื้นที่ Area ---</option>
<option value="12">บางเสร่ Bang Sare</option>
<option value="15">สัตหีบ Sattahip</option>
<option value="17">นาเกลือ Naklua</option>
<option value="18">ชัยพฤกษ์ 2 พัทยา Chaiyapruek 2 Pattaya</option>
<option value="20">พัทยาใต้ South pattaya</option>
<option value="29">บ้านอำเภอ Baan Amphur</option>
<option value="49">พัทยาเหนือ North Pattaya</option>
<option value="102">พัทยาฝั่งตะวันออก East Pattaya</option>
<option value="101">พัทยากลาง Central Pattaya</option>
<option value="99">จอมเทียน Jomtien</option>
<option value="100">นาจอมเทีย Na Jomtien</option>
</select>
<select name="for">
<option value="" selected="selected">-- สำหรับ For --</option>
<option value="sell">ขาย Sell</option>
<option value="rent">เช่า Rent</option>
<option value="all">เช่าหรือขาย All</option>
</select>
<select name="price">
<option value="price between 1 and 10000000000000000000 " selected="selected">--- ราคา Price ---</option>
<option value="">--- For rent ---</option>
<option value="">All</option>
<option value="rent between 0 and 5000 ">Under 5,000</option>
<option value="rent between 5000 and 10000 ">5,000-10,000</option>
<option value="rent between 10000 and 20000 ">10,000-20,000</option>
<option value="rent between 20000 and 40000 ">20,000-40,000</option>
<option value="rent between 40000 and 10000000000000000000 ">Over 40,000</option>
<option value="">--- For sale ---</option>
<option value="">All</option>
<option value="price between 0 and 1000000 ">Under 1,000,000</option>
<option value="price between 1000000 and 2000000 ">1,000,000-2,000,000</option>
<option value="price between 2000000 and 3000000 ">2,000,000-3,000,000</option>
<option value="price between 3000000 and 4000000 ">3,000,000-4,000,000</option>
<option value="price between 4000000 and 5000000 ">4,000,000-5,000,000</option>
<option value="price between 5000000 and 6000000 ">5,000,000-6,000,000</option>
<option value="price between 6000000 and 7000000 ">6,000,000-7,000,000</option>
<option value="price between 7000000 and 8000000 ">7,000,000-8,000,000</option>
<option value="price between 8000000 and 9000000 ">8,000,000-9,000,000</option>
<option value="price between 9000000 and 10000000 ">9,000,000-10,000,000</option>
<option value="price between 10000000 and 10000000000000000000 ">Over 10,000,000</option>
</select>
<input type="submit" value="Search" style="width:97px;"/>
</td>
</tr>
</table>
</form>
ส่วนของหน้าการรับค่าเพื่อค้นหา
Code (PHP)
<?
//กำหนดแถวและคอลัมน์
$num_col=1;
$num_row=1;
//เรคคอร์ดที่สิ้นสุด
$page_size=$num_col*$num_row;
//กำหนดค่าเริ่มต้น
$page=isset($_REQUEST['page'])?$_REQUEST['page']:1;
$page=$page-1;
$keyword=isset($_POST['keyword'])?$_POST['keyword']:'';
$type=isset($_POST['type'])?$_POST['type']:'';
$location=isset($_POST['location'])?$_POST['location']:'';
$for=isset($_POST['for'])?$_POST['for']:'';
$price=isset($_POST['price'])?$_POST['price']:'';
//หาจำนวนหน้า WHERE product_id LIKE '%$keyword%'
$sql="SELECT COUNT(*) FROM product ";
$sql.=" WHERE ($price) ";
if(!empty($_POST['type'])){$sql.=" and type='".$_POST['type']."' ";};
if(!empty($_POST['location'])){$sql.=" and location='".$_POST['location']."' ";};
if(!empty($_POST['for'])){$sql.=" and product_for='".$_POST['for']."' ";};
/*if(!empty($_REQUEST['price'])){$sql.=" ".$price." ";};*/
$result=mysql_query($sql)or die(mysql_error());
$row=mysql_fetch_array($result);
$num=$row['COUNT(*)'];
//หมายเลขหน้า
$num_page=ceil($num/$page_size);
//เรคคอร์ดที่เริ่ม
$start_record=$page*$page_size;
//เลือกข้อมูล product_id LIKE '%$keyword%' or
$sql="SELECT * FROM product WHERE display='1' and success='0' ";
$sql.=" and ($price) ";
if(!empty($_POST['type'])){$sql.=" and type='".$_POST['type']."' ";};
if(!empty($_POST['location'])){$sql.=" and location='".$_POST['location']."' ";};
if(!empty($_POST['for'])){$sql.=" and product_for='".$_POST['for']."' ";};
/*if(!empty($_REQUEST['price'])){$sql.=" ".$price." ";}; */
$sql.=" ORDER BY product_id desc LIMIT $start_record, $page_size";
$result=mysql_query($sql)or die(mysql_error());
$num=mysql_num_rows($result);
?>
ส่วนของฐานข้อมูลที่เก็บข้อมูลที่จะค้นหา
Code (SQL)
--
-- โครงสร้างตาราง `product`
--
CREATE TABLE `product` (
`product_id` int(11) unsigned NOT NULL auto_increment,
`name` text NOT NULL,
`email` text NOT NULL,
`tel` text NOT NULL,
`comment` text NOT NULL,
`type` text NOT NULL,
`product_for` text NOT NULL,
`village` text NOT NULL,
`location` text NOT NULL,
`price` int(11) NOT NULL,
`rent` int(11) NOT NULL,
`subject` text NOT NULL,
`detail` text NOT NULL,
`display` tinyint(4) NOT NULL default '0',
`status` tinyint(1) NOT NULL default '0',
`date` date NOT NULL,
`view` int(11) NOT NULL default '0',
`read_product` tinyint(4) NOT NULL default '0',
`success` tinyint(4) NOT NULL default '0',
`normal_price` int(11) NOT NULL,
`normal_rent` int(11) NOT NULL,
PRIMARY KEY (`product_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=51 ;
--
-- dump ตาราง `product`
--
INSERT INTO `product` VALUES (45, 'ชื่อคนโพสต์', '[email protected]', '0999999999', 'คอมเม้นต์', 'resort', 'sell', '555', '29', 250000000, 0, 'หัวข้อ55', 'เนื้อที่ 1 ไร่, ห้อง 32 ตรม. 43 ห้อง, ค่าเช่าไม่รวมอาหารเช้าคืนล่ะ low.880- hight1,200บาท. ห้อง 65 ตรว.1ห้องนอน 1 ห้องน้ำ 6 ห้อง 1,790/คืน 2ห้องนอน2ห้องน้ำ 2,890/คืน55', 1, 1, '2013-08-07', 140, 1, 0, 20000000, 0);
เฉพาะการค้นหาทำมายเกือบครึ่งอาทิตย์ละครับ ไม่รู้มันเป็นที่อะไร
Tag : PHP, MySQL
|
|
|
|
|
|
Date :
2013-08-12 12:49:13 |
By :
pengbuts |
View :
1576 |
Reply :
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
echo $sql;
เอา SQL ออกมาดูครับ หรือไม่เอาไปทดสอบใน phpMyAdmin ครับ
Code (PHP)
<?php
$strSQL = "SELECT * FROM table WHERE 1 ";
if($_POST["txt1"] != "")
{
$strSQL .= " AND F1 = '".$_POST["txt1"]."' ";
}
if($_POST["txt2"] != "")
{
$strSQL .= " AND F2 = '".$_POST["txt2"]."' ";
}
?>
|
|
|
|
|
Date :
2013-08-13 06:30:17 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 02
|