在循环中显示php内的js

时间:2010-06-26 04:25:50

标签: php mysql javascript

我在http://www.dynamicdrive.com/dynamicindex6/dhtmlcount.htm

中找到了倒计时脚本

如果我只定义日期但是当我尝试将日期从这个php / mysql查询传递到js文件时,它工作正常,它只适用于第一条记录而不是之后。

<script type="text/javascript" src ="time.js"></script>//this is the script from the above link. this directly gets todays date inside this code

<?php
$result = mysql_query("SELECT * FROM my_table LIMIT 10") or die(mysql_error());
while($row = mysql_fetch_array( $result )) {
$id = $row['id'];
$title = $row['title'];
$date = date("F d, Y", strtotime($row['date']));

 echo '<tr><td>';
 echo $title;
 echo "</td><td>";
 echo $id;
 echo "</td><td>";
 echo $date; //display the date directly from the table as June 25, 2010
 echo "</td><td>";
 ?>
    <!-- this js code and the div is to show the countdown from today like 3D 2H 5M 45-->
 <div id="container"></div>
 <script type="text/javascript">
  var futuredate=new cdtime("container", "<?php echo $date ;?>")
  futuredate.displaycountdown("days", formatresults)
 </script>
 <?php

 echo "</td></tr>"; 
 }

} 
?>

我尝试使用echo将js代码包装为php,但它不显示任何内容(甚至不是第一条记录的输出)。上面的代码清楚地做了它必须做的事情因为我关闭了php并打开了js所以这就是为什么它不循环。但我猜应该离开。

请帮帮我。

1 个答案:

答案 0 :(得分:2)

你的每个div都需要有一个唯一的id。你也会遇到问题,因为你一遍又一遍地重新定义未来。

像下面这样的东西应该有效,因为每个div都有自己的id,(container1,container2,container3等),你正在为每个cdtime实例创建一个不同名称的新变量(futuredate1,futuredate2,futuredate3,等等。)。这不一定是我最喜欢的方法,因为使用类似jQuery的.each()语法可能会更好(或者你选择的任何js框架)而不是定义一堆新变量。

我还没有测试过这段代码,但这应该可行:

<script type="text/javascript" src ="time.js"></script>//this is the script from the above link. this directly gets todays date inside this code

<?php
$result = mysql_query("SELECT * FROM my_table LIMIT 10") or die(mysql_error());
while($row = mysql_fetch_array( $result )) {
  $id = $row['id'];
  $title = $row['title'];
  $date = date("F d, Y", strtotime($row['date']));

  echo '<tr><td>';
  echo $title;
  echo "</td><td>";
  echo $id;
  echo "</td><td>";
  echo $date; //display the date directly from the table as June 25, 2010
  echo "</td><td>";
?>
    <!-- this js code and the div is to show the countdown from today like 3D 2H 5M 45-->
 <div id="container<?=$id?>"></div>
 <script type="text/javascript">
  var futuredate<?=$id?>=new cdtime("container<?=$id?>", "<?= $date?>")
  futuredate<?=$id?>.displaycountdown("days", formatresults)
 </script>
<?php

 echo "</td></tr>"; 
 }

} 
?>

关于jQuery的评论中的问题,你可以做类似的事情:

<script type="text/javascript" charset="utf-8">
    $(document).ready(function() {
        $('#container<?=$id?>').countdown({until: new Date(YYYY, MM, DD), format: 'D'});
    });
</script>

请注意,这是使用此plugin,但还有其他人,您需要将YYYY,MM,DD值替换为适当的值。