Thu 28 Feb 2008 18:18:48
สอบถามเรื่อง php + oracle ครับ ข้างล่างเป็นโค้ดที่ใช้ติดต่อดาต้าเบส oracle ครับ
$sqlstr = " select * from hot_db te where te.event_status='A' order by te.event_stamptime desc ";
$conn = OCILogon($utraffice,$ptraffice,$db);
$stmt= OCIParse($conn, $sqlstr);
OCIExecute($stmt); //
$i=0;
while( (OCIFetch($stmt)) && ($i<5)){
$e_header = OCIResult($stmt,"HEADER");
$e_detail = OCIResult($stmt,"DETAIL");
$e_picname = OCIResult($stmt,"PICNAME");
if($e_picname =='') { $e_picname='nophoto.gif'; }
$e_detail1 = substr($e_detail,0,50)."..."; // ตัดคำ
if ($i % 3 == 0){
echo "<table width=100% border=0 cellspacing=0 cellpadding=0>";
$event_txt.= '<tr " width="20%" >'.
'<td width="20%"><img src="backoffice/event/picnews/'.$e_picname.'" width="50" height="50" align="center"></td>'.
'<td width="80%" ><font face="Ms Sans Serif" size="1"><strong>'.$e_header.' </strong>'.$e_detail1.'</font> </td></tr>';
}
$i++;
echo "</table>";
}
จากโค้ดด้านบน เป็นการดึงข้อมูลจากดาต้าเบสมาโชว์ปกติ ผมเลยใส่ if ($i % 3 == 0){ data } $i++ เพื่อให้มันโชว์ข้อมูลเป็นแบบ Gallery จะทำเหมือนเว็บ sanook ตรง ข่าว นะครับ
ปัญหาคือ ข้อมูลมันโชว์ครับ แต่มันโชว์แบบนี้ครับ
ข่าว 1
ข่าว 4
ข่าว 7
แทนที่มันจะโชว์แบบนี้ครับ
ข่าว 1 ข่าว 2 ข่าว 3
ข่าว 4 ข่าว 5 ข่าว 6
ข่าว 7 ข่าว 8 ข่าว 9
ผมลองเอาโค้ด if ($i % 3 == 0){ data } $i++ ไปใช้กับ php+mysql
ใช้ได้ปกติเลย ไม่มีปัญหาอะไร อยากทราบว่าเป็นเพราะอะไรครับ หรือว่าผมใส่พวก <table> </table> ไม่ถูกต้อง ยังไง รบกวนด้วยนะครับ เพราผมไม่ถนัด oracle เลย
อ้อ ส่วนการแสดงผลของโค้ดด้านบนนี้โชว์ในหน้า index.html {EVENT_NEWS} โดย โค้ดในการดึงไฟล์ index.html เป็นแบบนี้
$tpl->define( array(
head => "head.html",
left=>"left.html",
bottom=>"bottom.html",
body=>"index.html",
main=>"tm.html"
)
);
ใช้ระบบ tamplate engine ซึ่งผมไม่ค่อยถนัดเลยครับ รบกวนให้ความกระจ่างด้วยนะครับ
Thu 28 Feb 2008 21:07:52
echo "<table width=100% border=0 cellspacing=0 cellpadding=0>";
$event_txt.= '<tr " width="20%" >'.
'<td width="20%"><img src="backoffice/event/picnews/'.$e_picname.'" width="50" height="50" align="center"></td>'.
'<td width="80%" ><font face="Ms Sans Serif" size="1"><strong>'.$e_header.' </strong>'.$e_detail1.'</font> </td></tr>';
}
$i++;
จากโค๊ดนี้ จะเห็นว่าแสดงผลเมื่อตัวแปร $i%3 ไม่มีเศษเท่านั้น ดังนั้นจึงมีการข้ามไป 3 record ครับ จริงๆแล้วไม่เกี่ยวข้องกับ database engine เลยครับ
ส่วน template นั้นผมไม่ทราบว่าผู้เขียน class นี้มีการสร้างไว้อย่างไร จึงไม่สามารถให้คำแนะนำได้ครับ

















