主題: 自己寫的自動播放相簿程式->為什麼隔一段時間就沒有作用了?? 作者: pan 於 七月 13, 2007, 10:41:46 上午 :-S這個問題真是讓我找了好久
我曾經在論壇裡請問大家該怎麼自己寫相簿播放程式 請看http://forum.lifetype.org.tw/index.php?topic=3650.0 公司的blog在http://blog.coa.gov.tw/index.php?blogId=4&op=Template&show=autoalbums 就在最近同事向我反應說相簿都不動了 所以我找來找去~突然發現!!相簿播放程式是沒問題的,可是~~ 當我把Templates改一個名,然後再把播放程式的檔名也換一個名字,然後重新上傳 就這樣兩個動作…它就又變正常了 所以,請問各位,為什麼會這樣呀? 是我們公司主機的問題嗎?但我傳別的檔案都不會這樣呀? 請大家幫幫我,謝謝大家 主題: Re: 自己寫的自動播放相簿程式->為什麼隔一段時間就沒有作用了?? 作者: markwu 於 七月 13, 2007, 11:07:24 上午 你如果沒辦法把你寫的程式放上來,讓我們重製你的問題,這樣實在很難猜。
Mark 主題: Re: 自己寫的自動播放相簿程式->為什麼隔一段時間就沒有作用了?? 作者: pan 於 七月 16, 2007, 10:33:16 上午 Mark謝謝你
我的程式結構如下 再麻煩大家了 一、autoablums.template {include file="$blogtemplate/header.template"} <div id="container"> {include_php file="autoalbums.php"} </div> {include file="$blogtemplate/footer.template"} 二、autoalbums.php(相片資料程式) <?php //--取得皆為第一層的主目錄 $selectOptions = ""; $strSQL = "select * from blog_gallery_albums where owner_id='".$_REQUEST['blogId']."' and parent_id='0' and show_album='1'"; $sql_result = mysql_query($strSQL); while ($row = mysql_fetch_array($sql_result)) { //echo $row["id"] . "<hr>"; $selectOptions = setSelectOptions($selectOptions, $row["id"], $row["name"]); $selectOptions = getDetailDocument($row["id"],' ',$selectOptions); } //--遞迴function function getDetailDocument($main_id,$underline,$selectOptions){ $strSQL = "select * from blog_gallery_albums t where t.parent_id='$main_id'"; $sql_result = mysql_query($strSQL); while ($row = mysql_fetch_array($sql_result)) { $id = $row["id"]; $temp = $underline . $row["name"]; //echo $temp . "<br>"; $selectOptions = setSelectOptions($selectOptions, $id ,$temp); //$underline .= '-'; $selectOptions = getDetailDocument($row["id"],$underline,$selectOptions); } return $selectOptions; } //--串連所有下拉選單內的資料夾 function setSelectOptions($opt, $value ,$name){ if ($_REQUEST['albums'] == $value) { $set = "selected"; }else{ $set = ""; } $selectOptions = $opt. "<option value='$value' $set>$name</option>"; return $selectOptions; } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>漂鳥相片欣賞</title> <script language="javascript"> function changeURL(){ var url; url = document.goForm.action + "&albums=" + document.goForm.albums.value; location.href = url; } </script> </head> <body> <form name='goForm' action='http://blog.coa.gov.tw/index.php?blogId=4&op=Template&show=autoalbums' method='post'> <table width="100%" border="0" cellpadding="1"> <?php echo "我們的相簿 :"."<select name='albums' onchange='changeURL()'>"; echo "<option value=''>-請選擇相簿-</option>"; echo $selectOptions; echo "</select>"; if ($_REQUEST['albums']) { //--選擇某相簿 //include('photo_auto.php'); //echo $_REQUEST['get_albums']."<hr>"; include('photo_auto.php'); loadDirectIMG($_REQUEST['blogId'],$_REQUEST['albums']); } ?> </table> </form> </body> </html> 三、photo_auto.php(播放程式) <?php //--取出圖片檔 function loadDirectIMG($owner_id, $album_id){ $Pstr = "select * from blog_gallery_resources where owner_id='$owner_id' and album_id='$album_id'"; //echo $Pstr."<hr>"; $Presult = mysql_query($Pstr); $x=0; while($Prow = mysql_fetch_array($Presult, MYSQL_ASSOC)) { $file_len = strlen($Prow['file_name']); $start_len = $file_len - 3; $get_file_name = substr($Prow['file_name'],$start_len,$file_len); $file_name = "gallery/4/".$Prow['owner_id']."-".$Prow['id'].".".$get_file_name; $dec_name = ($Prow["description"]<>'')? $Prow["description"]:'未命名'; $p_id[$x] = $Prow["id"]; $p_name[$x] = $file_name; $p_description[$x] = $dec_name; $x++; } ?> <script language="javascript1.3" type=text/javascript src="js/photo_auto.js"></script> <script language="javascript1.3"> <? $imgName = ""; $imgDesc = ""; for($i=0; $i<count($p_id); $i++){ if($i==0){ $imgName = $p_name[$i]; $imgDesc = $p_description[$i]; }else{ $imgName = $imgName . "," . $p_name[$i]; $imgDesc = $imgDesc . "," . $p_description[$i]; } } ?> var autoTime = 5000; //照片替換時間(1/1000秒) var transNum = 23; //預設轉換效果(0-23) var isReplay = 0; //是否重覆播放(1:是,0:否) var msgImg = "照片欣賞"; //最先開始的標題 //var imgName = ""; //圖片來源(圖片與圖片間以,隔開) var imgSrcStr = "<?=$imgName?>"; //圖片名稱(圖片與圖片間以,隔開) var imgNameStr = "<?=$imgDesc?>"; //預設動作回應名稱(也可換成圖片路徑) var msgImgStr = "自動播放,播放完畢,下一張,最後一張,上一張,第一張,暫停"; </script> <script>initImg(); //速度控制項</script> <script>setImg(); //效果控制項</script> <script>setAuto(); //播放控制項</script> <table border="0" align="center" cellpadding="0" cellspacing="0" bordercolor="#000000" style="border-collapse:collapse;"> <tr bgcolor="#66CC00"> <td height="41" align="left" valign="top" bgcolor="#ffffff"> <table border="0" cellspacing="0" cellpadding="0"> <tr> <td height="34"><a href="javascript:void(0);" onClick="setAuto();"><img src="imgs/album/auto.png" alt="自動播放" border="0"></a></td> <td><a href="javascript:void(0);" onClick="backImg();"><img src="imgs/album/back.png" alt="上一張" border="0"></a></td> <td><a href="javascript:void(0);" onClick="stopImg();"><img src="imgs/album/stop.png" alt="暫停" border="0"></a></td> <td><a href="javascript:void(0);" onClick="nextImg();"><img src="imgs/album/next.png" alt="下一張" border="0"></a></td> <td> <script>setSpeedOpt(); //速度控制項</script> <script>setTransOpt(); //效果控制項</script> <script>setReplayOpt(); //播放控制項</script></td> </tr> </table> </td> </tr> <tr bgcolor="#ffffff"> <td align="center"> <img src="<?=$p_name[0]?>" name="myImageZZ" STYLE="filter:revealtrans(duration=1)" onload="Javascript:resizeImage(this)" > </tr> <tr bgcolor="#66CC00"> <td align="center" bgcolor="#ffffff"><div id="myImageTitle"></div></td> </tr> </table> <? } ?> 主題: Re: 自己寫的自動播放相簿程式->為什麼隔一段時間就沒有作用了?? 作者: markwu 於 七月 17, 2007, 12:29:54 上午 以你的程式來看,應該不會有你說的相簿不能動的問題啊!因為你只是很單純的把照片取出來,然後組成 Javascript,最後秀在 sidebar 上。
因為你也不是透過 LifeType 來取的相簿的資訊,所以也不應該會有 Object Cache 的問題。 唯一可能會有的問題是, lifetype 會作 page cache。 你在相簿不能動的時候,有看到任何 javascript 錯誤嗎? Mark 主題: Re: 自己寫的自動播放相簿程式->為什麼隔一段時間就沒有作用了?? 作者: pan 於 七月 19, 2007, 08:19:17 上午 Mark
很謝謝你費心看我的程式 就你講的javascript的錯誤訊息 我確認就相簿播放這段javascript是沒有問題的 不過我的blog在一開始就有這個javascript的錯誤(橘色字部份) 但我覺得似乎不影響整個blog的運作 因為目前就只有我自己寫的這個功能不能運作而己 警告: 應該要有特性 (property) 的結束值但卻出現了「0px」。 分析特性「border」的值時發生錯誤。 中斷宣告。 原始檔: http://blog.coa.gov.tw/templates/3-column-liquid/style_default.css 行: 2 Mark我請教你,你說的page cache會有什麼情形嗎? 那我又應該去那裡找這個page cache呢? 先謝謝你了 :-) 主題: Re: 自己寫的自動播放相簿程式->為什麼隔一段時間就沒有作用了?? 作者: jase 於 七月 19, 2007, 10:09:44 上午 二、autoalbums.php(相片資料程式) <form name='goForm' action='http://blog.coa.gov.tw/index.php?blogId=4&op=Template&show=autoalbums' method='post'> 都是在 blogId=4 的部落格下的相簿 ? 三、photo_auto.php(播放程式) $file_name = "gallery/4/".$Prow['owner_id']."-".$Prow['id'].".".$get_file_name; 相簿路徑都在 gallery/4/ ? 主題: Re: 自己寫的自動播放相簿程式->為什麼隔一段時間就沒有作用了?? 作者: pan 於 七月 19, 2007, 02:45:40 下午 jase
你提的這兩個問題 我有確認一次 都是對的 請問你還有沒有覺得那些是我沒注意到的 謝謝你 主題: Re: 自己寫的自動播放相簿程式->為什麼隔一段時間就沒有作用了?? 作者: jase 於 七月 19, 2007, 11:05:21 下午 二、autoalbums.php(相片資料程式) if ($_REQUEST['albums']) { //--選擇某相簿 //include('photo_auto.php'); //echo $_REQUEST['get_albums']."<hr>"; include('photo_auto.php'); loadDirectIMG($_REQUEST['blogId'],$_REQUEST['albums']); } 三、photo_auto.php(播放程式) $Pstr = "select * from blog_gallery_resources where owner_id='$owner_id' and album_id='$album_id'"; 1. 我看頁面原始碼看不到 photo_auto.php 產生出來的 javascript, 要不要試試看改成 $Pstr = "select * from blog_gallery_resources where owner_id='".$owner_id."' and album_id='".$album_id."' "; 2. 看要不要把 photo_auto.js 也貼出來看看 3. 我也覺得應該不是 page cache 的關係,不過妳可以清看看 lifetype/tmp/ 下的檔案,再試試看.. 4. 要注意一下相簿跟相片的中文檔名或是檔案路徑抓不到檔案都會會造成 javascript error, 妳要在 double check 一下。 主題: Re: 自己寫的自動播放相簿程式->為什麼隔一段時間就沒有作用了?? 作者: markwu 於 七月 20, 2007, 02:36:08 上午 我會說是 page cache 的原因是因為他這一句話:
引用 當我把Templates改一個名,然後再把播放程式的檔名也換一個名字,然後重新上傳 就這樣兩個動作…它就又變正常了 超詭異的動作。 Mark 主題: Re: 自己寫的自動播放相簿程式->為什麼隔一段時間就沒有作用了?? 作者: jase 於 七月 20, 2007, 10:14:35 上午 我會說是 page cache 的原因是因為他這一句話: 引用 當我把Templates改一個名,然後再把播放程式的檔名也換一個名字,然後重新上傳 就這樣兩個動作…它就又變正常了 超詭異的動作。 Mark 依照現有資訊看起來,他還是有透過 lt 的架構到 autoablums.template。 不過不知道有沒有在 view 裡面做了什麼,所以可能還是有 page cache。 但是他主要的功能都還是 javascript,所以還是要看他用 php 抓資料庫的資料出來的訊息有沒有影響到 javascript。 主題: Re: 自己寫的自動播放相簿程式->為什麼隔一段時間就沒有作用了?? 作者: markwu 於 七月 20, 2007, 10:42:05 上午 我們少問了一個問題,什麼是『像簿不動了?』?是?
1. 照片連秀都沒有秀 2. 第一張照片有秀出來,沒有輪撥 3. 照片輪撥一次後,就沒有輪撥? Pan 你要不要把問題講清楚一點。 主題: Re: 自己寫的自動播放相簿程式->為什麼隔一段時間就沒有作用了?? 作者: pan 於 七月 20, 2007, 10:59:48 上午 很謝謝大家,不過公司的blog在換主機
呀~~我暫時沒辦法測試兩位講的這些方法了 我先說說我所謂"不動"的情況 不正常的話: 就是選擇下拉選單後,有去執行form,而且url的串接值也都在,且正確 例如:http://blog.coa.gov.tw/index.php?blogId=4&op=Template&show=autoalbums&albums=56 但是,我的下拉選單就是沒有定住,而且播放器也出不來了 如果是在正常狀態下: 當我選擇下拉選單時,就會送值(相簿的id)出去,我是用串值在url的方式送出 然後,正確執行的話,應該在下拉選單的文字就會出現我剛剛選擇的那一本相簿的名稱 並且播放器就會開始將秀出第一張照片,然後你就可以做上一張、下一張、自動播放這些動作 以上都是正常的運作 這就是我覺得奇怪的原因,為什麼url的值有送出去,但它就是不執行 另外,我真的很確定,當我把Templates改了檔名,再把播放程式的檔名也換檔名,然後重新上傳 就這樣兩個動作…它就又變正常了 真的請大家幫我想想辦法~~什麼方式我都要試試看 不過…居然在這個時候要換主機~~ X) |