หลังจาก Inner join แล้วข้อมูลไม่มีการแสดงที่หน้าเวป แก้ไงดี
รบกวนช่วยดูด้วยครับ ว่า Code ตามข้างล่างนี้ทำไมเวลาที่แสดงที่หน้าเวปแล้วข้อมูลไม่โชว์อะไรเลย หลังจากที่ได้มีการทำ Inner join แต่ถ้าหากไม่มีการ join table เรียกมาโชว์แค่ table เดียวข้อมูลสามารถแสดงออกที่หน้าเวปได้ตามปกติ รบกวนช่วยด้วยครับ
Code (PHP)
<html>
<head>
<title>ThaiCreate.Com PHP & SQL Server Tutorial</title>
</head>
<body>
<form name="frmSearch" method="get" action="<?=$_SERVER['SCRIPT_NAME'];?>">
<table width="599" border="1">
<tr>
<th>Keyword
<input name="txtKeyword" type="text" id="txtKeyword" value="<?=$_GET["txtKeyword"];?>">
<input type="submit" value="Search"></th>
</tr>
</table>
</form>
<?
if($_GET["txtKeyword"] != "")
{
$objConnect = mssql_connect("192.168.1.3\SQL2005","sa","sa191") or die("Error Connect to Database");
$objDB = mssql_select_db("SRI_Golive");
// Search By Name or Email
$strSQL =
"SELECT t0.createdate,t0.createTime,t1.block FROM oscl as t0 inner join oins as t1 on t0.insid = t1.insid WHERE (t0.createdate LIKE '%".$_GET["txtKeyword"]."%') ";
//"SELECT T0.createDate, T0.createTime, T0.[custmrName], T1.[street], T1.[block], T0.[subject], T0.[itemCode], T0.[internalSN], T0.[manufSN], T0.[closeTime], T0.[closeDate], T4.[Name], T3.[Name], T2.[firstName] FROM OSCL T0 INNER JOIN OINS T1 ON T0.insID = T1.insID INNER JOIN OHEM T2 ON T0.technician = T2.empID INNER JOIN OSCT T3 ON T0.callType = T3.callTypeID INNER JOIN OSCS T4 ON T0.status = T4.statusID WHERE (T0.createDate LIKE '%".$_GET["txtKeyword"]."%') AND T2.empID = T0.technician AND T0.callType = T3.callTypeID AND T4.statusID = T0.status ";
$objQuery = mssql_query($strSQL) or die ("Error Query [".$strSQL."]");
?>
<table width="600" border="1">
<tr>
<th width="91"> <div align="center">Create Date</div></th>
<th width="98"> <div align="center">Create Time </div></th>
<th width="98"> <div align="center">ที่อยู่ </div></th>
</tr>
<?
while($objResult = mssql_fetch_array($objQuery))
{
?>
<tr>
<td><div align="center"><?=$objResult["t0.createdate"];?></div></td>
<td><?=$objResult["t0.createTime"];?></td>
<td><?=$objResult["t1.block"];?></td>
</tr>
<?
}
?>
</table>
<?
mssql_close($objConnect);
}
?>
</body>
</html>
Tag : PHP, Ms SQL Server 2005
Date :
2011-11-11 08:58:50
By :
โปรแกรมบ้า
View :
1239
Reply :
23
copy --> SELECT t0.createdate,t0.createTime,t1.block FROM oscl as t0 inner join oins as t1 on t0.insid = t1.insid WHERE (t0.createdate LIKE '%".$_GET["txtKeyword"]."%') ไป test ที่ SQL ดูว่าค่าออกไหม
ถ้าออก ลอง $numrow = mssql_num_rows($strSQL);
แล้ว echo $numrow; ดูว่ามีข้อมูลไหม
Date :
2011-11-11 10:16:39
By :
LuckyStar
LIKE '10' น่าจะต้องใส่อักขระเพิ่มครับ ถ้าเป็น Mysql จะเป็น '%10%' แต่ถ้าเป็นฝั่ง Microsoft จะเป็น '*10*'
Date :
2011-11-11 15:02:13
By :
Songkram
มีปัญหาที่ฟังก์ชั่นนี้ครับ mssql_num_rows
ในโค้ดที่ให้มาไม่เห็นว่าอยู่บันทัดไหน ถ้าคิวรี่ใน MS SQL Server ได้ก็แสดงว่าคิวรี่ถูกแล้ว เหลือแต่ว่า php รองรับฟังก์ชั่น mssql_num_rows นี้อย่างไรบ้าง.....
ลองตรวจสอบวิธีการใช้งานดูนะครับว่า ใช้อย่างไร และใช้กับเวอร์ชั่นของ PHP ใดได้บ้าง ถ้าไม่จำเป็นต้องนับแถว ก็ไม่ต้องใส่ก็ได้ครับ หรือถ้าจำเป็นต้องนับแถว ให้หลีกเลี่ยงไปใช้ count แทนครับ ......
Date :
2011-11-11 16:15:46
By :
Songkram
ลองเอา code นี้ไปแทนดูนะ
Code (PHP)
$objQuery = mssql_query("SELECT t0.createdate,t0.createTime,t1.block FROM oscl as t0 inner join oins as t1 on t0.insid = t1.insid WHERE (t0.createdate LIKE '%10%')");
$num = mssql_num_rows($objQuery);
echo $num;
<table width="600" border="1">
<tr>
<th width="91"> <div align="center">Create Date</div></th>
<th width="98"> <div align="center">Create Time </div></th>
<th width="98"> <div align="center">ที่อยู่ </div></th>
</tr>
<?
while($objResult = mssql_fetch_array($objQuery))
{
?>
<tr>
<td><div align="center"><?=$objResult["createdate"];?></div></td>
<td><?=$objResult["createTime"];?></td>
<td><?=$objResult["block"];?></td>
</tr>
<?
}
?>
</table>
Date :
2011-11-11 16:16:43
By :
LuckyStar
ตอบความคิดเห็นที่ : 6 เขียนโดย : LuckyStar เมื่อวันที่ 2011-11-11 16:16:43
รายละเอียดของการตอบ ::
ลองเขียนตามให้มาดังนี้
<html>
<head>
<title>ThaiCreate.Com PHP & SQL Server Tutorial</title>
</head>
<body>
<?
$objConnect = mssql_connect("192.168.1.3\SQL2005","sa","sa191") or die("Error Connect to Database");
$objDB = mssql_select_db("SRI_Golive");
$objQuery = mssql_query("SELECT t0.createdate,t0.createTime,t1.block FROM oscl as t0 inner join oins as t1 on t0.insid = t1.insid WHERE (t0.createdate LIKE '%10%') ");
$num = mssql_num_rows($objQuery);
echo $num;
?>
<table width="600" border="1">
<tr>
<th width="91"> <div align="center">CreateDate</div></th>
<th width="98"> <div align="center">CreateTime </div></th>
<th width="98"> <div align="center">ที่อยู่ </div></th>
</tr>
<?
while($objResult = mssql_fetch_array($objQuery))
{
?>
<tr>
<td><div align="center"><?=$objResult["t0.createdate"];?></div></td>
<td><?=$objResult["t0.createTime"];?></td>
<td><?=$objResult["t1.block"];?></td>
</tr>
<?
}
?>
</table>
<?
mssql_close($objConnect);
?>
</body>
</html>
แสดงบนหน้าเวปดังนี้ครับ
Date :
2011-11-11 16:38:54
By :
งง
555+ สงสัยจาใช้ไม่ได้กะ mssql ม้าง
เปลี่ยนเป็นตัวนี้ละกัน
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> ใต้ <head> นะ
Date :
2011-11-11 17:10:57
By :
LuckyStar
sql server คุณใช้ collection อะไรครับ ถ้าจะใช้ภาษาไทย field type ต้องใช้ n ด้วยนะครับ เช่น nvarchar
Date :
2011-11-11 17:54:26
By :
ikikkok
ตอบความคิดเห็นที่ : 10 เขียนโดย : LuckyStar เมื่อวันที่ 2011-11-11 16:53:16
รายละเอียดของการตอบ ::
ขอคุณมากสำหรับทุกความช่วยเหลือ ตอนนี้แก้เรื่องภาษาได้แล้ว แต่พอย้อนกัลมาดู ตามที่คุณ LuckyStar บอกว่าเวลาแสดงไม่ต้องใส่ชื่อ table นำหน้า แต่มันเกิดปัญหาขึ้นที่ว่า ผมจะต้องแสดงฟิลที่มีชื่อเดียวกัน แต่ต่าง table มันต้องทำไงครับ
Query
"SELECT T0.createDate, T0.createTime, T0.[custmrName], T1.[street], T1.[block], T0.[subject], T0.[itemCode], T0.[internalSN], T0.[manufSN], T0.[closeTime], T0.[closeDate], T4.[Name], T3.[Name], T2.[firstName] FROM OSCL T0 INNER JOIN OINS T1 ON T0.insID = T1.insID INNER JOIN OHEM T2 ON T0.technician = T2.empID INNER JOIN OSCT T3 ON T0.callType = T3.callTypeID INNER JOIN OSCS T4 ON T0.status = T4.statusID WHERE (T0.createDate LIKE '%".$_GET["txtKeyword"]."%') AND T2.empID = T0.technician AND T0.callType = T3.callTypeID AND T4.statusID = T0.status "
ตรง T4.[Name], T3.[Name] ต้องทำไงดีครับ
Date :
2011-11-12 21:27:28
By :
งง
วิธีที่ผมใช้นะ คือ เรียกข้อมูลออกมาทั้งสองตารางก่อนเลย
พอออกมาทั้งหมดแล้ว ผมก็สร้างตัวแปรมาเก็บค่า id ของตาราง B แล้วเอาตัวแปร id นั้น ไปทำการเรียกข้อมูลตาราง B อีกครั้งหนึ่ง แล้วก็สร้างตัวแปรที่ไม่เหมือนกับตัวแรก เพื่อทำการ fetch_array แล้วก็ echo ค่ามันออกมา เอาเฉพาะค่าที่ต้องการน่ะ
อาจยุ่งยากไปนิด แต่ก็ได้ผลนะ
เพราะฉะนั้นเวลาสร้างตารางก็ต้องดูพวกชื่อฟิลด์อะไรพวกนี้ให้ดีก่อนนะ
Date :
2011-11-14 11:17:47
By :
ozma
ตอบความคิดเห็นที่ : 18 เขียนโดย : LuckyStar เมื่อวันที่ 2011-11-14 13:06:30
รายละเอียดของการตอบ ::
ลองใส่แล้วมัน ไม่แสดงข้อมูลเลย
SELECT T0.createDate, T0.createTime, T0.[custmrName], T1.[street], T1.[block], T0.[subject], T0.[itemCode], T0.[internalSN], T0.[manufSN], T0.[closeTime], T0.[closeDate], T4.[Name] as name0, T3.[Name] as name1, T2.[firstName] FROM OSCL T0 INNER JOIN OINS T1 ON T0.insID = T1.insID INNER JOIN OHEM T2 ON T0.technician = T2.empID INNER JOIN OSCT T3 ON T0.callType = T3.callTypeID INNER JOIN OSCS T4 ON T0.status = T4.statusID WHERE (T0.createDate LIKE '%".$_GET["txtKeyword"]."%') AND T2.empID = T0.technician AND T0.callType = T3.callTypeID AND T4.statusID = T0.status
Date :
2011-11-14 16:00:19
By :
karurub
ไม่ต้องมี [] T4.Name as name0, T3.Name as name1 เวลาเรียกใช้ก็ <?=$objResult["name0"];?>
Date :
2011-11-14 16:04:11
By :
LuckyStar
เอาโค๊ดมาดูเถอะครับ จะได้เลิกงมหาสาเหตุกันซะที
Date :
2011-11-14 16:11:54
By :
ikikkok
Load balance : Server 04