GORAGOD.com

freelance, web developer, web designer, hosting, domain name

บทความตั้งเวลาวนไปทุกๆ 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);


}

29 พ.ค. 2554 12 32,768

เออ ไหนล่ะ ฟังก์ชั่น area10()



หลักๆคือ ต้องเรียก readArticle ทุก 10 วินาทีละครับ โดยนับ id_ar ไปเรื่อยๆ ด้วย setInterval นั่นแหละครับ



ลองอ่าน auto refresh บนเว็บดูครับ
#1


<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">&nbsp;


<?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);


}



รบกวนช่วยดูด้วยนะคะ ขอบคุณค่ะ


#2

ดูเผินๆก็ปกติดีนะ....



ลองทดสอบแบบนี้ดูนะครับ คือเรียกไปยังไฟล์ dbArticleupdate.php ตรงๆดูว่าได้ข้อมูลที่ต้องการมั้ย ถ้าไม่ได้ให้ทำให้ได้ก่อน



ถ้าได้ อาจเป็นไปได้ว่า Ajax หาไฟล์ ไม่เจอ ลองตรวจสอบ path ให้ถูก หรือ ระบุ URL แบบเต็มๆ



req.open("GET","http:/xxx.com/dbArticleupdate.php?article_id="+id_ar+"&"+str,true);



ถ้าใส่ setIntrerval ไม่ควรใส่ลงใน event เนื่องจากมันจะเกิดการเรียกซ้ำซ้อนได้ อาจทำให้ connection มากไป



ลองใช้ FireFox ติดตั้ง FireBug เพื่อหาข้อผิดพลาดดู
#3

ลองเปลี่ยนตามที่คุณgoragodบอกแล้วน่ะค่ะ มันยังไม่ขึ้นอยู่ดี เหมือนเวลาเราเอา onmouseover="readArticle10(<?=$article_id?>)" แล้วมันไม่ยอมเรียกที่ dbArticleupdate.php มาขึ้นเลยค่ะ

ช่วยดูโค้ดให้หน่อยค่ะ เผื่อพี่จะมีคำแนะนำเพิ่มเติม ขอบคุณค่ะ

แต่ถ้าเอา 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>


 

#4

ไม่ค่อยเข้าใจเท่าไร ไม่รู้ว่าปัญหาเกิดจากอะไร เนื่องจากไม่ได้แยกการตรวจสอบที่ชัดเจนออกมา



จากคำตอบ น่าจะหมายความว่า readArticle10() น่าจะทำงานได้ และถ้าข้อมูลที่ได้มาถูต้อง ก็แสดงว่าไฟล์ PHP ก็ต้องถูกด้วย



ถ้าใช่ ข้อผิดพลาดก็จะอยู่ที่ onmouseover ให้ตรวจสอบดูว่า มีการทำงานเข้ามาที่ส่วนนี้หรือเปล่า วิธีการง่ายๆในการตรวจคือ ลอง alert() ใน event นี้ดู ถ้าทำงานได้ แสดงว่า event ปกติ ถ้าไม่ ลองใช้ onmousemove แทนดู



จริงๆแล้ว ถ้าทั้งหมดที่พูดถึงถูกต้อง มันก็ควรทำงานแล้ว ผมไม่สามารถแนะนำได้มากกว่านี้เพราะข้อมูลที่ให้มามีเท่านี้ ลองดูนะครับ....



ปล. จริงๆแล้ว ผมไม่เข้าใจว่าทำไมต้องใส่ setInterval ด้วยถ้าฟังก์ชั่นผูกกับ event เพราะมันจะทำให้เกิด connection ซ้ำซ้อนได้
#5

จริงๆแล้ว คือแค่ต้องการให้บทความมันวนไปเรื่อยๆน่ะค่ะ แต่ยังไม่เข้าใจหลักการจริงๆมันควรทำแบบไหนค่ะ

ขอบคุณมากสำหรับความรู้นะคะ
#6





คือตอนนำเมาส์ไปชี้มันขึ้นภาพและข้อมูลค่ะ แต่พอมันรันเอง มันขึ้น

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) ;




#7

อ้างอิงจาก ความคิดเห็น #7Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource inC:\AppServ\www\manager\dbArticleupdate.php on line 26


ขึ้นแบบนี้หมายถึง คำสั่ง SQL ผิดนะครับ
#8

ถ้าเราจะส่งค่าparameter ของ article_id ในฟังก์ชั่น readArticle10 ด้วย ต้องเขียนสคริปแทรกอย่างไรคะ
#9

จากโค้ดที่ทำอยู่ ก็ถูกต้องแล้วนะครับ ถ้ารับค่าไม่ได้อาจเป็นเพราะ รับค่าผิดนะครับ



ถ้าส่งด้วย GET ต้องรับที่ PHP ด้วย $_GET

ถ้าส่งด้วย POST ต้องรับที่ PHP ด้วย $_POST



รายละเอียดต่างๆ สามารถหาอ่านตามบทความบนเว็บนี้เพื่อเสริมความเข้าใจได้นะครับ





#10

มึนมากเลยค่ะ แก้ไม่ได้สักที อยากทำข่าวแบบเว็บสนุกน่ะค่ะ ที่มันเลื่อนอัตโมัติ แต่ไม่คิดว่าจะยากขนาดนี้

ขอบคุณมากนะคะสำหรับคำแนะนำ 
#11

ลองดู GRSSTab ของ GCMS ดูครับ ตัวอย่างก็ gcms.goragod.com 



ปล. มันไม่ยากหรอกครับ แค่ไม่เข้าใจมันแค่นั้นเอง ถ้าอยากให้ง่ายขึ้น แนะนำให้เริ่มตั้งแต่พื้นฐาน เช่น Ajax รับส่งข้อมูลอย่างไร มีวิธีอย่างไรเป็นต้น ซึ่งถ้าเข้าใจพื้นฐานเป็นอย่างดี อีกหน่อยต่ออยากเขียนให้ผิดยังทำไม่ได้เลยครับ...

#12
ความคิดเห็น
ไฟล์อัปโหลด ชนิด jpg, jpeg ขนาดไฟล์ไม่เกิน 2M
^