บทความตั้งเวลาวนไปทุกๆ 5 วิ
จะทำให้บทความตั้งเวลาวนไปทุกๆ 5 วิค่ะ
คือเวลาที่เมาม์ไปที่รูปเล็กใช้ functiom readArticle10 เพื่อจะให้ขึ้นรูปใหญ่ที่ area10 ค่ะ
แล้วการให้บทความมันวนน่ะค่ะ
var time = window.setInterval ( "area10()", 5000 );
ใช้ฟังก์ชั่นนี้รึได้ป่าวคะ ช่วยดูโค้ดด้วยค่ะ
function statechange10()
{
if((req.readyState==4)&&(req.status==200))
{
var x = document.getElementById("area10");
x.innerHTML=req.responseText;
}
else
function statechange10 ()
{
var x = document.getElementById("area10").style.backgroundColor="#000000";
x.innerHTML= "Please Wait...";
}
var time = window.setInterval ( "area10()", 5000 );
}
function readArticle10(id_ar)
{
checkbrowser();
req.onreadystatechange = statechange10;
var str= "var="+Math.random();
req.open("GET","dbArticleupdate.php?article_id="+id_ar+"&"+str,true);
req.send(null);
}
หลักๆคือ ต้องเรียก readArticle ทุก 10 วินาทีละครับ โดยนับ id_ar ไปเรื่อยๆ ด้วย setInterval นั่นแหละครับ
ลองอ่าน auto refresh บนเว็บดูครับ
<div id="area10" style=" padding:5px; background-color: #ffffff" >
<?php
include "startconnect.inc.php" ;
//echo "Article ID = " . $article_id . "<br>" ;
$sql_read_article = "select article_id,article_title,article_predetail,article_pic_title " ;
$sql_read_article .= "from tblarticle " ;
//$sql_read_article .= "where article_type_id = 7 " ;
$sql_read_article .= "order by article_id DESC LIMIT 0,1" ;
//echo $sql_latest_article ;
$record_read_article = mysql_query($sql_read_article) ;
$field_read_article = mysql_fetch_array($record_read_article) ;
$article_id = $field_read_article["article_id"] ;
$article_title = $field_read_article["article_title"] ;
$article_predetail = $field_read_article["article_predetail"] ;
$article_predetail = utf8_substr($article_predetail, 0, 400) ;
$article_detail = iconv_substr($article_detail, 0, 400,"UTF-8") ;
$article_detail = iconv('TIS-620','UTF-8',wordwrap(nl2br(iconv('UTF-8','TIS-620',$article_detail)), 400, "\n", TRUE));
//$article_pic_title = "picture/article/".$field_read_article["article_pic_title"] ;
$article_pic_title= "picture/article/".$field_read_article["article_pic_title"];
?>
<div>
<table border="0" >
<tr>
<td align="left" style="font-weight:bold"><!-- รูปด้านซ้าย -->
<a href="view_article.php?article_id=<?=$article_id?>" target="_blank">
<img src="<?=$article_pic_title?>" width="250" height="200" alt="<?=$article_id?>" /></a>
</td>
<td valign="top">
<table>
<tr><td><a href="view_article.php?article_id=<?=$article_id?>" target="_blank"><?=$article_title?></a></td></tr><!-- หัวข้อ-->
<tr style="line-height: 18px;"><!-- detail -->
<td>
<?=$article_predetail?>
</td>
</tr>
<br>
<tr align="right" style="padding-bottom:5px;"><!--read -->
<td><a href="view_article.php?article_id=<?=$article_id?>"
class="linkmsg" target="_blank" style="text-align:right">Read more...</a></td></tr>
</table>
</td>
</tr>
</table>
</div>
</div>
</td>
<tr>
<td>
<br>
<table width="570" cellpadding="0" cellspacing="0" border ="0"> <!-- เริ่มต้น กลุ่มบทความย่อย -->
<tr valign="top">
<td style="padding-top: 5px; background: #f5f5f5" align="center" valign="middle">
<?php
include "startconnect.inc.php" ;
$sql_latest_article = "select article_id,article_title,article_predetail,article_pic_title " ;
$sql_latest_article .= "from tblarticle " ;
//$sql_latest_article .= "where article_type_id = 7 " ;
$sql_latest_article .= "order by article_id DESC LIMIT 0,8 " ;
//echo $sql_latest_article ;
$record_latest_article = mysql_query($sql_latest_article) ;
while ($field_latest_article = mysql_fetch_array($record_latest_article)) {
$article_id = $field_latest_article["article_id"] ;
$article_title = $field_latest_article["article_title"] ;
$article_predetail = $field_latest_article["article_predetail"] ;
$article_predetail = utf8_substr($article_predetail, 0, 400) ;
$article_pic_title = $field_latest_article["article_pic_title"] ;
?>
<a href="view_article.php?article_id=<?=$article_id?>">
<img src="picture/article/<?=$article_pic_title?>"
onmouseover="readArticle10(<?=$article_id?>)"
width="50" height="50" border ="0" style="cursor: pointer; padding: 2px; background: #f5f5f5" alt="<?=$article_id?>" /></a>
<? } ?>
นี่คือโค้ด php น่ะค่ะ
ลองเปลี่ยนajax แบบนี้ พอเวลาmouseover มันไม่แสดงข้อมูลที่ดึงมาจาก database เลยค่ะ
function statechange10()
{
if((req.readyState==4)&&(req.status==200))
{
var x = document.getElementById("area10");
x.innerHTML=req.responseText;
}
else
function statechange10 ()
{
var x = document.getElementById("area10")
x.innerHTML= "Please Wait...";
}
}
function readArticle10(id_ar)
{
checkbrowser();
req.onreadystatechange = statechange10;
var id_ar = window.setInterval ( "readArticle10()", 1000 );
var str= "var="+Math.random();
req.open("GET","dbArticleupdate.php?article_id="+id_ar+"&"+str,true);
req.send(null);
}
รบกวนช่วยดูด้วยนะคะ ขอบคุณค่ะ
ลองทดสอบแบบนี้ดูนะครับ คือเรียกไปยังไฟล์ dbArticleupdate.php ตรงๆดูว่าได้ข้อมูลที่ต้องการมั้ย ถ้าไม่ได้ให้ทำให้ได้ก่อน
ถ้าได้ อาจเป็นไปได้ว่า Ajax หาไฟล์ ไม่เจอ ลองตรวจสอบ path ให้ถูก หรือ ระบุ URL แบบเต็มๆ
req.open("GET","http:/xxx.com/dbArticleupdate.php?article_id="+id_ar+"&"+str,true);
ถ้าใส่ setIntrerval ไม่ควรใส่ลงใน event เนื่องจากมันจะเกิดการเรียกซ้ำซ้อนได้ อาจทำให้ connection มากไป
ลองใช้ FireFox ติดตั้ง FireBug เพื่อหาข้อผิดพลาดดู
ช่วยดูโค้ดให้หน่อยค่ะ เผื่อพี่จะมีคำแนะนำเพิ่มเติม ขอบคุณค่ะ
แต่ถ้าเอา var id_ar = window.setInterval ( "readArticle10()", 5000 ); ออก ก้อรันได้ปกติค่ะ เรียกไฟล์มาแสดงปกติ
ไฟล์ dbAriticleupdate.php
<?php
session_start() ;
function utf8_substr($str,$start_p,$len_p) {
preg_match_all("/./u", $str, $ar);
if(func_num_args() >= 3) {
$end = func_get_arg(2);
return join("",array_slice($ar[0],$start_p,$len_p));
} else {
return join("",array_slice($ar[0],$start_p));
}
}
include "startconnect.inc.php" ;
$article_id = $_GET["article_id"] ;
//$str = $_GET["str"] ;
//$id_ar = $_GET["id_ar"] ;
//$article_id = 1 ;
//echo "Article ID = " . $article_id . "<br>" ;
$sql_read_article = "select article_id,article_title,article_predetail,article_pic_title " ;
$sql_read_article .= "from tblarticle " ;
$sql_read_article .= "where article_id = $article_id " ;
//echo $sql_latest_article ;
$record_read_article = mysql_query($sql_read_article) ;
$field_read_article = mysql_fetch_array($record_read_article) ;
$article_id = $field_read_article["article_id"] ;
$article_title = $field_read_article["article_title"] ;
$article_predetail = $field_read_article["article_predetail"] ;
$article_predetail = utf8_substr($article_predetail, 0, 400) ;
$article_detail = iconv_substr($article_detail, 0, 400,"UTF-8") ;
$article_detail = iconv('TIS-620','UTF-8',wordwrap(nl2br(iconv('UTF-8','TIS-620',$article_detail)), 400, "\n", TRUE));
$article_pic_title = "picture/article/".$field_read_article["article_pic_title"] ;
?>
<div>
<table border="0" >
<tr>
<td align="left" style="font-weight:bold"><!-- รูปด้านซ้าย -->
<img src="<?=$article_pic_title?>" width="250" height="200" alt="<?=$article_id?>" />
</td>
<td valign="top">
<table>
<tr><td><a href="view_article.php?article_id=<?=$article_id?>" target="_blank"><?=$article_title?></a></td></tr><!-- หัวข้อ-->
<tr style="line-height: 18px;"><!-- detail -->
<td>
<?=$article_predetail?>
</td></tr>
<br>
<tr align="right" style="padding-top:2px;"><!--read -->
<td><a href="view_article.php?article_id=<?=$article_id?>"
class="linkmsg" target="_blank">Read more...</a></td></tr>
</table>
</td>
</tr>
</table>
</div>
จากคำตอบ น่าจะหมายความว่า readArticle10() น่าจะทำงานได้ และถ้าข้อมูลที่ได้มาถูต้อง ก็แสดงว่าไฟล์ PHP ก็ต้องถูกด้วย
ถ้าใช่ ข้อผิดพลาดก็จะอยู่ที่ onmouseover ให้ตรวจสอบดูว่า มีการทำงานเข้ามาที่ส่วนนี้หรือเปล่า วิธีการง่ายๆในการตรวจคือ ลอง alert() ใน event นี้ดู ถ้าทำงานได้ แสดงว่า event ปกติ ถ้าไม่ ลองใช้ onmousemove แทนดู
จริงๆแล้ว ถ้าทั้งหมดที่พูดถึงถูกต้อง มันก็ควรทำงานแล้ว ผมไม่สามารถแนะนำได้มากกว่านี้เพราะข้อมูลที่ให้มามีเท่านี้ ลองดูนะครับ....
ปล. จริงๆแล้ว ผมไม่เข้าใจว่าทำไมต้องใส่ setInterval ด้วยถ้าฟังก์ชั่นผูกกับ event เพราะมันจะทำให้เกิด connection ซ้ำซ้อนได้
ขอบคุณมากสำหรับความรู้นะคะ
คือตอนนำเมาส์ไปชี้มันขึ้นภาพและข้อมูลค่ะ แต่พอมันรันเอง มันขึ้น
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource inC:\AppServ\www\manager\dbArticleupdate.php on line 26
คือบรรทัด
$field_read_article = mysql_fetch_array($record_read_article) ;
ขึ้นแบบนี้หมายถึง คำสั่ง SQL ผิดนะครับ
ถ้าส่งด้วย GET ต้องรับที่ PHP ด้วย $_GET
ถ้าส่งด้วย POST ต้องรับที่ PHP ด้วย $_POST
รายละเอียดต่างๆ สามารถหาอ่านตามบทความบนเว็บนี้เพื่อเสริมความเข้าใจได้นะครับ
ขอบคุณมากนะคะสำหรับคำแนะนำ
ปล. มันไม่ยากหรอกครับ แค่ไม่เข้าใจมันแค่นั้นเอง ถ้าอยากให้ง่ายขึ้น แนะนำให้เริ่มตั้งแต่พื้นฐาน เช่น Ajax รับส่งข้อมูลอย่างไร มีวิธีอย่างไรเป็นต้น ซึ่งถ้าเข้าใจพื้นฐานเป็นอย่างดี อีกหน่อยต่ออยากเขียนให้ผิดยังทำไม่ได้เลยครับ...