รบกวนช่วยดูโค้ด ค้นหาจาก list หน่อยค่ะ ติดปัญหาในการค้นหา
ช่วยดูโค้ดค้นหาหน่อยค่ะ
จะ select ข้อมูลให้แสดงแบบนี้ค่ะ ลองใน sql ก็สามารถค้นหาได้ค่ะ
คำสั่ง sql ดังนี้
Code (SQL)
select
stat.Univer_ID,university.Univer_ID,university.Univer_name,stat.Rf_ID,reference_data.Rf_ID,reference_data.Rf_name,
stat.Com_ID,company.Com_ID,company.Com_name,stat.Searches,stat.Full_Text_Requests,stat.Sub_sessions,
stat.Queries,stat.Citation_Events,stat.Month,stat.Years,stat.Last_update
from stat,university,company,reference_data
where(stat.Month='June') AND (stat.Years='2016') AND
(university.Univer_name='Burapha University') AND
(reference_data.Rf_name='Academic Search Complete') AND
(company.Com_name='EBSCO') AND
((stat.Univer_ID = university.Univer_ID) AND
(stat.Rf_ID = reference_data.Rf_ID) AND
(stat.Com_ID = company.Com_ID))
แต่พอเปลี่ยน เป้น ตัวแปร ที่ต้องการค้นหา
Code (PHP)
$strSQL = "select
stat.Univer_ID,university.Univer_ID,university.Univer_name,
stat.Rf_ID,reference_data.Rf_ID,reference_data.Rf_name,
stat.Com_ID,company.Com_ID,company.Com_name,stat.Searches,
stat.Full_Text_Requests,stat.Sub_sessions,stat.Queries,
stat.Citation_Events,stat.Month,stat.Years,stat.Last_update
from stat,university,company,reference_data
where(stat.Month='$Month') AND (stat.Years='$Years') AND
(university.Univer_name='$Univer_name') AND
(reference_data.Rf_name='$Rf_name') AND
(company.Com_name='$Com_name') AND
((stat.Univer_ID = university.Univer_ID) AND
(stat.Rf_ID = reference_data.Rf_ID) AND
(stat.Com_ID = company.Com_ID)) ";
พอคลิกเลือกเดือน เป็น January
ออกค่าใน echo มา แต่ในตารางไม่แสดงข้อมูลค่ะ
******สิ่งที่อยากทำได้คือ แสดงข้อมูล ตาม list ที่ค้นหาค่ะ โดยไม่จำเป็นต้องเลือกทุก list ก็สามารถค้นได้เหมือนกันค่ะ**********
ไฟล์โค้ดที่เขียน ไว้เป็นแบบนี้ค่ะ
Code (PHP)
<form id="form_search" name="form_search" method="post" action="<?=$_SERVER['SCRIPT_NAME'];?>">
เดือน ||
<select name="Month" id="Month">
<option value="">เลือกเดือนที่ต้องการ</option>
<option value="January">January</option>
<option value="February">February</option>
<option value="March">March</option>
<option value="April">April</option>
<option value="May">May</option>
<option value="June">June</option>
<option value="July">July</option>
<option value="August">August</option>
<option value="September">September</option>
<option value="October">October</option>
<option value="November">November</option>
<option value="December">December</option>
</select>
ปี ||
<select name="Years" id="Years">
<option value="">เลือกปีที่ต้องการ</option>
<option value="2015">2015</option>
<option value="2016">2016</option>
<option value="2017">2017</option>
<option value="2018">2018</option>
<option value="2019">2019</option>
<option value="2020">2020</option>
</select>
<br/><br/>
มหาวิทยาลัย ||
<select name="Univer_name" id="Univer_name">
<option value="">เลือกมหาวิทยาลัยที่ต้องการ</option>
<?php
$sql="select * from university ";
$a=mysql_query($sql);
while($objResult=mysql_fetch_array($a)){
?>
<option value="<?=$objResult['Univer_ID']?>"><?=$objResult['Univer_name']?></option>
<?php } ?>
</select>
<br/> <br/>
ฐานข้อมูล Reference Database ||
<select name="Rf_name" id="Rf_name">
<option value="">เลือกฐานข้อมูลที่ต้องการ</option>
<?php
$sql="select * from reference_data ";
$a=mysql_query($sql);
while($objResult=mysql_fetch_array($a)){
?>
<option value="<?=$objResult['Rf_ID']?>"><?=$objResult['Rf_name']?></option>
<?php } ?>
</select>
บริษัท ||
<select name="Com_name" id="Com_name">
<option value="">เลือกบริษัทที่ต้องการ</option>
<?php
$sql="select * from company";
$a=mysql_query($sql);
while($objResult=mysql_fetch_array($a)){
?>
<option value="<?=$objResult['Com_ID']?>"><?=$objResult['Com_name']?></option>
<?php } ?>
</select>
<br/><br/>
<input type="submit" name="button" id="button" value="ค้นหา" />
<input type="button" name="btn_reset" value="ยกเลิก" onclick="window.location='Ad_search_university.php'">
<input type="submit" name="download" id="download" value="ดาวน์โหลด" onclick="window.location='download_admin.php'">
<br/><br/>
<?php
// Search
$strSQL = "select
stat.Univer_ID,university.Univer_ID,university.Univer_name,
stat.Rf_ID,reference_data.Rf_ID,reference_data.Rf_name,
stat.Com_ID,company.Com_ID,company.Com_name,stat.Searches,
stat.Full_Text_Requests,stat.Sub_sessions,stat.Queries,
stat.Citation_Events,stat.Month,stat.Years,stat.Last_update
from stat,university,company,reference_data
where(stat.Month='$Month') AND (stat.Years='$Years') AND
(university.Univer_name='$Univer_name') AND
(reference_data.Rf_name='$Rf_name') AND
(company.Com_name='$Com_name') AND
((stat.Univer_ID = university.Univer_ID) AND
(stat.Rf_ID = reference_data.Rf_ID) AND
(stat.Com_ID = company.Com_ID)) ";
if($_POST["Month"] != "")
{
$strSQL .= " AND (stat.Month = '".$_POST["Month"]."') ";
}
if($_POST["Years"] != "")
{
$strSQL .= " AND (stat.Years = '".$_POST["Years"]."') ";
}
if($_POST["Univer_ID"] != "")
{
$strSQL .= " AND (university.Univer_ID = '".$_POST["Univer_name"]."') ";
}
if($_POST["Rf_ID"] != "")
{
$strSQL .= " AND (reference_data.Rf_ID = '".$_POST["Rf_name"]."') ";
}
if($_POST["Com_ID"] != "")
{
$strSQL .= " AND (company.Com_ID = '".$_POST["Com_name"]."') ";
}
$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
?>
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="00">
<tbody>
<tr>
<td align="center" >
<?php
echo"<br> --------------------<br>";
echo $strSQL;
echo"<br> --------------------<br>";
?>
<br />
<table border="2" cellspacing="0" cellpadding="2" style="border-collapse:collapse;">
<tr>
<td height="40" align="center" bgcolor="#f79e45"> เดือน </td>
<td height="40" align="center" bgcolor="#f79e45"> ปี </td>
<td height="40" align="center" bgcolor="#f79e45"> ชื่อบริษัท </td>
<td height="40" align="center" bgcolor="#f79e45"> ชื่อมหาวิทยาลัย </td>
<td height="40" align="center" bgcolor="#f79e45"> ฐานข้อมูล <br/> Reference Database </td>
<td height="40" align="center" bgcolor="#f79e45"> Searches </td>
<td height="40" align="center" bgcolor="#f79e45"> Full Text<br/> Requests
</td>
<td height="40" align="center" bgcolor="#f79e45"> Sub<br/> sessions </td>
<td height="40" align="center" bgcolor="#f79e45"> Queries </td>
<td height="40" align="center" bgcolor="#f79e45"> Citation<br/> Events </td>
<td height="40" align="center" bgcolor="#f79e45"> แก้ไข </td>
<td height="40" align="center" bgcolor="#f79e45"> ลบ </td>
</tr>
<?
while($objResult = mysql_fetch_array($objQuery))
{
?>
<tr>
<td align="center"><?=$objResult["Month"];?></td>
<td align="center"><?=$objResult["Years"];?></td>
<td align="center"><?=$objResult["Com_name"];?></td>
<td align="center"><?=$objResult["Univer_name"];?></td>
<td align="center"><?=$objResult["Rf_name"];?></td>
<td align="center"><?=$objResult["Searches"];?></td>
<td align="center"><?=$objResult["Full_Text_Requests"];?></td>
<td align="center"><?=$objResult["Sub_sessions"];?></td>
<td align="center"><?=$objResult["Queries"];?></td>
<td align="center"><?=$objResult["Citation_Events"];?></td>
<td align="center"><a href="Edit.php?Univer_ID=<?=$objResult['Univer_ID']?>">แก้ไข</a></td>
<td align="center"><a href="Delete.php?Univer_ID=<?=$objResult['Univer_ID']?>">ลบ</a></td>
</tr>
<?
}
?>
</table>
</td>
</tr>
</tbody>
</table>
<br/>
</form>
Tag : PHP, HTML/CSS, JavaScript, CakePHP
Date :
2017-02-27 22:38:17
By :
viewsmith
View :
770
Reply :
7
ลอง $strSQL ดูครับ ว่าตรงไหนมันแปลกแตกต่างจาก Query ที่เขียนไว้
Date :
2017-02-28 09:30:17
By :
mr.win
ตรงบรรทัดที่ 87-94 เอาไว้ทำไม
ทำไมเขียน sql ซ้ำซ้อนจัง
Date :
2017-02-28 12:41:08
By :
tenten
ตอบความคิดเห็นที่ : 2 เขียนโดย : tenten เมื่อวันที่ 2017-02-28 12:41:08
รายละเอียดของการตอบ ::
เพื่อบอกว่า ตัวแปรของตาราง stat ชื่อ Univer_ID เหมือนกันกับ ตัวแปร Univer_ID ของตาราง university ค่ะ เพราะมีเชื่อกันหลายตาราง
แต่ว่าลองแก้ใหม่แล้วค่ะ โดยไม่ใส่ where สามารถค้นหาได้นะคะ แต่ ยังไม่ตรงตามที่ต้องการ
รูปก่อนเลือก list สำหรับค้นหา
รูปเมื่อเลือก list ค้นหา
คือจากรูปทั้งสองที่แนบมานะคะ จะเห็นว่าเมื่อเลือกค้นหาจาก list ไปแล้ว แต่ขึ้นข้อมูลทั้งหมดค่ะ แต่ไม่แสดงชื่อฐานข้อมูลอื่นที่ไม่ได้เลือกค่ะ แต่ ที่ต้องการอยากให้แสดงแค่เฉพาะข้อมูลที่ค้นหาค่ะ
โค้ดที่แก้ไปก็แบบประมาณนี้ค่ะ
Code (PHP)
<form id="form_search" name="form_search" method="post" action="">
เดือน ||
<select name="Month" id="Month">
<option value="">เลือกเดือนที่ต้องการ</option>
<option value="January">January</option>
<option value="February">February</option>
<option value="March">March</option>
<option value="April">April</option>
<option value="May">May</option>
<option value="June">June</option>
<option value="July">July</option>
<option value="August">August</option>
<option value="September">September</option>
<option value="October">October</option>
<option value="November">November</option>
<option value="December">December</option>
</select>
ปี ||
<select name="Years" id="Years">
<option value="">เลือกปีที่ต้องการ</option>
<option value="2015">2015</option>
<option value="2016">2016</option>
<option value="2017">2017</option>
<option value="2018">2018</option>
<option value="2019">2019</option>
<option value="2020">2020</option>
</select>
<br/><br/>
มหาวิทยาลัย ||
<select name="Univer_name" id="Univer_name">
<option value="">เลือกมหาวิทยาลัยที่ต้องการ</option>
<?php
$sql="select * from university ";
$a=mysql_query($sql);
while($objResult=mysql_fetch_array($a)){
?>
<option value="<?=$objResult['Univer_name']?>"><?=$objResult['Univer_name']?></option>
<?php } ?>
</select>
<br/> <br/>
ฐานข้อมูล Reference Database ||
<select name="Rf_name" id="Rf_name">
<option value="">เลือกฐานข้อมูลที่ต้องการ</option>
<?php
$sql="select * from reference_data ";
$a=mysql_query($sql);
while($objResult=mysql_fetch_array($a)){
?>
<option value="<?=$objResult['Rf_name']?>"><?=$objResult['Rf_name']?></option>
<?php } ?>
</select>
บริษัท ||
<select name="Com_name" id="Com_name">
<option value="">เลือกบริษัทที่ต้องการ</option>
<?php
$sql="select * from company";
$a=mysql_query($sql);
while($objResult=mysql_fetch_array($a)){
?>
<option value="<?=$objResult['Com_name']?>"><?=$objResult['Com_name']?></option>
<?php } ?>
</select>
<br/><br/>
<input type="submit" name="button" id="button" value="ค้นหา" />
<input type="button" name="btn_reset" value="ยกเลิก" onclick="window.location='Admin_search.php'">
<input type="submit" name="download" id="download" value="ดาวน์โหลด" onclick="window.location='download_admin.php'">
<br/><br/>
<?php
// Search
$strSQL = "SELECT
stat.Univer_ID,university.Univer_ID,university.Univer_name,
stat.Rf_ID,reference_data.Rf_ID,reference_data.Rf_name,
stat.Com_ID,company.Com_ID,company.Com_name,stat.Searches,
stat.Full_Text_Requests,stat.Sub_sessions,stat.Queries,
stat.Citation_Events,stat.Month,stat.Years,stat.Last_update
FROM stat
LEFT JOIN university ON stat.Univer_ID = university.Univer_ID
LEFT JOIN company ON stat.Com_ID = company.Com_ID
LEFT JOIN reference_data ON stat.Rf_ID = reference_data.Rf_ID
";
if($_POST["Month"] != "")
{
$strSQL .= " AND (stat.Month = '".$_POST["Month"]."') ";
}
if($_POST["Years"] != "")
{
$strSQL .= " AND (stat.Years = '".$_POST["Years"]."') ";
}
if($_POST["Univer_name"] != "")
{
$strSQL .= " AND (university.Univer_name = '".$_POST["Univer_name"]."') ";
}
if($_POST["Rf_name"] != "")
{
$strSQL .= " AND (reference_data.Rf_name = '".$_POST["Rf_name"]."') ";
}
if($_POST["Com_name"] != "")
{
$strSQL .= " AND (company.Com_name = '".$_POST["Com_name"]."') ";
}
$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
?>
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="00">
<tbody>
<tr>
<td align="center" >
<?php
echo"<br> --------------------<br>";
echo $strSQL;
echo"<br> --------------------<br>";
?>
<br />
<table border="2" cellspacing="0" cellpadding="2" style="border-collapse:collapse;">
<tr>
<td height="40" align="center" bgcolor="#f79e45"> เดือน </td>
<td height="40" align="center" bgcolor="#f79e45"> ปี </td>
<td height="40" align="center" bgcolor="#f79e45"> ชื่อบริษัท </td>
<td height="40" align="center" bgcolor="#f79e45"> ชื่อมหาวิทยาลัย </td>
<td height="40" align="center" bgcolor="#f79e45"> ฐานข้อมูล <br/> Reference Database </td>
<td height="40" align="center" bgcolor="#f79e45"> Searches </td>
<td height="40" align="center" bgcolor="#f79e45"> Full Text<br/> Requests
</td>
<td height="40" align="center" bgcolor="#f79e45"> Sub<br/> sessions </td>
<td height="40" align="center" bgcolor="#f79e45"> Queries </td>
<td height="40" align="center" bgcolor="#f79e45"> Citation<br/> Events </td>
<td height="40" align="center" bgcolor="#f79e45"> แก้ไข </td>
<td height="40" align="center" bgcolor="#f79e45"> ลบ </td>
</tr>
<?
while($objResult = mysql_fetch_array($objQuery))
{
?>
<tr>
<td align="center"><?=$objResult["Month"];?></td>
<td align="center"><?=$objResult["Years"];?></td>
<td align="center"><?=$objResult["Com_name"];?></td>
<td align="center"><?=$objResult["Univer_name"];?></td>
<td align="center"><?=$objResult["Rf_name"];?></td>
<td align="center"><?=$objResult["Searches"];?></td>
<td align="center"><?=$objResult["Full_Text_Requests"];?></td>
<td align="center"><?=$objResult["Sub_sessions"];?></td>
<td align="center"><?=$objResult["Queries"];?></td>
<td align="center"><?=$objResult["Citation_Events"];?></td>
<td align="center"><a href="Edit.php?Univer_ID=<?=$objResult['Univer_ID']?>">แก้ไข</a></td>
<td align="center"><a href="Delete.php?Univer_ID=<?=$objResult['Univer_ID']?>">ลบ</a></td>
</tr>
<?
}
?>
</table>
</td>
</tr>
</tbody>
</table>
<br/>
</form>
Date :
2017-02-28 13:06:07
By :
viewsmith
ไม่ คุณต้องใส่ where ไปด้วยสิ แต่ข้างหลัง where ให้เหลือแค่นี้
Code (PHP)
<?php
// Search
$strSQL = "select
stat.Univer_ID,university.Univer_ID,university.Univer_name,
stat.Rf_ID,reference_data.Rf_ID,reference_data.Rf_name,
stat.Com_ID,company.Com_ID,company.Com_name,stat.Searches,
stat.Full_Text_Requests,stat.Sub_sessions,stat.Queries,
stat.Citation_Events,stat.Month,stat.Years,stat.Last_update
from stat,university,company,reference_data
where ";
if($_POST["Month"] != "")
{
$strSQL .= " (stat.Month = '".$_POST["Month"]."') ";
}
if($_POST["Years"] != "")
{
$strSQL .= " AND (stat.Years = '".$_POST["Years"]."') ";
}
if($_POST["Univer_ID"] != "")
{
$strSQL .= " AND (university.Univer_ID = '".$_POST["Univer_name"]."') ";
}
if($_POST["Rf_ID"] != "")
{
$strSQL .= " AND (reference_data.Rf_ID = '".$_POST["Rf_name"]."') ";
}
if($_POST["Com_ID"] != "")
{
$strSQL .= " AND (company.Com_ID = '".$_POST["Com_name"]."') ";
}
$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
?>
Date :
2017-02-28 13:26:41
By :
tenten
ตอบความคิดเห็นที่ : 4 เขียนโดย : tenten เมื่อวันที่ 2017-02-28 13:26:41
รายละเอียดของการตอบ ::
ลองตามที่คุณ tenten แนะนำ
สามารถค้นหาได้แค่ เดือนค่ะ แต่ข้อมูลขึ้นซ้ำกันค่ะ
จากรูปจะเห็นว่า ค้นหาโดยเลือก เดือนเป็น March อย่างเดียว ก็จะแสดงข้อมุลของเดือน March ทั้งหมดค่ะ แต่ ในข้อมูลจริงมีแค่ ตัวเดียวค่ะ แบบนี้
ก็คือข้อมูลมีการขึ้นซ้ำ บริษัท ค่ะ ในที่นี้มี 3 บริษัท ก็ขึ้น จนครบก็เปลียนเป็นชื่อมหาวิทยาลัยอื่นไปเรื่อยๆค่ะ
เลือกปี echo แบบนี้ค่ะ
เลือก ชื่อมหาวิทยาลัย เลือกฐานข้อมุล เลือกบริษัท echo ออกเหมือนกันแบบนี้ค่ะ
แต่ถ้าเปลี่ยนค่าจาก
if($_POST["Univer_ID"] != "")
{
$strSQL .= " AND (university.Univer_ID = '".$_POST["Univer_name"]."') ";
ให้เป็น
if($_POST["Univer_name"] != "")
{
$strSQL .= " AND (university.Univer_name = '".$_POST["Univer_name"]."') ";
จะขึ้น echo แบบนี้ แต่ก็ยังไม่สามารถค้นหาได้ค่ะ
Date :
2017-02-28 14:28:07
By :
viewsmith
ใส่ left join ไปด้วยสิ
Date :
2017-02-28 17:09:48
By :
tenten
ตอบความคิดเห็นที่ : 6 เขียนโดย : tenten เมื่อวันที่ 2017-02-28 17:09:48
รายละเอียดของการตอบ ::
ตอนนี้ที่แก้ไขไปแล้วทำได้คือ ค้นหาได้แล้วค่ะ แต่ติดอยู่ที่ว่า ตรง where ค่ะ คืออยากให้ค้นหาแยกกันได้ค่ะ แบบเลือก list เดือน หรือ list ปี หรือเลือก list ใด list หนึ่ง ก็ให้ขึ้นข้อมูล หรือเลือก list เดือน ปี พร้อมกันสองอันก็ให้ค้นหาได้ค่ะ หรือจะเลือกทุก list ก็ให้ค้นหาได้ค่ะ
ตรง where ลองใส่ AND คือต้องเลือก list ทุกตัวเลยถึงจะค้นหาได้ค่ะ เลยลองใส่ OR แทน ก็ค้นหาได้หมดค่ะ แต่แยกกันค้นหาค่ะ แบบว่า กดเลือก list เดือน กับ list ปี ให้ค้นพร้อมกันไม่ได้ค่ะ
Code (PHP)
$strSQL = "SELECT
stat.stat_ID,stat.Month,stat.Years,stat.Com_ID,company.Com_ID,
company.Com_name,
stat.Univer_ID,university.Univer_ID,university.Univer_name,
reference_data.Rf_ID,reference_data.Rf_name,
stat.Searches,stat.Full_Text_Requests,
stat.Sub_sessions,stat.Queries,stat.Citation_Events,
stat.Last_update
FROM stat
LEFT JOIN university ON stat.Univer_ID = university.Univer_ID
LEFT JOIN company ON stat.Com_ID = company.Com_ID
LEFT JOIN reference_data ON stat.Rf_ID = reference_data.Rf_ID
WHERE (stat.Month='$Month') OR (stat.Years='$Years')OR
(university.Univer_name = '$Univer_name')OR
(reference_data.Rf_name = '$Rf_name') OR
(company.Com_name='$Com_name')
";
Date :
2017-02-28 17:28:19
By :
viewsmith
Load balance : Server 02