ต้องการค้นหาข้อมูลด้วย ListMenu มี 4 ListMenu ด้วยจากหลาย ๆ ตารางที่สัมพันธ์กัน ได้อย่างไรครับ??
ช่วยอธิบายหน่อยได้ไหมครับว่า ค้นหาอะไร เนื่องจากปกติแล้วการเลือก list menu
ไม่น่าเรียกว่า search มันเหมือนการเรียกธรรมดาเฉยๆ
Date :
2009-03-13 21:36:39
By :
เด็กชาย กอ ไก่
มันก็เหมือน textbox อะครับ ขึ้นอยู่กับ value ของ dropdown หาดูกระทู้เก่าๆ เกี่ยวกับการค้นหา เหมือนกันครับ ไม่ยาก
Date :
2009-03-13 22:06:58
By :
plakrim
เรียน พี่ graph และพี่ PlaKriM
คือว่าผมกำลังเขียนโปรแกรม PHP เพื่อเก็บรายละเอียดครุภัณฑ์คอมพิวเตอร์ในสำนักงาน
(อันที่จริงจะมีรายละเอียดต่าง ๆ มากกว่านี้ แต่ผมได้สมมุติตัวอย่างโปรแกรมคล้ายๆ กันมาให้ เพื่อ
จะได้ไม่ยุ่งยากเกินไป)
(จากตาราง tb_cmp) จะเป็นตารางหลักในการเก็บรายละเอียดทั้งหมด แล้วจะมีหน้าจอฟอร์ม (จากรูปต่อมา)
โดยจะทำการค้นหารายละเอียดต่าง ๆ ด้วยกัน 4 แบบ คือ ค้นหาจากสถานที่ใช้งานเครื่องคอมฯ, รายชื่อผู้ใช้งานเครื่องคอมฯ,Serial No. ของเครื่องคอมฯ และประเภทของเครื่องคอมฯ (Computer, Notebook เป็นต้น) ตามลำดับจากหน้าจอฟอร์ม
โดยเงื่อนไขตามที่ผมคิดว่าหากทำช่อง ListMenu ของ Place, Type จากตาราง tb_cmp โดยการใช้ SELECT คงจะแสดงออกมาเป็น place_id และ type_id คงจะต้องทำการ Join Table ทั้งหมดเข้าด้วยกันหรือไม่ครับ...แล้วจะเขียนโค๊ดอย่างไรหรือครับ???
แล้วในรายการ ListMenu ในช่องต่าง ๆ มันต้องมีรายการบางอย่างซ้ำกัน เช่น Place, User name และ Type (แต่ช่อง Serial No. คงไม่มีข้อมูลซ้ำกัน) แล้วจะต้องเขียนโค๊ดให้ข้อมูลมัน Group อย่างไรครับ???
หากทำการค้นหาจากเงื่อนไขดังกล่าว 4 เงื่อนไข จะต้องแสดงออกมาเป็นหน้า ๆ ของฟอร์ม แบ่งหน้าไปเรื่อย ๆ จนหมดข้อมูลที่ค้นหาเจอนะครับ
ผมเองก็ทำอยู่หลายวันแล้ว ก็ไม่สามารถเขียนได้เลย มันสับสน งง ไปหมดแล้ว
จึงขอรบกวนช่วยแนะนำ หรือเขียนโคีดตัวอย่างพอให้เป็นแนวทางจะได้หรือไม่ครับ??? ขอขอบคุณอย่างสูงครับ...
Date :
2009-03-14 14:08:00
By :
pukmtec
จาก Database และ Table ต่าง ๆ ครับ
-- phpMyAdmin SQL Dump
-- version 2.10.2
-- http://www.phpmyadmin.net
--
-- โฮสต์: localhost
-- เวลาในการสร้าง: 14 มี.ค. 2009 น.
-- รุ่นของเซิร์ฟเวอร์: 5.0.22
-- รุ่นของ PHP: 5.1.4
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
--
-- ฐานข้อมูล: `db_computer`
--
-- --------------------------------------------------------
--
-- โครงสร้างตาราง `tb_brand`
--
CREATE TABLE `tb_brand` (
`brand_id` int(11) NOT NULL auto_increment,
`brand_desc` varchar(255) character set utf8 collate utf8_unicode_ci NOT NULL,
PRIMARY KEY (`brand_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=13 ;
--
-- dump ตาราง `tb_brand`
--
INSERT INTO `tb_brand` VALUES (1, 'DELL Optiplex260');
INSERT INTO `tb_brand` VALUES (2, 'ACER Veriton T661');
INSERT INTO `tb_brand` VALUES (3, 'COMPAQ Presario SR5710f ');
INSERT INTO `tb_brand` VALUES (4, 'TOSHIBA Qa9857');
INSERT INTO `tb_brand` VALUES (5, 'ACER TravelMate3270');
INSERT INTO `tb_brand` VALUES (6, 'ACER TravelMate5220x');
INSERT INTO `tb_brand` VALUES (7, 'BENQ Joybook S57');
INSERT INTO `tb_brand` VALUES (8, 'ASUS V1Sn');
INSERT INTO `tb_brand` VALUES (9, 'COMPAQ Presario SR5710f ');
INSERT INTO `tb_brand` VALUES (10, 'COMPAQ Presario CQ60Z series');
INSERT INTO `tb_brand` VALUES (11, 'HP LaserJet5300dn');
INSERT INTO `tb_brand` VALUES (12, 'Fujisu 5520 ScanJet');
-- --------------------------------------------------------
--
-- โครงสร้างตาราง `tb_cmp`
--
CREATE TABLE `tb_cmp` (
`cmp_id` int(11) NOT NULL auto_increment,
`username` varchar(255) character set utf8 collate utf8_unicode_ci NOT NULL,
`serial_no` varchar(255) character set utf8 collate utf8_unicode_ci NOT NULL,
`type_id` int(11) NOT NULL,
`place_id` int(11) NOT NULL,
`brand_id` int(11) NOT NULL,
PRIMARY KEY (`cmp_id`),
KEY `brand_id` (`brand_id`),
KEY `place_id` (`place_id`),
KEY `type_id` (`type_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=11 ;
--
-- dump ตาราง `tb_cmp`
--
INSERT INTO `tb_cmp` VALUES (1, 'Rungtip Krataitong', '123xxd98', 1, 1, 3);
INSERT INTO `tb_cmp` VALUES (2, 'Akerintr Anyamaneecharoen', '958defefd45', 3, 2, 12);
INSERT INTO `tb_cmp` VALUES (3, 'Anchalee Manonukul', 'er8s95r', 3, 6, 12);
INSERT INTO `tb_cmp` VALUES (4, 'Oraphin Chaikumpollert', 'Ssdec84r4', 2, 10, 9);
INSERT INTO `tb_cmp` VALUES (5, 'Siam Kaewkumsai', 'SSerd987DD', 2, 8, 5);
INSERT INTO `tb_cmp` VALUES (6, 'Anek Phuchamnong', '54erdfer', 1, 12, 1);
INSERT INTO `tb_cmp` VALUES (7, 'Rungtip Krataitong', '784efswersdf', 2, 1, 9);
INSERT INTO `tb_cmp` VALUES (8, 'Oraphin Chaikumpollert', '18787eerdfer', 1, 10, 1);
INSERT INTO `tb_cmp` VALUES (9, 'Anchalee Manonukul', 'OPPOkloper784547', 4, 6, 11);
INSERT INTO `tb_cmp` VALUES (10, 'Akrapol Soisungval', 'BBSSder784er', 3, 9, 12);
-- --------------------------------------------------------
--
-- โครงสร้างตาราง `tb_place`
--
CREATE TABLE `tb_place` (
`place_id` int(11) NOT NULL auto_increment,
`place_desc` varchar(255) character set utf8 collate utf8_unicode_ci NOT NULL,
PRIMARY KEY (`place_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=16 ;
--
-- dump ตาราง `tb_place`
--
INSERT INTO `tb_place` VALUES (1, 'M-110 Automation and Mechatronic Lab');
INSERT INTO `tb_place` VALUES (2, 'M-106b Analytical and Testing');
INSERT INTO `tb_place` VALUES (3, 'M-108 Utilities Room');
INSERT INTO `tb_place` VALUES (4, 'M-130 Chemical storage');
INSERT INTO `tb_place` VALUES (5, 'M-134 SEM Sample Preparation room');
INSERT INTO `tb_place` VALUES (6, 'M-133 TEM Sample Preparation room2');
INSERT INTO `tb_place` VALUES (7, 'M-137 Electrical Properties Measurement Laboratory');
INSERT INTO `tb_place` VALUES (8, 'M-136 Dark room');
INSERT INTO `tb_place` VALUES (9, 'M-205b Organization Development');
INSERT INTO `tb_place` VALUES (10, 'M-207 Ceramics Fabrication Lab');
INSERT INTO `tb_place` VALUES (11, 'M-140 Research Staff Office');
INSERT INTO `tb_place` VALUES (12, 'M-139 Transmission Electron Microscopy X-RAY');
INSERT INTO `tb_place` VALUES (13, 'M-304 Office of Director');
INSERT INTO `tb_place` VALUES (14, 'M-225 Furnace room');
INSERT INTO `tb_place` VALUES (15, 'M-219 Optical Microscopy Image Analysis Lab');
-- --------------------------------------------------------
--
-- โครงสร้างตาราง `tb_type`
--
CREATE TABLE `tb_type` (
`type_id` int(11) NOT NULL auto_increment,
`type_desc` varchar(255) character set utf8 collate utf8_unicode_ci NOT NULL,
PRIMARY KEY (`type_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=5 ;
--
-- dump ตาราง `tb_type`
--
INSERT INTO `tb_type` VALUES (1, 'COMPUTER');
INSERT INTO `tb_type` VALUES (2, 'NOTEBOOK');
INSERT INTO `tb_type` VALUES (3, 'SCANNER');
INSERT INTO `tb_type` VALUES (4, 'PRINTER');
Date :
2009-03-14 15:22:08
By :
pukmtec
ขอขอบคุณพี่ PlaKriM อีกครั้งนะครับ
ผมจะพยายามทำดูก่อนนะครับ หากทำไม่ได้จริง ๆ จนสุดปัญญา (อันโง่เขลา) แล้วผมจะกลับมาถามอีกครั้งนะครับ
รบกวนด้วยจริง ๆ นะครับ ผมเองก็ไม่รู้ว่าจะไปปรึกษาที่ไหนได้ เว็บนี้มันเป็นที่พึ่งของผมเลยนะครับ...
ตกลงว่าจะต้องทำการ Join Table ทั้งหมดก่อนใช่หรือไม่ครับ แล้ว a c d คืออะไรเหรอครับ ใช่ชื่อตารางแต่ละตารางใช่หรือไม่??? รบกวนตอบนิดหนึ่งนะครับ...
Date :
2009-03-14 22:07:10
By :
pukmtec
เหอะๆ ผมไม่รู้จะอธิบายเป็นทางการยังไง แต่เข้าใจว่า เปลี่ยนชื่อให้มันหน่อย ที่ทำแบบนี้เพราะเวลา join กันยาวๆ และไม่ใช้ select * มันจะยาวเหยียดมากมาย เลยเปลี่ยนการอ้างถึง ให้มันกระทัดรัด ยิ่งอธิบายยิ่งงงตัวเอง เง้อออ... ใครก็ได้ อธิบายเทนโผมมมมมที
Date :
2009-03-14 22:18:59
By :
plakrim
เรียน พี่ครับ
จาก Database ข้างบนสุด และโค๊ดนี้ ผมได้ลองเขียนแล้วครับ แต่มันแปลกอยู่ที่ว่า หากค้นหา keyword เช่น รายการ Brand_id ที่ 1 มันจะแสดงออกมาคือ 1, 10, 11, 12... เหมือนกับว่าจะเอาตัวอักษรใด ๆ ที่มีออกมาด้วยนะครับ...ทำอยู่เป็นวันแล้วครับ รบกวนช่วยแก้ไขโค๊ดให้ผมด้วยนะครับ ขอขอบคุณมาก ๆ ครับ
--------------------------------------
<?php
$hostname = "localhost";
$username = "user";
$password = "user";
$connDB = mysql_connect($hostname, $username, $password) or die ("ไม่สามารถติดต่อ Server ได้");
mysql_query("SET NAMES utf8", $connDB);
mysql_query("USE db_computer");
$keyword = $_REQUEST['keyword'];
$sql= "SELECT * FROM tb_cmp
INNER JOIN tb_type ON tb_type.type_id = tb_cmp.type_id
INNER JOIN tb_place ON tb_place.place_id = tb_cmp.place_id
INNER JOIN tb_brand ON tb_brand.brand_id = tb_cmp.brand_id
WHERE tb_brand.brand_id LIKE '%$keyword% ' ORDER BY tb_cmp.cmp_id ASC";
$result = mysql_query($sql) or die ("$sql_Error");
?>
<form id="FrmTestSearch" name="FrmTestSearch" method="post" action="testSearch.php">
<table width="99%" border="0" align="center" cellpadding="0" cellspacing="2" bordercolor="#D4D0C8">
<tr valign="middle" bgcolor="#94B8ED">
<td height="21" colspan="8" valign="middle" bgcolor="#F5F5F5"></td>
</tr>
<tr valign="middle" bgcolor="#94B8ED">
<td height="21" colspan="8" valign="middle" bgcolor="#F5F5F5">
<?php
$sqlBrand= "SELECT * FROM tb_brand ORDER BY tb_brand.brand_id ASC ";
$resultBrand = mysql_query($sqlBrand) or die ("$sql_Error");
?>
User name : <select name="keyword">
<option></option>
<?php
while($rowBrand=mysql_fetch_array( $resultBrand)){
?>
<option value="<?=($rowBrand["brand_id"])?>"><?=($rowBrand["brand_id"])?> <?=($rowBrand["brand_desc"])?></option>
<?php } ?>
</select>
<input name="Submit" type="Submit"id="Search" value="Search" /> </td>
</tr>
<tr>
<td colspan="8">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="31%" height="20">
<td width="69%"><a href="testSearch.php">ดูรายละเอียดทั้งหมด</a></td>
</tr>
</table></td>
</tr>
<tr>
<td width="64" height="17" align="center" bgcolor="#CDCDCD">cmp_id</td>
<td width="187" bgcolor="#CDCDCD" align="center">Username</td>
<td width="193" bgcolor="#CDCDCD" align="center">Brand</td>
<td width="131" bgcolor="#CDCDCD" align="center">Type</td>
<td width="167" bgcolor="#CDCDCD" align="center">Serial No. </td>
<td width="482" bgcolor="#CDCDCD" align="center">Place</td>
</tr>
<?php
while($row=mysql_fetch_array( $result)){
?>
<tr>
<td height="14" align="center"><?=$row['cmp_id'] ?></td>
<td><?=$row['username'] ?></td>
<td><?=$row['brand_id'] ?><?=$row['brand_desc'] ?></td>
<td align="center"><?=$row['type_id'] ?><?=$row['type_desc'] ?></td>
<td><?=$row['serial_no'] ?></td>
<td><?=$row['place_desc'] ?></td>
</tr>
<?php } ?>
<tr>
<td height="18" colspan="8" bgcolor="#CDCDCD">
<?php
mysql_close($connDb);
?></td>
</tr>
</table>
</form>
</body>
</html>
Date :
2009-03-17 16:44:17
By :
pukmtec
พี่ PlaKriM สุดยอด เก่งมว๊ากก
โค้ดพี่ช่วยหนูได้ทุกหัวข้อเลย
ขอบคุณมากนะค่ะ
Date :
2012-02-06 22:23:51
By :
ผึ้ง
Load balance : Server 05