เลือกข้อมูลจากช่อง dropdownlist แล้วให้แสดงข้อมูลออกมาในตาราง อย่างไรค่ะ ???
เรียน พี่ ๆ ทุกท่านค่ะ
ช่วงนี้กำลังยุ่งวุ่นวายอยู่กับการเขียนโปรแกรมให้ที่ทำงาน เขียนได้บ้างไม่ได้บ้าง
หากไม่ได้ก็ไม่รู้ว่าจะไปให้ใครช่วยเหลือ หนูจึงต้องมาตั้งกระทู้อยู่บ่อย ๆ พี่ ๆ คงจะไม่รำคาญ
ว่าน้องคนนี้มาถามบ่อย ๆ นะค่ะ...
ตอนนี้ก็มีปัญหาอีกแล้ว จึงมารบกวนพี่ ๆ อีกแล้ว (ค้นหาในเว็บอื่นๆ ก็หาไม่เจอสักที สับสนอยู่หลายวันแล้วเลยค่ะ)
จาก Database และโค๊ด PHP ที่หนูเขียนไว้ดังนี้ :
--------------------------------------------
-- phpMyAdmin SQL Dump
-- version 2.10.2
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Apr 24, 2010 at 05:17 PM
-- Server version: 5.1.25
-- PHP Version: 5.2.12
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
--
-- Database: `db_report`
--
-- --------------------------------------------------------
--
-- Table structure for table `tb_comreport`
--
CREATE TABLE `tb_comreport` (
`idCom` int(3) NOT NULL AUTO_INCREMENT,
`desCom` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`yearCom` varchar(4) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`dtCom` datetime NOT NULL,
PRIMARY KEY (`idCom`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ;
--
-- Dumping data for table `tb_comreport`
--
INSERT INTO `tb_comreport` VALUES (1, 'Computer', '2552', '2009-05-03 11:25:45');
INSERT INTO `tb_comreport` VALUES (2, 'Notebook', '2553', '2010-09-15 09:49:36');
INSERT INTO `tb_comreport` VALUES (3, 'Printer', '2553', '2010-10-29 10:55:56');
INSERT INTO `tb_comreport` VALUES (4, 'Scanner', '2552', '2009-11-30 10:25:39');
INSERT INTO `tb_comreport` VALUES (5, 'Fax', '2552', '2009-12-30 13:20:49');
--------------------------------------------
<?php
$connDB = mysql_connect("localhost","user","user") or die ("Cannot connect to Database");
mysql_query("SET NAMES utf-8",$connDB);
mysql_query("USE db_report");
?>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-874">
<style type="text/css">
<!--
body,td,th {
font-family: Tahoma,sans-serif;
font-size: 12px;
color: #000000;
}
.txtH{
font-family: Tahoma,sans-serif;
font-size: 14px;
font-weight:bold;
color: #FFFFFF;
}
-->
</style>
</head>
<body>
<form name="formReport" method="post" action="">
<?php
// Connect Table: tb_comreport
$sql = "SELECT * FROM tb_comreport";
// loop DrowdownList > desCom
$reDesc = mysql_query($sql) or die ("$sql");
echo "เลือกประเภท : ";
echo "<select name=\"desCom\">";
echo "<option>-- ทุกประเภท --</option>";
while($roDesc = mysql_fetch_array($reDesc)){
echo "<option>".$roDesc['desCom']."</option>";
}
echo "</select>";
echo "<br>";
// loop DrowdownList > yearCom
$sql .= " GROUP BY yearCom";
$reYCom = mysql_query($sql) or die ("$sql");
echo "เลือกปีงบประมาณ : ";
echo "<select name=\"yearCom\">";
echo "<option>-- ทุกปีงบประมาณ --</option>";
while($roYCom = mysql_fetch_array($reYCom)){
echo "<option>".$roYCom['yearCom']."</option>";
}
echo "</select>";
echo "<br>";
// Select Month
$slMonth = Array(1=>"มกราคม",2=>"กุมภาพันธ์",3=>"มีนาคม",4=>"เมษายน",5=>"พฤษภาคม",6=>"มิถุนายน",7=>"กรกฎาคม",8=>"สิงหาคม",9=>"กันยายน",10=>"ตุลาคม",11=>"พฤศจิกายน",12=>"ธันวาคม");
echo "เลือกเดือน : ";
echo "<select name=\"selectMonth\">";
echo "<option value=\"0\">-- ทุกเดือน --</option>";
for ($i=1; $i<=12; $i++)
echo "<option value=\"$i\">".$slMonth[$i]."</option>";
echo "</select>";
echo "<input name=\"submit\" type=\"submit\" value=\" OK \">"; // botton Submit
?>
<table width="30%" border="0" cellpadding="0" cellspacing="3" class="border">
<tr>
<td width="10%" height="20" align="center" bgcolor="#000000" class="txtH">ลำดับ</td>
<td width="25%" height="20" align="center" bgcolor="#000000" class="txtH">ประเภท</td>
<td width="22%" height="20" align="center" bgcolor="#000000" class="txtH">ปีงบประมาณ</td>
<td width="43%" align="center" bgcolor="#000000" class="txtH">วันเวลาที่ซื้อ</td>
</tr>
<?php
$sql = "SELECT * FROM tb_comreport ORDER BY idCom";
$res = mysql_query($sql) or die ("$sql");
while($row = mysql_fetch_array($res)){ // loop data
$bgColor = ($i++ %2) ? '#EFEFEF' : '#FFFFFF'; // loop bgcolor
?>
<tr bgcolor="<?=$bgColor;?>">
<td align="center"><?=$row['idCom'];?></td>
<td><?=$row['desCom'];?></td>
<td align="center"><?=$row['yearCom'];?></td>
<td align="center"><?=$row['dtCom'];?></td>
</tr>
<?php } ?>
</table>
</form>
</body>
</html>
--------------------------------------------
จากรูปภาพนะค่ะ (ส่งภาพมาให้ดู จะได้เข้าใจได้ง่าย)
จึงหนูขอรบกวนว่าจะเขียนอย่างไรค่ะ เพราะก็เขียนยังไม่ค่อยจะเก่งเลย
ต้องมารบกวนพวกพี่ ๆ ที่เก่ง ๆ ในเว็บนี้ช่วยเหลือ ขอขอบคุณมากเลย ณ ที่นี้เลยค่ะTag : - - - -
Date :
2010-04-24 17:35:25
By :
LukNam
View :
8393
Reply :
32
SELECT * FROM tb_comreport ORDER BY idCom
ต้องมี where ด้วยครับ
ก็ทำได้หลายวิธิครับ
Date :
2010-04-24 17:52:38
By :
onedan
นั่นแหละค่ะ เขียนไม่ถูกจริง ๆ เพราะมันมีตั้ง 3 เงื่อนไขในการค้นไงล่ะค่ะ รบกวนช่วยจะได้หรือไม่ล่ะ
ขอขอบคุณล่วงหน้าเลยละกัน...
Date :
2010-04-24 18:38:52
By :
LukNam
ก็ ต่อ ๆ กันนะ
เช่น เลือกตัวไหนบ้าง ก็ต่อตัวนั้นด้วย where
Date :
2010-04-25 00:48:58
By :
onedan
พี่ onedan ตอบมา หนูก็ยิ่งงง ยิ่งมั่วเข้าไปกันใหญ่ แล้วเมื่อไหร่จะเสร็จละเนี่ย???
รบกวนเขียนมาให้ดูทั้งหมดเลยได้ป่าวค่ะ หาตัวอย่างมา 3 วันกว่า ๆ แล้ว และก็ยังมี
อีกหลายหน้าฟอร์ม ก็จะเหมือนกับการแสดงผลอย่างนี้แหละค่ะ
รบกวน พี่ ๆ ท่านอื่น ๆ แนะนำด้วยนะ ขอขอบคุณ
Date :
2010-04-25 01:12:48
By :
LukNam
ทำแบบนี้ก็ได้
ถ้าไม่ได้เลือกให้
$sql = "SELECT * FROM tb_comreport ORDER BY idCom";
ถ้าเลือก ประเภทให้
$sql = "SELECT * FROM tb_comreport WHERE desCom = $desCom ORDER BY idCom";
ถ้าเลือก ปีให้
$sql = "SELECT * FROM tb_comreport WHERE yearCom= $yearCom ORDER BY idCom";
ถ้าเลือก เดือนให้
$sql = "SELECT * FROM tb_comreport WHERE เดือน= $เดือนORDER BY idCom";
ถ้าเลือก ประเภท และปี ให้
$sql = "SELECT * FROM tb_comreport WHERE desCom = $desCom AND yearCom= $yearCom ORDER BY idCom";
ลองดูละกัน
Date :
2010-04-25 01:30:00
By :
onedan
ตัวแปร $desCom และ $yearCom มาจากไหนค่ะ???
-----------------
หนูก็ได้ทำตามที่พี่บอกแล้ว ตรงที่บรรทัด
<?php
// $sql = "SELECT * FROM tb_comreport ORDER BY idCom";
$sql = "SELECT * FROM tb_comreport WHERE desCom = $desCom AND yearCom= $yearCom ORDER BY idCom";
$res = mysql_query($sql) or die ("$sql");
while($row = mysql_fetch_array($res)){ // loop data
$bgColor = ($i++ %2) ? '#EFEFEF' : '#FFFFFF'; // loop bgcolor
?>
-----------------
ทดสอบมาหลายชั่วโมงแล้ว ไม่เห็นได้ดังที่พี่บอกมาเลย หนูคิดว่ามันไม่ใ่ช่แน่ ๆ
มันจะต้องมีการรับค่าไปไว้ก่อนหรือป่าวนะ รบกวนทำให้ทั้งหมดเลยไม่ได้เหรอ ?
พี่เอาโค๊ดหนูไปเล่นไม่ได้เหรอ แล้วลองเขียนมาให้ดู ตอบมาทีละนิด ๆ หนูก็ยังทำไม่ได้
คงเป็นเดือน แน่ ๆ เลย หากเป็นอย่างนี้ เศร้าใจจริง ๆ งานจะส่งหัวหน้าได้หรือป่าว??? ฮือ ๆ ๆ ๆ
Date :
2010-04-25 02:37:21
By :
LukNam
-.-* onedan งานเข้าละครับ อิอิ
Date :
2010-04-25 03:30:21
By :
icute
ไม่ไหวแล้วค่ะ พี่ onedan บอกมาทีละนิดทีละหน่อย หนูยิ่งเขียนก็สับสน ทำไมไม่เขียนมาให้หมดเลยจะดีกว่าหรือป่าวนะ
Date :
2010-04-25 14:33:44
By :
LukNam
มันต้องเลือกหมดใช่ป่าวครับในการค้นหาแต่ละครั้ง หรือว่าจะเลือกแค่ช่องแรกช่องเดียวก็ได้
Date :
2010-04-25 14:48:52
By :
Manussawin
ถึง พี่ ๆ ทุกท่านค่ะ
มันก็ต้องนีกถึงหลักความเป็นจริงด้วยค่ะ....โดยที่เราก็จะสามารถ
1- เลือกประเภททุกประเภท > ทุกปีงบประมาณ > ทุกเดือน (อันนี้จะแสดงข้อมูลทั้งหมดเป็นปกติ เวลาเปิดหน้าจอฟอร์มออกมาในครั้งแรกอยู่แล้วนะค่ะ)
2- เลือกบางประเภท > ทุกปีงบประมาณ > ทุกเดือน (เช่น เลือก Computer > ทุกปีงบประมาณ > ทุก ๆ เดือนในปีงบประมาณนั้น)
3- เลือกบางประเภท > เลือกบางปีงบประมาณ > ทุกเดือน (เช่น เลือก Computer > เลือกปีงบประมาณ 2552 > ทุก ๆ เดือนในปีงบประมาณนั้น)
4- เลือกบางประเภท > เลือกบางปีงบประมาณ > เลือกบางเดือนที่ต้องการ (เช่น เลือก Computer > เลือกปีงบประมาณ 2552 > เลือก เดือนมีนาคม)
(ในข้อ 4 นี้ อาจจะไม่มีข้อมูลก็ได้ เพราะในความเป็นจริง ในเดือนมีนาคม ของปีงบประมาณ 2552 อาจจะไม่ได้มีการซื้อเข้ามา ก็เป็นไปได้ แต่ก็ให้ขึ้นหน้าจอว่าง ๆ )
อะไรประมาณนั้นแหละค่ะ ขนาดพี่ ๆ เก่ง ๆ ยังสับสนเลย แล้วหนูจะเหลืออะไรค่ะ มีแต่ขี้เลื่อยเต็มหัวไปหมด คิดไม่ออกเลย
ว่าจะเขียนโค๊ดออกมาอย่างไร กรรมสุดเลยค่ะ
รบกวนว่าจะมีพี่คนไหน พอเก่ง ๆ หรือเคยเขียนมาแบบนี้บ้างก้นหรือไม่ ขอขอบคุณล่วงหน้าเลยนะค่ะ...สาธุ สาธุ ขอให้มีพระเอกขี่ม้าขาวมาช่วยหนูด้วยละกัน
Date :
2010-04-25 19:34:48
By :
LukNam
คือ ยังไงครับ เลือก ประเภท แล้วให้มีข้อมูลขึ้น เองที่ งบประมาณ หรือ เลือกข้อมูลที่ประเภท แล้วก็มาเลือกปีงบประมาณ แล้วข้อมูลจะออกมาตามที่เราเลือกประมาณนี่ป่าวครับ หรือยังไง อิอิอิ
Date :
2010-04-25 20:39:25
By :
chonburi f.c
ผมก็งง แต่สำหรับหลักการออกแบบระบบแล้ว เราทำให้มันไม่สร้างปัญหา หรือเพิ่มปัญหาให้กับผู้ใช้มากกว่าครับ คือแบบว่าใช้ง่ายๆ แต่ประสิทธิภาพ ยิ่งใหญ่ นี่แหละผู้ใช้ชอบๆ ว่ามั้ยครับ
Date :
2010-04-25 20:43:44
By :
Manussawin
เฮ้อ...หนูเริ่มจะชักกลุ้มใจแล้วจริง ๆ เลยนะ
ทำไมพี่ ๆ คิดกันมากเหลือเกิน บอกตรง ๆ และขอถามตรง ๆ กันเลยว่า
หากพี่ ๆ เห็น หน้าจอฟอร์ม แบบนี้
จากรูปภาพนะค่ะ (ส่งภาพมาให้ดู จะได้เข้าใจได้ง่าย)
พี่ ๆ คิดว่า ผู้ใช้จะทำค้นหาอย่างไร
1. ผู้ใช้อาจจะค้นหาช่อง ทุกประเภท > ก็ให้ตารางแสดงออกมาทุกประเภทเลย ไม่ว่าปีงบประมาณไหน เดือนอะไร ก็ให้แสดงออกมาทั้งหมด
(แบบนี้ มันก็แสดงอยู่แล้ว ตอนแรก ๆ ที่เปิดหน้าจอฟอร์มนี้ขึ้นมา
2.ผู้ใช้อาจจะขอดูข้อมูลบางประเภท เช่น อยากดูประเภท Computer อย่างเดียว ไม่ว่าปีงบประมาณไหน เดือนอะไร ก็แสดงรายการออกมาเฉพาะประเภท Computer เท่านั้น
3. ผู้ใช้อาจจะขอดูข้อมูลบางประเภท เช่น อยากดูประเภท Computer อย่างเดียว แต่ขอดูในปีงบประมาณ 2552 ทั้งปี ไม่ว่าเดือนอะไรก็ตาม
4. และอื่น ๆ
โดยค้นหาแบบมีเงื่อนไขไงค่ะ...ไม่ทราบว่าพี่ ๆ จะเข้าใจอีกหรือป่าว หนูชักเริ่มจะน้อยใจแล้ว ไม่มีใครช่วย และพี่ ๆ ก็เข้าใจยากกันจังเลยค่ะ
Date :
2010-04-26 10:48:50
By :
LukNam
คำว่าผู้ใช้อาจจะ นี่ทำยากนะคะ จะให้ง่ายและปลอดภัย คือ ผู้ใช้ต้อง... ค่ะ ใจเย็น ๆ อย่าซีเรียส
เท่าที่ดูแบบผ่าน ๆ ไม่ได้เจาะจงอ่านอะไรมากมายนัก แบบว่า ตาลาย ไปตามอายุ (นิสัยไม่ดี อิอิ)
คือ คุณมีเงื่อนไขในการค้นหา 3 เงื่อนไง
1>>ประเภท>>ตามแต่ผู้ใช้ต้องการให้มีในระบบ
2>>ปีงบประมาณ>>ไม่รู้เค้าจะมีเป็นไตรมาสไหมนะ ง่าย ๆ ก็ อดีตถึงปัจจุบัน
3>>เดือน>>1 ปี มี 12 เดือน ตามนั้น ถ้าไม่แบ่งไตรมาส
คำถามที่ 1 ทุกตัวเป็นอิสระ ไม่เกี่ยวพันธ์กัน ใช่ไหม คือแบบว่า ไม่ต้อง เลือก ประเภท แล้วแสดง ปรงบประมาณของประเภทนั้น ๆ ไรงี้
ถ้าคำตอบคือ ใช่ค่ะ ก็ข้ามมาดูเงื่อนไข
ก็ตามที่คุณ onedan แนะนำไว้ข้างต้น คือคุณต้องเช็คก่อนว่า ผู้ใช้เลือกอะไร แล้วจึงเอามาสร้าง sql statement เช่น
1>>ถ้า ALL ทั้ง 3 เงื่อนไข ก็คือ มีอะไรเอาออกมาให้หมด อันนี้ง่าย ๆ อยู่แล้ว
2>>ถ้าเลือกประเภทอย่างเดียว ก็คือ สนใจแต่ประเภท ไม่สนอย่างอื่น ก็ where มาแต่ประเภท
3>>เลือกปีอย่างเดียว สนใจแต่ปี ไม่สนอย่างอื่น ก็ where มาแต่ปี
4>>เลือกเดือนอย่างเดียว สนใจแต่เดือน ไม่สนอย่างอื่น ก็ where มาแต่เดือน
5>>เลือกประเภทและปี ก็ where ประเภท AND ปี
6>>เลือกประเภทและเดือน ก็ where ประเภท AND เดือน
7>>เลือกปีและเดือน ก็ where ปี AND เดือน
8>>เลือกทั้ง 3 ก็ where ประเภท AND ปี AND เดือน
หมดหรือยังนะ เยอะจังแฮะ แบบนี้เข้าใจถูกไหมคะ
อ้อ ระวัง ระวังผู้ใช้ถามว่า แล้วถ้าอยากได้ ระหว่าง เดือนนี้ ถึงเดือนนี้ล่ะ??? หุหุ เอาใจช่วยค่ะ
ปล.เป็นโปรแกรมเมอร์ บางทีคิดน้อยไปมันก็ไม่ดีค่ะ หลายคนผิดพลาดเพราะคิดอะไรง่าย ๆ ตื้น ๆ ทำอะไรต้องรอบคอบ เหมือนที่เค้าว่า ช้า ๆ ได้พร้าเล่มงาม(เกี่ยวกันไหม)
พี่ ๆ ในบอร์ดยินดีให้ความช่วยเหลืออยู่แล้วค่ะ อย่าลืมเทน้ำในแก้วของเราออกก่อนด้วยนะคะ เดี๋ยวมันจะเต็ม
Date :
2010-04-26 11:51:36
By :
ultrasiam
ขอขอบคุณ พี่ ultrasiam อย่างมาก ที่เข้าใจหนู (กดคะแนนให้เลย ฮิ ฮิ)
แต่หากให้ดี พี่ ultrasiam ช่วยเขียนให้ดูจะได้หรือไม่ค่ะ เพราะหนู ก็ไม่รู้ว่าจะเขียน where ตรงไหน
และใช้ if หรือ elseif อย่างไร??? เพราะรอมาหลายวันแล้ว .... ยังมีอีกหลายหน้าจอรอหนูอยู่...
รบกวนได้ป่าวค่ะ เดือดร้อนจริง ๆ (คิดว่าสงสารลูกนกลูกกา หรือ ลูกน้ำตัวน้อย ๆ นี้สักคนเถอะนะค่ะ)
ขอขอบคุณล่วงหน้าเลยล่ะกัน....
Date :
2010-04-26 15:26:55
By :
LukNam
คือ พี่ๆทุกคนที่นี่ เขาอยากจะสอนเป็นหลักการ แล้วก็บอกตัวอย่างไรเงี้ยคับ
พี่ๆเขาไม่อยากจะให้เฉลยไปเลย เพราะเขาอยากให้เราฝึกทำดู
ยังไงก็สู้ๆคับ ใจเยนๆ
Date :
2010-04-26 16:05:10
By :
dekcomnvc
ถ้าหากพี่ ๆ ในเว็บนี้เป็นคนที่ชอบให้แต่หล้กการ ก็ไม่เป็นไรค่ะ
แต่บางครั้งหล้กการ ก็ไม่ใช่จะเป็นหลักการที่เป็นหลักที่ดีต่อผู้ที่เขียนไม่เป็น
เพราะอย่างไรก็เขียนไม่เป็น ยังไม่เก่ง จะเริ่มตรงไหน ก็ยังไม่รู้ หากรู้ก็คงไม่มาถามหรอกนะค่ะ..
แค่การค้นหาแบบนี้ หนูยังทำไม่ได้เลย เขียนไม่ได้อยู่เป็นอาทิตย์ แล้วอีกหลาย ๆ หน้าจอ
หนูจะเขียนได้เหรอ มีแต่หลักการที่พี่ว่ามา...
หนูเริ่มชักท้อ และเริ่มทำใจแล้ว ต่อไปนี้....
Date :
2010-04-26 16:17:20
By :
LukNam
ผมว่า ลองไปอ่าน SQL ก่อนดีกว่างับ
https://www.thaicreate.com/tutorial/sql-where.html
สมมุติสั้นๆว่า
ผู้ใช้เลือกประเภทเป็น computer และอยู่ในงบประมาณปี 2552
$value1=$_POST["desCom\"];
$value2=$_POST["yearCom\"];
$sqltxt="SELECT * FROM tb_comreport WHERE desCom=$value1 AND $value2=yearCom ORDER BY idCom ASC";
ตัวแปร $value1 ก็จะเก็บค่า computer และ $value2 ก็จะเก็บค่า 2552
desCom\ มาจาก ชื่อลิสบ๊อกเลือกประเภท
yearCom\ มาจาก ชื่อลิสบ๊อกเลือกปีงบประมาณ
desCom มาจาก ชื่อฟิวด์ในฐานข้อมูลที่เก็บประเภท
yearCom มาจาก ชื่อฟิวด์ในฐานข้อมูลที่เก็บปีงบประมาณ
$value1 และ $value2 ผมสมมุติขึ้นมาเพื่อให้เก็บค่าจาก ลิสบ๊อก
อะคับ ลองๆดูนะ บอกตรงๆผมก็มือใหม่เช่นกัน ก็เข้ามาหาความรู้จากเว็บนี้เหมือนกะคุณเลย
แล้วโค้ดนี้ก็เขียนเอง ฝึกไปเรื่อยๆ โดยดูข้อมูลจากเวบนี้แหละที่เขาสอนไว้ ลองดูละกัน
** โค้ดข้างต้น เขียนเอง ถ้าผิดต้องขออภัย และรบกวนผู้รู้ช่วยบอกด้วยนะครับ
Date :
2010-04-26 16:52:20
By :
dekcomnvc
ขอขอบคุณ ๆ ทั้งหมดทุกคน รู้สึกดีขี้นมามาก เพื่อยามเราคับขัน ก็ยังมีพี่ ๆ คอยให้กำลังใจ
น้ำใจยังมีอยู่กับคนไทย ที่รักกัน อาจจะเป็นส่วนหนึ่งเพื่อประเทศไทย ในเวลานั้น...
ขอขอบคุณน้ำใจ และความคิดเห็นจากพี่ ๆ ทุกคน หนูจะพยายาม... ยาม ต่อไป อย่าหยุดยั้ง สู้เขานะ ลูกน้ำตัวน้อย
Date :
2010-04-26 17:35:43
By :
LukNam
หลังจาก submit คุณก็จะได้ค่าจาก form 3 ค่า คือ ประเภท ปี และ เดือน ใช่ไหมคะ
คุณก็เอาทั้ง 3 ค่ามาตรวจสอบ
ค่าที่ใช้จาก Select object หรือ DropDownlist หรือ ComboBox ก็แล้วแต่จะเรียก คือ value ค่ะ
สมมุติว่า
คุณสร้าง Select object
<select name="type">
<option value="0">All</option>
<option value="1">ประเภท 1</option>
<option value="2">ประเภท 2</option>
</select>
แบบนี้ ค่าที่ได้ก็จะเป็น $_POST['type'] ถ้าใช้ form post $_GET['type'] ถ้าใช้ from get หรือจะใช้ $_REQUEST['type'] ไปเลยก็ได้ค่ะ
เหมือนกันทั้งสามตัว $_POST['ชื่อของ Select object']
ในที่นี้สมมุติว่าใช้ $_POST['type'],$_POST['year'],$_POST['month']
จากนั้นใช้ if เช็คค่ะ
if($_POST['type']==0 && $_POST['year']==0 && $_POST['month']==0){
$sql= "select * from table อะไรก็ว่าไป ไม่มี where เพราะ ไม่มีการเลือกเงื่อนไข";
}else{//เมื่อมีการเลือกเงื่อนไข
$sql= "select * from table where "; //ก็ต้องมี where
//ต่อไปมาพิจารณาเงื่อนไขว่า ผู้ใช้เลือกอะไรบ้าง เลือกอะไรก็ where อันนั้น มีมากกว่า 1 ก็ ใส่ and เข้าไป
if($_POST['type']!=0 && $_POST['year']!=0 && $_POST['month']!=0){
$sql.= "type='".$_POST['type']."' and year='".$_POST['year']."' and month='".$_POST['month']."'";
}else if($_POST['type']!=0 && $_POST['year']!=0 && $_POST['month']==0){
$sql.= "type='".$_POST['type']."' and year='".$_POST['year']."'";
}else if($_POST['type']!=0 && $_POST['year']==0 && $_POST['month']!=0){
$sql.= "type='".$_POST['type']."' and month='".$_POST['month']."'";
}
//เงื่อนไขมีมากกว่านี้ลองคิดดูค่ะ
}
ชะแว๊บบบ แว๊บมาแปะ ก่อนกลับบ้าน เดี๋ยวมาใหม่ค่ะ
ไม่เข้าใจอะไรตรงไหนก็โพสไว้นะคะ
ผิดพลาดประการใดต้องขออภัยด้วยค่ะ
Date :
2010-04-26 17:37:19
By :
ultrasiam
สู้ต่อไปคับ ^o^
น้ำใจคนไทย ไม่มีคำว่าเหือดแห้งครับ
Date :
2010-04-26 17:40:58
By :
dekcomnvc
สู้ต่อไป ไอ้มดแดง เหมือนผมไง
ไงก็อย่าเพิ่งน้อยใจไปเลยเจ้า.... พี่ ๆ ในเว็บนี้ เก่ง ๆ ทุกคน แต่บางคนอาจจะมั่ว ๆ ไปหน่อย (โดยเฉพาะผมเองครับ
เอิ๊กๆ ๆ ขำ ๆ )
มีไรก็โพสมาล่ะกัน เกรงจะไม่มีใครมาโพส
ขอให้โลกสงบสุข ประเทศไทยไร้การชุมนุม ไม่มีกีฬาสี อีกต่อไป หลังการเลือกพวกสอพอ เฮ้ย สอ...สอ
-----------------------------------------------------------------------
Date :
2010-04-26 17:43:42
By :
riderman
ของ ผมยังเงื่อนไขเยอะกว่าเลย หุหุ
date: ......... [ปฏิทิน] To ........[ปฏิทิน] ผู้ประเมิน.... ร้านค้า.... โดยที่ ร้านค้าจะอ้างอิงกับผู้ประเมิน
หุหุ ยากจังครับ แต่ก็พยายามทำอยู่
ยังไงก็สู้ๆนะครับ คุณลูกน้ำ
Date :
2010-04-26 17:59:57
By :
rakket
พี่ค่ะ ตั้งแต่บ่าย จนถึงป่านนี้ 3 ทุ่มกว่า ๆ
หนูเลือกข้อมูลจากช่อง Dropdown แล้ว ทำไมในตารางไม่ยอมทำงานตามที่ต้องการเลย
มันจะมองเป็น $sql = "SELECT * FROM tb_comreport"; ไม่เข้าเงื่อนไข ที่ WHERE เลย
มันผิดตรงไหน หากระบบตรง ๆ ที่ WHERE desCom='Printer' ตารางก็ทำงานนะค่ะ
แต่หากเลือกแล้ว ตารางไม่ได้ออกดังที่เลือกเลย เศร้าจริง ๆ
------------------------------------
<?php
$connDB = mysql_connect("localhost","user","user") or die ("Cannot connect to Database");
mysql_query("SET NAMES utf-8",$connDB);
mysql_query("USE db_report");
?>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-874">
<style type="text/css">
<!--
body,td,th {
font-family: Tahoma,sans-serif;
font-size: 12px;
color: #000000;
}
.txtH{
font-family: Tahoma,sans-serif;
font-size: 14px;
font-weight:bold;
color: #FFFFFF;
}
-->
</style>
</head>
<body>
<form name="formReport" method="GET" action="">
<?php
// Connect Table: tb_comreport
$query = "SELECT * FROM tb_comreport ";
// loop DrowdownList > desCom
$reDesc = mysql_query($query) or die ("$query");
echo "เลือกประเภท : ";
echo "<select name=\"desCom\">";
echo "<option value=\"0\">-- ทุกประเภท --</option>";
while($roDesc = mysql_fetch_array($reDesc)){
echo "<option>".$roDesc['desCom']."</option>";
}
echo "</select>";
echo "<br>";
// loop DrowdownList > yearCom
$query .= "GROUP BY yearCom";
$reYCom = mysql_query($query) or die ("$query");
echo "เลือกปีงบประมาณ : ";
echo "<select name=\"yearCom\">";
echo "<option value=\"0\">-- ทุกปีงบประมาณ --</option>";
while($roYCom = mysql_fetch_array($reYCom)){
echo "<option>".$roYCom['yearCom']."</option>";
}
echo "</select>";
echo "<br>";
// Select Month
$slMonth = Array(1=>"มกราคม",2=>"กุมภาพันธ์",3=>"มีนาคม",4=>"เมษายน",5=>"พฤษภาคม",6=>"มิถุนายน",7=>"กรกฎาคม",8=>"สิงหาคม",9=>"กันยายน",10=>"ตุลาคม",11=>"พฤศจิกายน",12=>"ธันวาคม");
echo "เลือกเดือน : ";
echo "<select name=\"monthCom\">";
echo "<option value=\"0\">-- ทุกเดือน --</option>";
for ($i=1; $i<=12; $i++)
echo "<option value=\"$i\">".$slMonth[$i]."</option>";
echo "</select>";
echo "<input name=\"submit\" type=\"submit\" value=\"OK\">"; // botton Submit
?>
<table width="30%" border="0" cellpadding="0" cellspacing="3" class="border">
<tr>
<td width="10%" height="20" align="center" bgcolor="#000000" class="txtH">ลำดับ</td>
<td width="25%" height="20" align="center" bgcolor="#000000" class="txtH">ประเภท</td>
<td width="22%" height="20" align="center" bgcolor="#000000" class="txtH">ปีงบประมาณ</td>
<td width="43%" align="center" bgcolor="#000000" class="txtH">วันเวลาที่ซื้อ</td>
</tr>
<?php
$_REQUEST['desCom'];
$_REQUEST['yearCom'];
$_REQUEST['monthCom'];
if($_POST['desCom']==0 && $_POST['yearCom']==0 && $_POST['monthCom']==0){
$sql = "SELECT * FROM tb_comreport";
}else{ // เมื่อมีการเลือกเงื่อนไข
$sql = "SELECT * FROM tb_comreport WHERE ";
if($_POST['desCom']!=0 && $_POST['yearCom']!=0 && $_POST['monthCom']!=0){
$sql .= "desCom='".$_POST['desCom']."' and yearCom='". $_POST['yearCom']."' and monthCom='".$_POST['monthCom']."'";
}else if($_POST['desCom']!=0 && $_POST['yearCom']!=0 && $_POST['monthCom']==0){
$sql .= "desCom='".$_POST['desCom']."' and yearCom='". $_POST['yearCom']."'";
}else if($_POST['desCom']!=0 && $_POST['yearCom']==0 && $_POST['monthCom']!=0){
$sql .= "desCom='".$_POST['desCom']."' and monthCom='".$_POST['monthCom']."'";
}
}
$res = mysql_query($sql) or die ("$sql");
while($row = mysql_fetch_array($res)){ // loop data
$bgColor = ($i++ %2) ? '#EFEFEF' : '#FFFFFF'; // loop bgcolor
?>
<tr bgcolor="<?=$bgColor;?>">
<td align="center"><?=$row['idCom'];?></td>
<td><?=$row['desCom'];?></td>
<td align="center"><?=$row['yearCom'];?></td>
<td align="center"><?=$row['dtCom'];?></td>
</tr>
<?php } ?>
</table>
</form>
</body>
</html>
----------------------------------------------
Date :
2010-04-26 21:13:23
By :
LukNam
คุณลองสังเกตุ ตรงชื่อของ ดร๊อบดาวลิส นะครับคุณตั้งเป็น
echo "<select name=\"yearCom\">";
แต่พอตอนคุนรีเควส หรือโพสออกมาคุณตั้งเป็น
$_REQUEST['desCom'];
$_REQUEST['yearCom'];
$_REQUEST['monthCom'];
if($_POST['desCom']
แล้วสัญลักษณ์ \ มันหายไปไหนหว่า
ผมกะม่ายรู้นะว่ามันเป็นเทคนิคการเขียนโค้ดหรือว่าอะไรป่าว ถ้าไม่ใช่ก็คงผิดที่ชื่อเนี่ยแหละ
Date :
2010-04-27 08:10:38
By :
dekcomnvc
echo "<select name=\"yearCom\">";
สัญลักษณ์ \ คือการปิดไม่ให้ php อ่าน " ที่อยู่ด้านหลังมันค่ะ พอ echo แล้วก็จะได้ <select name="yearCom"> ค่ะ
ปัญหาน่าจะอยู่ที่นำไป where ค่ะ แนะนำให้ echo sql ออกมาดูก่อนค่ะ ว่ามีข้อมูลไหมแล้วมันได้ sql ออกมาถูกต้องหรือไม่
Date :
2010-04-27 08:57:24
By :
ultrasiam
อ้อ ขอบคุณค๊าบคุณ ultrasiam ที่ทำให้ผมหายโง่อีกนิดนึง ขอบคุณหลายๆ
โง่มานาน เหะๆ
ลอง echo มันออกมาห้ายหมดเลย ตั้งแต่ค่าที่รับเข้ามา แล้วก็ข้อมูลในฐานข้อมูล เอิ้กๆ
Date :
2010-04-27 09:04:09
By :
dekcomnvc
อันดับแรกนะคะ form คุณเป็น GET ถ้าจะใช้ $_POST ให้ เปลี่ยนเป็น method="POST" หรือไม่ก็เปลี่ยนจาก $_POST เป็น $_REQUEST ทั้งหมดค่ะ
Date :
2010-04-27 09:12:21
By :
ultrasiam
ต่อไป แก้ เงื่อนไข
if($_POST['desCom']==0 && $_POST['yearCom']==0 && $_POST['monthCom']==0){
จาก 0 เป็น "0" ทุกตัวค่ะ
และ ดู ตรง and monthCom='".$_POST['monthCom']."'"
ในฐานข้่อมูลคุณไม่มี field ที่ชื่อ monthCom นะคะ ตรวจสอบให้ดีๆ
Date :
2010-04-27 09:22:11
By :
ultrasiam
Load balance : Server 05