我很难搞清楚如何做到这一点。我已经在网上进行了几次搜索并尝试了一些例子,但无法做到这一点。我正在使用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> <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%"'); ?>
<?php echo form_dropdown("indicator",$indicator_dropdown,'','id="indicator_id" style="width:50%;height:130%"'); ?>
<?php echo form_dropdown("year",$year_dropdown,'','id="year_id" style="width:30%;height:130%"'); ?>
<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>
输出:
答案 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'
}]