如何在javascript函数中传递带有数据库值的php变量?

时间:2013-03-29 12:40:47

标签: php javascript codeigniter

我很难搞清楚如何做到这一点。我已经在网上进行了几次搜索并尝试了一些例子,但无法做到这一点。我正在使用codeigniter框架,我想将我的视图文件中的foreach循环中的数据库值传递给“类别”和“数据”部分中的javascript函数作为图形的参数而不是静态值。我如何能够将数据库值$row->Time_Period;$row->Data_Value;从我的视图文件正文传递到javascript函数部分“categories”和“data”?还是有其他方法来处理这个?有人可以帮我这个吗?非常感谢。以下是我的代码。

Javascript功能

<script type="text/javascript">
$(function () {
    $('#container').highcharts({

        chart: {
            type: 'column'
        },

        title: {
            text: 'RDI SYSTEM'
        },

        xAxis: {
            categories: ['2012','2013']
        },

        yAxis: {
            allowDecimals: false,
            min: 0,
            title: {
                text: 'Values'
            }
        },

        tooltip: {
            formatter: function() {
                return '<b>'+ this.x +'</b><br/>'+
                    this.series.name +': '+ this.y +'<br/>'+
                    'Total: '+ this.point.stackTotal;
            }
        },

        plotOptions: {
            column: {
                stacking: 'normal'
            }
        },

        series: [ {
            name: 'jun',
            data: [3000,2000],
            stack: 'male'
        }]
      });
    });


</script>

查看文件:

 <?php
  $submit=array('class'=>'btn','name'=>'submit','id'=>'submit','value'=>'Submit');
  $indicator=array('name'=>'indicator','id'=>'indicator','value'=>'','placeholder'=>'Indicator Name');
  $description=array('name'=>'description','id'=>'description','value'=>'','placeholder'=>'Description');
  ?>
  <?php
  $subsector_dropdown=array('0'=>'Select Sub-Sector');
  $classes_dropdown=array('0'=>'Select Class');
  $indicator_dropdown=array('0'=>'Select Indicator');
  ?>
<div class="hero-unit">
  <div class="row-fluid">

  <div class="span2"> <label><strong><h3>No.Of Rows:</h3></strong></label></div>
  <div id="numrows" class="span1">
  <h3 class="numrows"><strong><?php echo $total_rows; ?></strong></h3>
  </div>
  <div class="span7"> <h1><?php echo "List of Infrastructure Data"; ?></h1></div>

  </div>
<div class="row-fluid">
  <div class="span3"><i class="icon-plus"></i>&nbsp;<a href='<?php echo site_url('rdi_controller/insert_infra')?>'><strong>Add Infrastructure Data</strong></a></div>
 <?php
  $indicator_dropdown=array('0'=>'Select Indicators');
  $year_dropdown=array('0'=>'Select Years','1'=>'Select All');
  ?>

  <div class="span4">
      <h2> <?php echo form_open('rdi_controller/infra');?>

       <div class="input-append">
        <?php echo form_dropdown("area_name",$area_name_dropdown,'','id="area_id" style="width:50%;height:130%"'); ?>&nbsp;&nbsp;
        <?php echo form_dropdown("indicator",$indicator_dropdown,'','id="indicator_id" style="width:50%;height:130%"'); ?>&nbsp;&nbsp;
        <?php echo form_dropdown("year",$year_dropdown,'','id="year_id" style="width:30%;height:130%"'); ?>&nbsp;&nbsp;
        <input type="submit" class="btn btn-primary btn-medium" id="submit" name="search" value="Search"><button class="btn btn-primary btn-xlarge" type="button" id="displayAll" onclick="reload()">Display All</button>
        </div>



       <?php echo form_close();?> </h2>
