【问题标题】:Javascript and PHP using For loop使用 For 循环的 Javascript 和 PHP
【发布时间】:2015-02-15 06:38:34
【问题描述】:

我有以下代码将输出如下折线图:

<script class="code" type="text/javascript">
$(document).ready(function(){

var line1=[['2008-08-12 ',14], ['2008-09-12 ',6.5], ['2008-10-12 ',5.7], ['2008-11-12 ',9], ['2008-12-12 ',8.2]];

 var plot1 = $.jqplot('chart1', [line1], {
    title:'Daily Sales',
    axes:{
        xaxis:{
            renderer:$.jqplot.DateAxisRenderer
        }
    },
    series:[{lineWidth:4, markerOptions:{style:'square'}}]
  });
});
</script>

上述代码的输出是正确的,但我想插入一个 PHP 循环来从 mysql 中选择数据并将其放入 insde var line1 作为数组

所以我创建了一个测试代码如下:

<script class="code" type="text/javascript">
$(document).ready(function(){


<?php


    $date = date('Y-m-d');
    for($i=1;$i<6;$i++){

    $newdate = strtotime ( '+1 month' , strtotime ( $date ) ) ;
    $newdate = date ( 'Y-m-j' , $newdate ); 
?>
    var line1=[['<?php echo $newdate; ?> ',<?php echo $i ?>]];

<?php
    $date = $newdate;
}
?>


  var plot1 = $.jqplot('chart1', [line1], {
    title:'Daily Sales',
    axes:{
        xaxis:{
            renderer:$.jqplot.DateAxisRenderer
        }
    },
    series:[{lineWidth:4, markerOptions:{style:'square'}}]
  });
});
</script>

这会输出最后一个值,即 2015-5-165 我想要的只是输出从 1 到 5 的所有结果,并且日期按每个递增2014 年 12 月 16 日至 2015 年 5 月 16 日。

我希望这是有道理的!谢谢你

【问题讨论】:

    标签: javascript php mysql loops for-loop


    【解决方案1】:

    你做错了。您不使用 PHP 将文本直接转储到 Javascript 代码块中。这是引入 javascsript 语法错误并杀死整个代码块的可靠方法。

    你构建一个原生 PHP 结构(数组、对象等),然后你 json_encode() 那个。

    例如

    <?php
    
    $results = get_data_from_db();
    $data = array();
    while($row = fetch_row_from_result($results)) {
       $data[] = array($row['foo'], $row['bar']);
    }
    
    ?>
    
    <script type="text/javascript">
        var data_from_db = <?php echo json_encode($data); ?>;
    </script>
    

    【讨论】:

    • 谢谢您,非常需要!
    【解决方案2】:

    将您的 PHP 块替换为“var line1=[['...”:

    <?php
        $date = date('Y-m-d');
        $js = "    var line1=[";
        for($i=1;$i<6;$i++) {
            $newdate = strtotime ( '+1 month' , strtotime ( $date ) ) ;
            $newdate = date ( 'Y-m-j' , $newdate );
            if($i>1) { $js.= ", "; }
            $js.= "['".$newdate." ',".$i."]";
            $date = $newdate;
        }
        $js.= "];";
        echo $js;
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-06
      • 2015-02-25
      • 1970-01-01
      相关资源
      最近更新 更多