我正在学习并决定使用带有后端和前端的CodeIgniter应用程序进行学习,我遇到了以下疑问。 您是否希望从数据库中的表中获取所有数据并放入数组中,之后我想在第1列的值等于我确定的值时显示第2列中的数据。
为了更好地说明我将举例说明的内容,请查看下表。
ID Option Value
1 site_name Test
2 site_description Example of description site.
3 site_url http://www.example.com
4 site_author John Doe
5 site_lang en
现在假设我想在标签内显示我的页面上的这些数据,例如我会使用“site_name”,因为该网站的描述将是“site_description”,依此类推。最好的方法是什么?
PS:我正在使用ORM Datamapper这个应用程序,有没有办法简化使用它的操作?
答案 0 :(得分:1)
你的问题很不清楚 - 如果我正确地解释它,如果你正在使用Datamapper ORM你会这样做:
controllers/sites.php
:<?php
class Sites extends CI_Controller{
function __construct(){
parent::__construct();
}
function get($id){
$s = new Site($id);
$data['site'] = $s->to_array();
$this->load->view('sites', $data);
}
}
<?php
class Site extends Datamapper{
function __construct($id){
parent::__construct($id);
}
}
默认情况下,Datamapper ORM不支持to_array()
方法,您必须启用它。进入config/datamapper.php
并将最后一个'extensions'
数组元素修改为:$config['extensions'] = array('array');
views/sites.php
:<table>
<thead>
<tr>
<th>ID</th>
<th>Option</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<? foreach($sites as $sK => $sV):?>
<tr>
<td><?= $sV['id'];?></td>
<td><?= $sV['option'];?></td>
<td><?= $sV['value']?></td>
</tr>
<? endforeach;?>
</tbody>
</table>
然后将http://localhost/yourapp/sites/get/<id>
放入浏览器,其中<id>
实际上是数据库中的一个合适ID。
如果这些是站点范围的全局变量,我建议不要将它们存储在数据库中。没有意义让数据库调用来获取这些信息。只需将其嵌入PHP中即可。我这样做的方法是在前面的define()
文件的顶部调用index.php
:
define('TITLE', "Some Title");
define('DEVELOPER', "Your Name");
define('DEVELOPER_EMAIL', 'youremail@example.com');
然后,您可以在应用程序的任何位置使用这些内容。例如,简单地调用<?= TITLE; ?>
将回显“Some Title”。
您还可以考虑使用config/constants.php
。