<table class="table table-stripe">
        <tr>
        <td><a href='<?php echo site_url('rdi_controller/Infra_export_to_pdf')?>'> <img src="<?php echo base_url('img/pdf.png'); ?> " width="35" height="35" title="Export to PDF File"/></a><a href='<?php echo site_url('rdi_controller/Infra_export_to_Excel')?>'> <img src="<?php echo base_url('img/spreadsheet.png'); ?>" width="35" height="35" title="Export to Excel File" class="excel"/> </a></td>

        </tr>

      </table>
  </br>

   <table id="tablesorter-demo" class="tablesorter">
   <thead>
   <tr>
      <th><strong>Select</strong></th>
      <th><strong>Sector</strong></th>
      <th><strong>Subsector</strong></th>
      <th><strong>Class</strong></th>
      <th><strong>Indicator</strong></th>
      <th><strong>Data Value</strong></th>
      <th><strong>Unit</strong></th>
      <th><strong>Time Period</strong></th>
      <th><strong>Area Name</strong></th>
      </tr>
   </thead>
<?php foreach($infra as $row){?>

      <tr>
      <td><input type='checkbox' id='chk' name='infra_id[]'  value="<?php echo $row->fusion_id;?>" ></td>
      <td> <?php echo anchor("rdi_controller/infra_update_form/$row->infra_id/",$row->Sector); ?></td>
      <td><?php echo $row->Subsector ;?></td>
      <td><?php echo $row->Classes ;?></td>
      <td><?php echo $row->Indicator ;?></td>
      <td><?php echo $row->Data_Value ;?></td>
      <td><?php echo $row->Unit ;?></td>
      <td><?php echo $row->Time_Period ;?></td>
      <td><?php echo $row->Area_Name ;?></td>

      </tr>
  <?php }?>
  </table>
   <div class='row'>
      <div class='span2 '><strong>Total Rows</strong> </div>
      <div class='span1 ' colspan=6><strong><?php echo $total_rows; ?></strong></div>
  </div>

输出:

enter image description here

3 个答案:

答案 0 :(得分:1)

这就是我如何访问php变量,包括javascript函数中包含数据库值的数组变量。我还使用了implode函数来用逗号字符分隔数组值。这是我的代码

<?php



 $arrVal=implode(",",$infra_data_values);
 $arrYears=implode(",",$infra_time_period);
 $arrIndicator=implode(" and ",$infra_indicator);


?>
  <?php echo '<script type="text/javascript">


  $(function () {

    $(\'#container\').highcharts({

        chart: {
            type: \'column\'
        },

        title: {
            text:[\''.$arrIndicator.'\']
        },

        xAxis: {
            categories: ['. $arrYears . ']
        },

        yAxis: {
            allowDecimals: false,
            min: 0,
            title: {
                text: \'Values\'
            }
        },

        tooltip: {
            formatter: function() {
                return \'<b>\'+ this.x +\'</b><br/>\'+
                    this.series.name +\': \'+ this.y +\'<br/>\'+
                    \'Total: \'+ this.point.stackTotal;
            }
        },

        plotOptions: {
            column: {
                stacking: \'normal\'
            }
        },

        series: [ {
            name: \''.$arrIndicator.'\',
            data: ['. $arrVal . '],
            stack: \'male\'
        }]
    });

});

</script>'; ?>

将javascript函数包装在echo语句中,然后在js函数内的每个语句中的引号前面放回斜杠。

答案 1 :(得分:0)

为什么不使用以下方法?

<script type="text/javascript">
var foo = "<?php echo $db['some_var']; ?>";
</script>

答案 2 :(得分:-1)

我知道最简单的方法是将逗号分隔值存储在PHP变量中,然后在JavaScript中回显这些变量。这意味着您将不得不遍历用于设置这些值的任何数据库查询结果。一旦设置了这些PHP变量,就这样做:

xAxis: {
    categories: [<?php echo $categoriesData; ?>]
},

series: [ {
    name: 'jun',
    data: [<?php echo $dataData; ?>],
    stack: 'male'
}]