ช่วยดูโค๊ดการค้นหาข้อมูลหน่อยครับ พอดีว่าผมเขียนโค๊ดการค้นหาข้อมูลของสินค้า ลองทดสอบดูแล้วก็ค้นหาได้ตามปกติ
พอดีว่าผมเขียนโค๊ดการค้นหาข้อมูลของสินค้า ลองทดสอบดูแล้วก็ค้นหาได้ตามปกติ แต่ว่าเวลาจะไปดูหน้าอื่นนี่สิครับมันไม่ยอมส่งค่าไปกับ link หน้าให้นะครับแก้ไขมาเกือบสองวันแล้ว ปวดหัวมาก ช่วยดดูให้หน่อยนะครับ
ขอบคุณครับ
Code (PHP)
<?
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-874" />
<title>ค้นหารายการสินค้า</title>
<link href="css/black-ms.css" rel="stylesheet" type="text/css" />
</head>
<body>
<form id="form1" name="form1" method="post" action="<? echo $_SERVER['PHP_SELF'];?>">
<?
include("connect.php");
/*$sql="select * from tbproduct";
$data=mysql_query($sql);*/
?>
<table width="731" align="center" class="ms13">
<tr>
<td width="46"> </td>
<td width="321">ค้นหารายการสินค้า</td>
<td width="85"> </td>
<td width="259"> </td>
</tr>
<tr>
<td> </td>
<td colspan="2" align="right">ยี่ห้อสินค้า
<select name="selType" id="selType">
<option value="0">= เลือกยี่ห้อทั้งหมด =</option>
<?
$sql_type ="select * from tbtype order by type_name";
$data_type = mysql_query($sql_type);
while($rs=mysql_fetch_array($data_type)){
if($rs[type_id]==$selType){
?>
<option value="<? echo $rs[type_id];?>" selected="selected"><? echo $rs[type_name];?></option>
<?
}else{
?>
<option value=" <? echo $rs[type_id];?>"><? echo $rs[type_name];?></option>
<?
}
}
?>
</select></td>
<td> </td>
</tr>
<tr>
<td> </td>
<td colspan="2" align="right">ราคา
<select name="selPrice" class="ms13" id="selPrice" >
<option value="0">เลือกทุกราคา</option>
<option value="1">0-5,000 บาท</option>
<option value="2">5,001-10,000 บาท</option>
<option value="3">10,000 บาท ขึ้นไป</option>
</select>
</td>
<td><input name="Submit" type="submit" class="ms13" value="ค้นหา" /></td>
</tr>
<tr>
<td> </td>
<td colspan="2" align="right"> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td colspan="3" valign="top"><table width="459" height="550" border="0" >
<?
//เขียนคำสั่ง sql ดึงข้อูลตามหน้าที่เลือก
if(isset($_POST["Submit"])||!empty($_GET["selType"])||!empty($_GET["selPrice"])){
if(isset($_POST["Submit"])){
$selectType=$_POST["selType"];
$selectPrice=$_POST["selPrice"];
if($selectType==0 && $selectPrice == 0){
$condition = 1;
} elseif ($selectType == 0 && $selectPrice == 1){
$condition = 2;
} elseif ($selectType == 0 && $selectPrice == 2){
$condition = 3;
} elseif ($selectType == 0 && $selectPrice == 3){
$condition = 4;
} elseif ($selectType != 0 && $selectPrice == 0){
$condition = 5;
} elseif ($selectType != 0 && $selectPrice == 1){
$condition = 6;
} elseif ($selectType != 0 && $selectPrice == 2){
$condition = 7;
} elseif ($selectType != 0 && $selectPrice == 3){
$condition = 8;
}
}else if(!empty($_GET["selType"])||!empty($_GET["selPrice"])){
$selectType=$_GET["selType"];
$selectPrice=$_GET["selPrice"];
if($selectType==0 && $selectPrice == 0){
$condition = 1;
} elseif ($selectType == 0 && $selectPrice == 1){
$condition = 2;
} elseif ($selectType == 0 && $selectPrice == 2){
$condition = 3;
} elseif ($selectType == 0 && $selectPrice == 3){
$condition = 4;
} elseif ($selectType != 0 && $selectPrice == 0){
$condition = 5;
} elseif ($selectType != 0 && $selectPrice == 1){
$condition = 6;
} elseif ($selectType != 0 && $selectPrice == 2){
$condition = 7;
} elseif ($selectType != 0 && $selectPrice == 3){
$condition = 8;
}
}
switch ( $condition ) {
case 1 : $condition_sql = " order by pro_id asc "; break ;
case 2 : $condition_sql = "where sale_price between 0 and 5000 order by pro_id desc"; break;
case 3 : $condition_sql = "where sale_price between 5001 and 10000 order by pro_id desc"; break ;
case 4 : $condition_sql = "where sale_price >=10000 order by pro_id desc"; break ;
///
case 5 : $condition_sql = "where type_id = '$selectType' order by pro_id desc"; break ;
case 6 : $condition_sql = "where type_id = '$selectType' and (sale_price between 0 and 5000) order by pro_id desc"; break ;
case 7 : $condition_sql = "where type_id = '$selectType' and (sale_price between 5001 and 10000) order by pro_id desc"; break ;
case 8 : $condition_sql = "where type_id = '$selectType' and sale_price >= 10000 order by pro_id desc"; break ;
} //ปิด switch ( $condition )
echo $search="selType=$selectType&selPrice=$selectPrice "; echo "<br />";
}
echo $sqlChk="select * from tbproduct ".$condition_sql; echo "<br />";
$dataChk = mysql_query($sqlChk);
$total_rec=mysql_num_rows($dataChk); //หาจำนวนเรคคอร์ดทั้งหมด
$page_size=4; //กำหนดจำนวนเรคคอร์ดของหน้า
$total_page=ceil($total_rec/$page_size); //จำนวนหน้าที่แสดงผลได้
//ตรวจสอบว่าทำงานอยู่หน้าไหน โดยใช้ตัวแปล $page ตรวจสอบ
if($page=="")//เปิดเพจครั้งแรก
{
$page=1;
$start_rec=0; //ดึงข้อมูลในตำแหน่งที่ 0 ของตาราง product
}else {//ดูสินค้าหน้าที่ต้องการ
$page=$_GET["page"];
$start_rec=$page_size*($page-1); //สูตรหาตำแหน่งเรคคอร์ด
}
echo $sql="select * from tbproduct ".$condition_sql." limit $start_rec,$page_size";
$data = mysql_query($sql);
for($i=1;$i<=$page_size/2;$i++)
{
?>
<tr>
<td width="224" valign="top" class="dtext"><?
$rs=mysql_fetch_array($data);//ดึงข้อมูล
if($rs){
?>
<table width="199" border="0" align="center" class="dtext">
<tr>
<td height="115" class="ms13"><img src="MobileImage/<? echo $rs[picture] ?>" width="70" height="90" /></td>
</tr>
<tr>
<td class="ms13"><? echo "รหัสสินค้า : ".$rs[pro_id] ?></td>
</tr>
<tr>
<td class="ms13"><? echo "ชื่อสินค้า : ".$rs[type_name]." ".$rs[pro_name] ?></td>
</tr>
<tr>
<td class="ms13"><? echo "ราคา : ".$rs[sale_price]." บาท" ?></td>
</tr>
<tr>
<td height="25" valign="middle" class="ms13"><a href="phone_desc.php?pro_id=<?=$rs[pro_id]?>" class="menu13black">แสดงรายละเอียดสินค้า</a></td>
</tr>
<tr>
<td height="25" align="center" valign="middle" class="ms13"><div align="center"><a href="temp_order_pro.php?pro_id=<? echo $rs[pro_id]?>"><img src="Image/bl_shopping.gif" width="98" height="21" border="0" align="left"/></a></div></td>
</tr>
</table>
<?
}
?> </td>
<td width="10" valign="top" class="dtext"> </td>
<td width="221" valign="top" class="dtext"><?
$rs=mysql_fetch_array($data);
if($rs) {
?>
<table width="199" border="0" align="center" class="dtext">
<tr>
<td height="115" class="ms13"><img src="MobileImage/<? echo $rs[picture] ?>" width="70" height="90" /></td>
</tr>
<tr>
<td class="ms13"><? echo "รหัสสินค้า : ".$rs[pro_id] ?></td>
</tr>
<tr>
<td class="ms13"><? echo "ชื่อสินค้า : ".$rs[type_name]." ".$rs[pro_name] ?></td>
</tr>
<tr>
<td class="ms13"><? echo "ราคา : ".$rs[sale_price]." บาท" ?></td>
</tr>
<tr>
<td height="25" class="ms13"><a href="phone_desc.php?pro_id=<?=$rs[pro_id]?>" class="menu13black">แสดงรายละเอียดสินค้า</a></td>
</tr>
<tr>
<td height="25" class="ms13"><div align="center"><a href="temp_order_pro.php?pro_id=<? echo $rs[pro_id]?>"> <img src="Image/bl_shopping.gif" width="98" height="21" border="0" align="left" style="clear:both" /></a></div></td>
</tr>
</table>
<?
}
?> </td>
<?
}
?>
</tr>
<tr>
<td height="24" valign="top" class="ms13"><? //แสดงหน้าให้ผู้ใช้งานคลิก
echo "<b>หน้าที่ </b> [".$page."จาก".$total_page."] ";
for($i=1;$i<=$total_page;$i++)
if($i==$page)
echo $i;
else
echo " <a href=?$search&page=$i>$i</a> ";
?></td>
<td valign="top"> </td>
<td valign="top"> </td>
</tr>
</table></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
</table>
</form>
</body>
</html>
ส่วนนี่เป็นข้อมูลของตาราง tbproduct ครับ
/*
SQLyog Enterprise - MySQL GUI v8.05
MySQL - 5.0.51b-community-nt-log : Database - dbphone
*********************************************************************
*/
/*!40101 SET NAMES utf8 */;
/*!40101 SET SQL_MODE=''*/;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`dbphone` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `dbphone`;
/*Table structure for table `tbproduct` */
DROP TABLE IF EXISTS `tbproduct`;
CREATE TABLE `tbproduct` (
`pro_id` int(5) NOT NULL auto_increment,
`type_id` int(5) NOT NULL,
`pro_name` varchar(30) NOT NULL,
`pro_desc` varchar(100) NOT NULL,
`sale_price` int(7) NOT NULL,
`pro_qty` int(2) NOT NULL,
`picture` varchar(30) NOT NULL,
PRIMARY KEY (`pro_id`)
) ENGINE=MyISAM AUTO_INCREMENT=125 DEFAULT CHARSET=utf8;
/*Data for the table `tbproduct` */
insert into `tbproduct`(`pro_id`,`type_id`,`pro_name`,`pro_desc`,`sale_price`,`pro_qty`,`picture`) values (5,1,'w332','สวยมากเลยนะจ๊ะ..ขอบอก',1200,9,'nokia_5730_xpressmusic_s.jpg'),(1,1,'s22','ดีไซต์หรู บางเฉียบ น้ำหนักเบา',2350,10,'nokia_5235_comes_with_music_s.'),(2,1,'w355','eeeeeeeeeeeeeeeee',1500,10,'nokia_2220_slide_s.jpg'),(3,2,'i8000','gtyujikol;;\'\'[[[',1200,10,'samsung_i8000omnia.jpg'),(4,2,'candys3650','- แอฟพลิเคชั่นมากมาย\r\n- ฟังเพลงได้นานถึง 250 ชั่วโมง\r\n- กล้อง 2 ล้านพิกเซล',5900,10,'samsung_a167_s.jpg'),(6,2,'5600','dddddddd',15500,10,'samsung_s5600.jpg'),(7,4,'e6010','บางเฉียบ ทันสมัยด้วยกล้อง 2 ล้านพิกเซล',6500,10,'i-mobile_ie6010.jpg'),(8,4,'2260','หน้าจอบางเฉียบ สุดหรู\r\n',6000,10,'i-mobile_hitz2206.jpg'),(9,5,'8520','ทันสมัย ฟังก์ชั่นครบครัน',12500,10,'blackberry_curve8520.jpg'),(10,2,'5050','sjjjjjjjjjjjjjjjjjjjjjjjjjjjj',2500,10,'samsung_s5050.jpg'),(11,5,'9700','eeeeeeeeeeeeeeeeeee',30000,10,'blackberry_bold9700.jpg'),(12,6,'3456','dddddddddddddddddddddddd',2000,9,'gnet-g518.jpg'),(13,6,'2341','sssssssssssssssssssssss',2500,10,'gnet-g525c.jpg'),(14,2,'c3010','กล้อง 2 ล้านพิกเซล คมชัด สามารถบันทึกเบอร์ได้ 1500 เบอร์',2500,10,'samsung_c3010_s.jpg'),(15,3,'w112','รูปโฉมงดงาม ดีไซต์หรู น้ำหนักเบา',3500,10,'sony_ericsson_w890i_s.jpg');
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;Tag : - - - -
Date :
2010-06-02 14:34:48
By :
arthonkaew
View :
1134
Reply :
5
จากที่ดูจากปัญหาแล้วดูโค๊ดคร่าวๆ นะครับ
Code (PHP)
echo " <a href=?$search&page=$i>$i</a> ";
น่าจะเป็นตรงนี้นะครับจะต้องเป็น
Code (PHP)
echo " <a href=?search=$search&page=$i>$i</a> ";
แบบนี้ลองดูครับผมก็ดูไม่ค่อยละเอียด
Date :
2010-06-02 14:41:33
By :
AnimalMan
ยังไม่ได้เหมือนเดิมครับผม
สมมติผมเลือกข้อมูลตามภาพแล้วกดปุ่มค้นหา
แล้วต่อไปผมจะเลือกไปดูหน้าที่ 2 แล้วมันไม่ส่งค่าไปกับ link ตามภาพครับ
อีกอย่างครับ ผมอยากทำให้ list ที่เลือกราคาอยู่ที่แบบที่เราเลือกหลังจาก กดปุ่มค้นต้องทำอย่างไรครับ
ขอบคุณครับ
Date :
2010-06-02 14:52:09
By :
arthonkaew
Code (PHP) วิธีให้ราคาอยู่ที่เราเลือก หลังจากค้นหา
<?php
$selPrice = isset($_GET['selPrice']) ? $_GET['selPrice'] : ''; // ตรงนี้เอาไว้กัน error กรณีไม่มีค่า selPrice ส่งมา
?>
<select name="selPrice" class="ms13" id="selPrice" >
<option value="0" <?=$selPrice==0?'checked':''?>>เลือกทุกราคา</option>
<option value="1" <?=$selPrice==1?'checked':''?>>0-5,000 บาท</option>
<option value="2" <?=$selPrice==2?'checked':''?>>5,001-10,000 บาท</option>
<option value="3" <?=$selPrice==3?'checked':''?>>10,000 บาท ขึ้นไป</option>
</select>
ส่วนอีกปัญหา เรื่องเปลี่ยนหน้า ลองใช้ ie viewsource หลัง ค้นหาดูครับ ว่า ตรงเลขหน้า พวกตัวแปรส่งค่ามาครมั้ย ถ้าไม่ ต้องไล่ echo ค่าดูคับ ว่าสูญหายไปตอนไหน
Date :
2010-06-02 17:34:29
By :
kerb
ถ้าได้ค่าตามที่บอกผมว่าลองดูที่โค๊ดตรงนี้นะครับ
if(isset($_POST["Submit"])){
$selectType=$_POST["selType"];
$selectPrice=$_POST["selPrice"];
กับ
echo $search="selType=$selectType&selPrice=$selectPrice ";
ถ้า register_global เป็น off นั้นก็แสดงว่าจะค่าเมื่อเราคลิกหน้า 2 ซึ่งส่งมาแบบ get จะไม่มีค่านะครับ
เพราะตอนเรียกใช้งาน เราเรียกใช้งานแบบ local variable แล้วในตัวโปรแกรมจะมีแค่แปลงจาก
superglobal variable ที่เป็น post array เป็น local variable ที่ตรงนี้
if(isset($_POST["Submit"])){
$selectType=$_POST["selType"];
$selectPrice=$_POST["selPrice"];
แต่เมื่อมีการส่งข้อมูลแบบ Get มาจึงไม่มีการแปลงค่าครับ ถ้าหากผิดพลาดก็ขออภัยด้วยครับ สำหรับอีกเรื่องตามโพสต์ด้านบนเลยครับ
Date :
2010-06-02 21:36:48
By :
AnimalMan
ขอบคุณครับ
ผมเจอข้อผิดพลาดของผมแล้วครับ
Code (PHP)
$search="selType=$selectType&selPrice=$selectPrice "; //ผมไปเว้นวรรคข้างหลังมันทีนึง
เลยแก้ไขเป็น
Code (PHP)
$search="selType=$selectType&selPrice=$selectPrice"; //ลบเว้นวรรคข้างหลังออกไป
ขอบคุณทุกท่านที่มาให้ความรู้และความช่วยเหลือแก่ผมครับ
ผมไล่ดูโค๊ดแบบที่คุณ kerb บอกครับ เลยทำให้รู้ว่าเราผิดพลาดตรงไหน
ขอบคุณอีกครั้งครับ
Date :
2010-06-03 11:49:56
By :
arthonkaew
Load balance : Server 02