A-AA+then

บทความตั้งเวลาวนไปทุกๆ 5 วิ

1,562
    จะทำให้บทความตั้งเวลาวนไปทุกๆ 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);
    }

12 ความคิดเห็น

เออ ไหนล่ะ ฟังก์ชั่น 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
^