มีปัญหาในการใช้ if...else...ในการ query ข้อมูลจากฐานข้อมูลครับ
ตอนนี้ผมได้ทำการสร้างหน้าเว็บขึ้นมา 2 หน้า
หน้าที่ 1
Code (PHP)
<!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=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<p> </p>
<p> </p>
<form id="form1" name="form1" method="post" action="show_list_month_year.php">
<label>
<input type="radio" name="radio" id="radio" value="r1"
checked onClick="javaScript:if(this.checked){document.form1.month.disabled=false;}{document.form1.year.disabled=false;}{document.form1.year2.disabled=true;}"/>
<select name="month" id="month" disabled="disabled">
<option value="00">= เดือน =</option>
<option value="01">มกราคม</option>
<option value="02">กุมภาพันธ์</option>
<option value="03">มีนาคม</option>
<option value="04">เมษายน</option>
<option value="05">พฤษภาคม</option>
<option value="06">มิถุนายน</option>
<option value="07">กรกฏาคม</option>
<option value="08">สิงหาคม</option>
<option value="09">กันยายน</option>
<option value="10">ตุลาคม</option>
<option value="11">พฤศจิกายน</option>
<option value="12">ธันวาคม</option>
</select>
</label>
<label>
<select name="year" id="year" disabled="disabled" >
<option value="00">= ปี =</option>
<option value="2012">2555</option>
<option value="2013">2556</option>
<option value="2014">2557</option>
<option value="2015">2558</option>
<option value="2016">2559</option>
<option value="2017">2560</option>
</select>
<br />
<br />
<input type="radio" name="radio" id="radio" value="r2" onClick="javaScript:if(this.checked){document.form1.month.disabled=true;}{document.form1.year.disabled=true;}{document.form1.year2.disabled=false;}"
/>
<select name="year2" id="year2" disabled="disabled">
<option value="00">= ปี =</option>
<option value="2012">2555</option>
<option value="2013">2556</option>
<option value="2014">2557</option>
<option value="2015">2558</option>
<option value="2016">2559</option>
<option value="2017">2560</option>
</select>
<br />
<br />
</label>
<p>
<label>
<input type="submit" name="button" id="button" value="ตกลง" />
</label>
</p>
</form>
</body>
</html>
ในหน้าที่ 2
Code (PHP)
<?php require_once('Connections/library.php'); ?>
<?
$y = $_POST["year"];
$y2 = $_POST["year2"];
$m = $_POST["month"];
?>
<style type="text/css">
@import url("css.css");
</style>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}
mysql_select_db($database_library, $library);
if($_POST["r1"] == "r1")
{
$query_january = "SELECT book_name,book_isbn,day_show , count(borrow_isbn) as maxid FROM member_borrow INNER JOIN book ON member_borrow.borrow_isbn = book.book_isbn WHERE member_borrow.day_show like '%-$m-$y' GROUP BY borrow_isbn ORDER BY maxid desc limit 15 ";
}
else
{
$query_january = "SELECT book_name,book_isbn,day_show , count(borrow_isbn) as maxid FROM member_borrow INNER JOIN book ON member_borrow.borrow_isbn = book.book_isbn WHERE member_borrow.day_show like '%-%-$y2' GROUP BY borrow_isbn ORDER BY maxid desc limit 15 ";
}
$january = mysql_query($query_january, $library) or die(mysql_error());
$row_january = mysql_fetch_assoc($january);
$totalRows_january = mysql_num_rows($january);
?>
<!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">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<body>
<p><? echo $_POST["radio"]; ?><br />
<? echo $_POST["radio2"]; ?><br />
<? echo $_POST["month"]; ?><br />
<? echo $_POST["year"]; ?><br />
<? echo $_POST["year2"]; ?></p>
<p> </p>
<p align="center"><span class="style15">สถิติหนังสือถูกยืมสูงสุด 15 รายการ</span></p>
<p align="center" class="style15">เดือน <? echo $_GET['months'] ?> ปี <? echo $_GET['years'] ?></p>
<p><br />
</p>
<table width="60%" border="0" align="center">
<tr>
<td width="33%"><div align="center" class="style14">ชื่อหนังสือ</div></td>
<td width="34%"><div align="center" class="style14">เลขISBN</div></td>
<td width="33%"><div align="center" class="style14">วันที่</div></td>
</tr>
<?php do { ?>
<tr>
<td class="style14"><div align="left"><?php echo $row_january['book_name']; ?></div></td>
<td class="style14"><div align="center"><?php echo $row_january['book_isbn']; ?></div></td>
<td class="style14"><div align="center"><?php echo $row_january['day_show']; ?></div></td>
</tr>
<?php } while ($row_january = mysql_fetch_assoc($january)); ?>
</table>
<p> </p>
</body>
</html>
<?php
mysql_free_result($january);
?>
จากการทำการทดสอบผลออกมาเป็น
กรณีที่เลือก เดือน และ ปี
กรณีที่เลือก ปี
ในสคริปผมใช้Code (PHP)
<?php
mysql_select_db($database_library, $library);
if($_POST["r1"] == "r1")
{
$query_january = "SELECT book_name,book_isbn,day_show , count(borrow_isbn) as maxid FROM member_borrow INNER JOIN book ON member_borrow.borrow_isbn = book.book_isbn WHERE member_borrow.day_show like '%-$m-$y' GROUP BY borrow_isbn ORDER BY maxid desc limit 15 ";
}
else
{
$query_january = "SELECT book_name,book_isbn,day_show , count(borrow_isbn) as maxid FROM member_borrow INNER JOIN book ON member_borrow.borrow_isbn = book.book_isbn WHERE member_borrow.day_show like '%-%-$y2' GROUP BY borrow_isbn ORDER BY maxid desc limit 15 ";
}
$january = mysql_query($query_january, $library) or die(mysql_error());
$row_january = mysql_fetch_assoc($january);
$totalRows_january = mysql_num_rows($january);
?>
คือมันทำเงื่อนไขแรกไม่ไ้ด้
แต่ถ้าแยกเดี่ยวๆ มาแล้วมันสามารถทำงานตามเงื่อไข WHERE ได้ ปกติครับ
ไม่ทราบว่ามันมีปัญหาตรงไหนหรอครับTag : PHP, MySQL
Date :
2012-06-23 03:06:18
By :
numprick
View :
1705
Reply :
2
ผมดูแล้วยังไม่เข้าใจครับ ปกติถ้าค้นหาหลายเงื่อนไขผมจะใช้ตัวนี้ครับ
Code (PHP)
<?
$strSQL = "SELECT * FROM product WHERE 1 ";
if($_POST["ddlBrand"] != "")
{
$strSQL .= " AND brand = '".$_POST["ddlBrand"]."' ";
}
if($_POST["ddlType"] != "")
{
$strSQL .= " AND type = '".$_POST["ddlType"]."' ";
}
if($_POST["ddlSize"] != "")
{
$strSQL .= " AND size = '".$_POST["ddlSize"]."' ";
}
?>
Date :
2012-06-23 07:52:07
By :
mr.win
เอาตามความเข้าใจที่ผมเห็นนะ คุณมีตัวเลือก 2 แถว
แถว 1 มีให้เลือก Radio , เดือก , ปี
แถว 2 มีให้เลือก Radio , ปี
มันก็จะเป็นว่า แถวแรกมีตัวแปร 3 ตัวที่จะส่งไป ส่วนแถวสองก็จะมีแค่ 2 ที่จะส่งไป ส่วนชื่อตัวแปรอาจจะเป็นแบบนี้
Code (PHP)
<table>
<tr>
<td>แถวแรก</td>
<td><input type="radio" name="Radi1"> <input type="textbox" name="Year1"> <input type="textbox" name="Month"></td>
</tr>
<tr>
<td>แถวสอง</td>
<td><input type="radio" name="Radi2"> <input type="textbox" name="Year2"></td>
</tr>
</table>
ส่วนวิธีรับไป Query ก็ตาม Mr.Win เลยครับ
Code (PHP)
<?
$strSQL = "SELECT * FROM product WHERE 1 ";
if($_POST["Radi1"] != "" and $_POST["Year1"] != "" and $_POST["Month"] != "")
{
$strSQL .= " AND ตรงนี้ก็ระบุไปว่าเอาฟิลด์ไรบ้าง ";
}
if($_POST["Radi2"] != "" and $_POST["Year2"] != "")
{
$strSQL .= " AND ตรงนี้ก็ระบุไปว่าเอาฟิลด์ไรบ้าง ";
}
?>
แต่ผมขอแนะนำนิดหน่อยนะครับ
ทำไมต้องทำ Radio สองอันด้วยครับ คือเท่าที่เห็นนะทำ Radio อันเดียวก็ได้ครับ แล้วในหน้ารับก็เช็คเอาว่ามีตัวแปรไหนเป็นค่าว่าง หรือไม่ว่างเอาน่ะ
แบบนี้น่าจะดีกว่านะ ความเห็นส่วนตัวนะ
Date :
2012-06-23 09:08:20
By :
บังเอิญผ่านมาเห็น
Load balance : Server 00