รบกวนสอบถามวิธีการ Search โดยใช้เงื่อนไข 2 เงื่อนไข
WHERE ฟิลเก็บlistbox = ค่าของlistbox AND ฟิลล์วันที่ BETWEEN วันเริ่ม AND วันจบ ;
Date :
2015-01-20 13:58:14
By :
meannerss
ขอดู code หน่อยครับ
Date :
2015-01-20 14:03:51
By :
yamcrocodile
ก็น่าจะถูกแล้วนี่ครับ มีปัญหาอยางไรเหรอครับ
ปล. ดู อัลกอลิธึม โดยรวม
Date :
2015-01-20 15:00:51
By :
Chaidhanan
<form name="frmSearch" method="post " action="">
ลองใหม่ครับ
Date :
2015-01-20 15:02:46
By :
yamcrocodile
ที่คำสั่งนี้ $objQuery = mysql_query($strSQL) ;
ให้แก้เป็น
$objQuery = mysql_query($strSQL) or die( $strSQL . "\n<br>" . $mysql_error());
ลองอีกทีครับ เอาตรงนี้ไปใส่ เพื่อเช็ค statement ด้วยตาครับ
Date :
2015-01-20 15:51:33
By :
Chaidhanan
แปปครับ งงอยู่
ประวัติการแก้ไข 2015-01-20 15:56:47 2015-01-20 15:58:05 2015-01-20 15:59:36
Date :
2015-01-20 15:54:22
By :
meannerss
เอาบรรทัดที่ 27-31 ออก ใส่นี่ลงไป
Code (PHP)
//ประกาศตัวแปรซะ กินทรัพยากรช่างหัวมัน ตาไม่ลายพอ 555
$catalog = $_POST["ddlSelect"];
$Date_start=$_POST["datestart"];
$Date_end=$_POST["dateend"];
//ตรวจหาการกรอกข้อมูลการเลือกหมวด
// อย่าลืมว่าคุณใช้ <option value="null">- Select -</option> มันเป็นคำว่างnull มิไช่ค่าว่าง ""
if($catalog == "null")
{
echo "คุุณยังไม่เลือกรูปแบบ ใส่โค้ดให้เด้งออกไปใส่มาใหม่ซะ";
}else{
// หากเลือกแล้ว หาการกรอกวนที่ ถ้าไม่มีก็สั่งเอามาหมดแบบไม่กำหนด
// หากเลือกอันใดอันนึง เช่นเลือกแต่ตัวเริ่มไม่เลือกตัวจบ ก็ถือว่ากรอกไม่ครบคิวรี่แบบทั้งหมดเหมือนเดิม
if($Date_start=="" || $Date_end=="")
{
$AAA = ""; }else{
$AAA = "AND ชื่อฟิลวันที่ BETWEEN '$Date_start' AND '$Date_end' ";
}
//คำสั่ง sql
$strSQL = "SELECT * FROM masterplan WHERE ชื่อฟิลหมวดหมู่ = '$catalog' $AAA ORDER BY plan_id ASC";
}
ปล.
1.อย่าลืมปรับคำว่า ชื่อฟิลวันที่ ให้เป็น ชื่อของฟิลที่เก็บวันที่ใน db
1.อย่าลืมปรับคำว่า ชื่อฟิลหมวดหมู่ ให้เป็น ชื่อของฟิลที่เก็บค่าของหมวดหมู่ใน db
ประวัติการแก้ไข 2015-01-20 16:17:39 2015-01-20 16:25:42 2015-01-20 16:26:55
Date :
2015-01-20 16:17:20
By :
meannerss
เอามาทั้ง ไฟล์ อีกที่ครับ ที่แก้ไขแล้ว แล้ว backup โค๊ดเ่ก่าไว้บ้างหรือเปล่าครับ 55555 เดี๋ยวแก้จนเละ
Date :
2015-01-20 16:19:27
By :
Chaidhanan
ผมโมฯให้ใหม่ แต่ยังไม่ได้ลองนะครับ คงไม่มีการ error จากการ ผิดไวยกรณ์
แต่ ส่วนการคิวรี่ ไม่แน่ใจ เพราะไม่มี database ให้ทดสอบ
หลักการเขียนโปรแกรมของผม พยายามแยกส่วน PHP กับ html ออกจากกันให้มากที่สุด
จะเริ่มต้นด้วยการ generate ค่าต่างๆ ไว้ก่อน อยู่ในส่วนแรก แล้วค่อยนำไปใช้ ในส่วน HTML ส่วนหลัง ให้น้อยที่สุด
และโค๊ดบางตัว ผมย่อให้เหลือน้อยลง แต่ประสิทธิภาพ ไม่ต่างกัน ทำให้ดูง่ายขึ้น (ถ้าเข้าใจ 5555)
ก็ลองศึกษาดูนะครับ คงได้ประโยชน์ไม่มากก็น้อย
สิ่งสำคัญ พยายามอ่านให้มาก( ของชาวบ้าน ) อ่านให้เข้าใจ แล้วมาประยุกต์เขียนเอง
อย่าลอกมาใช้ โดยไม่ศึกษาครับ
Code (PHP)
<?php
$ddl=isset($_POST['ddlSelect'])? $_POST['ddlSelect'] : '';
$dte_st=isset($_POST['datestart'])? $_POST['datestart'] : '';
$dte_en=isset($_POST['dateend'])? $_POST['dateend'] : '';
////////////////////////////////////////////////////////////////////////////////
$objConnect = mysql_connect("localhost","whitty99","GVZ1o5o1Ym4H") or die("Error Connect to Database");
$objDB = mysql_select_db("whitty99_masterplan");
////////////////////////////////////////////////////////////////////////////////
$from = ' from masterplan ';
$where = ($dte_st && $dte_en) ? " where $ddl BETWEEN '$dte_st' AND '$dte_en' " : '';
$orderby=' ORDER BY plan_id ASC ';
////////////////////////////////////////////////////////////////////////////////
$obj = mysql_query( $sql = "select count($ddl) ". $form . $where ) or die( $sql . "<br>\n" . mysql_error());
$rs=mysql_fetch_row($obj);
$Num_Rows = $rs[0];
$Per_Page = 10; // Per Page
$Page = isset($_GET["Page"])? $_GET["Page"] : 1;
////////////////////////////////////////////////////////////////////////////////
$Page_ST = $Page-3; if( $Page_ST<1) $Page_ST = 1;
$Page_EN = $Page+3; if( $Page_EN>$Num_Pages) $Page_EN = $Num_Pages;
$Row_Start = $Per_Page * $Page - $Per_Page;
$Num_Pages = ceil($Num_Rows / $Per_Page);
$link="?name=admin&file=test3&txtKeyword=$_GET[txtKeyword]&Page=";
$limit = " LIMIT $Row_Start , $Per_Page";
$obj = mysql_query( $sql = 'select * ' . $from . $where . $orderby . $limit ) or die( $sql . "\n<br>" . $mysql_error());
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
///// จุดแยกส่วน PHP กับ HTML
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>
<body>
<form name="frmSearch" method="POST" action="">
<table width="75%" border="1" align="center">
<tr>
<th>Select
<select name="ddlSelect" id="ddlSelect">
<option value="null">- Select -</option>
<option value="cust_duedate" <?=($ddl=="cust_duedate" ? 'selected' : '')?> >Customer Due Date</option>
<option value="placement_due" <?=($ddl=='placement_due' ? 'selected' : '')?> >Placement Due Date</option>
<option value="lasercut_due" <?=($ddl=='lasercut_due' ? 'selected' : '')?> >Laser Cut Due Date</option>
</select>
Between <input name="datestart" type="text" id="datestart" value="<?=$dte_st?>">
To <input name="dateend" type="text" id="dateend" value="<?=$dte_en?>">
<input type="submit" value="Search"></th>
</tr>
</table>
<p> </p>
</form>
<table width="95%" border="1" cellpadding="0" cellspacing="0" bordercolor="#111111" id="AutoNumber1" align="center" style="border-collapse: collapse">
<tr bgcolor="#79C4CA" height="20">
<td width="3%" align="center">
<font color="#ffffff"><b>No</b></font></td>
<td width="12%" align="center" ><font color="#ffffff"><b>JOG No.</b></font></td>
<td width="13%" align="center"><font color="#ffffff"><b>Order Name</b></font></td>
<td width="11%" align="center"><font color="#ffffff"><b>Quantity</b></font></td>
<td width="17%" align="center" ><font color="#ffffff" ><b>Customer Due Date</b></font></td>
<td width="17%" align="center"><font color="#ffffff"><b>Placement Due Date</b></font></td>
<td width="17%" align="center"><font color="#ffffff"><b>Laser Cut Due Date</b></font></td>
</tr>
<?php while($row = mysql_fetch_assoc($obj)): ?>
<tr>
<td><div align="center"><?=$row["plan_id"]?></div></td>
<td><?=$row["jog_no"]?></td>
<td><?=$row["order_name"]?></td>
<td align="center"><?=$row["quantity"]?></td>
<td align="center"><?=$row["cust_due"]?></td>
<td align="center"><?=$row["placement_due"]?></td>
<td align="center"><?=$row["lasercut_due"]?></td>
</tr>
<?php endwhile; ?>
</table>
<br>Total <?=$Num_Rows;?> Record : <?=$Num_Pages;?> Page :
<?php
if($Page_ST>1){ ?><a href='<?=$link?>1'><< First</a><?php }
for($i=$Page_ST; $i<=$Page_EN; $i++){
if($i != $Page){ ?>[ <a href='<?=($link . $i)?>' ><?=$i?></a><?php }else{ ?><b><?=$i?></b><?php }
}
if($Page_EN<$Num_Pages){ ?><a href ='<?=($link . $Num_Pages)?>' >Last >></a><? }
?>
</body>
</html>
Date :
2015-01-21 08:57:21
By :
Chaidhanan
ไล่ echo $sql แต่ละตัว แล้วลองไปรันใน phpMyAdmin ดูนะครับ ถ้ารันได้แสดงว่าโค๊ดผิด แต่ถ้ารันแล้ว error ก็แสดงว่า SQL ผิด ค่อยๆแก้กันไป แต่ดูแล้ว select count() มันว่างเปล่า ก็แสดงว่า form ส่งค่ามาไม่ถูกครับ
Date :
2015-01-21 12:54:31
By :
{Cyberman}
ขอบคุณทุกคำแนะนำ และทุกๆ ความช่วยเหลือนะคะ...
ตอนนี้ถอดใจมาใช้เงื่อนไขแค่ระยะเวลาอย่างเดียวแล้วคะ
ขอบคุณอีกครั้งนะคะ...ไว้จะมารบกวนใหม่นะคะ ^_^
Date :
2015-01-22 13:58:20
By :
nlilng
ต้องขอโทษด้วยครับ โค๊ดผมผิดอ่ะครับ สะกดคำผิด ก็อย่างที่บอกไม่ได้ทดสอบ เพราะ ไม่ได้สร้าง ตารางมาทดสอบอะครับ
ชื่อตารางมันหายไปอะครับ
select count(*) xxxxxxx where 'placement_due' BETWEEN '2015-02-01' AND '2015-02-28'
ตรง xxxxxxx เป็นส่วนของชื่อตาราง $from แต่ผมพิมพ์ เป็น $form
$obj = mysql_query( $sql = "select count(*) ". $form . $where ) or die( $sql . "<br>\n" . mysql_error());
แก้เป็น
$obj = mysql_query( $sql = "select count(*) ". $from . $where ) or die( $sql . "<br>\n" . mysql_error());
Date :
2015-01-23 11:59:10
By :
Chaidhanan
Load balance : Server 02