如何从单个数据库表中提取数据?
例如,我需要表格中的数据:categories,column:id为1的描述?
答案 0 :(得分:6)
只要您尝试编写Joomla组件,我建议您开始学习使用MVC架构编写代码。 Joomla有关此主题的文档可用here。无论如何,我会给你一个简单但临时的解决方案,你必须在以后使用Joomla的MVC重写它。
我认为您要从column1
中选择column2
和#__example_table
数据,然后在简单的表格中显示。
首先,您需要创建一个空视图的组件。您可以使用this online tool一目了然地创建组件;当然,创建具有空视图的组件是免费的。构建,下载和安装组件后,我们称之为com_mycomponent
,com_mycomponent
文件夹中会有一个名为/components
的文件夹。打开它,你会看到一个views
文件夹,里面会有一个文件夹,我打算称之为myview
。
在您的视图文件夹中,有一个名为view.html.php
的文件,其中包含您的视图类,您还可以看到名为tmpl
的文件夹,其中包含视图模板的default.php
文件。 / p>
现在在编辑器中打开view.html.php
并在$items
方法之后创建名为getData()
和display()
方法的公共属性,如下所示:
<?php
class MycomponentViewMyview extends JView {
.
.
.
public $items;
public function display($tpl = null) {
.
.
.
$this->items = $this->getData();
parent::display($tpl);
}
public function getData() {
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select(array('column1', 'column2'));
$query->from('#__example_table');
$query->where('condition = 1');
$query->order('id DESC');
$db->setQuery($query);
$results = $db->loadObjectList();
if (!empty($results)) {
return $results;
}
return false;
}
}
在这个例子中,我使用了Joomla的数据库API,其中描述了here;并考虑到圆点表示您不需要更改的其余代码。
现在打开/components/com_mycomponent/views/myview/tmpl/defailt.php
并删除所有内容并写下这样的内容:
<?php
defined('_JEXEC') or die; // No direct access
if (count($this->items)) {
?>
<table style="width: 100%">
<thead>
<tr>
<th>Column 1</th>
<th>Column 2</th>
</tr>
</thead>
<tbody>
<?php foreach ($this->items as $item) { ?>
<tr>
<td><?php echo $item->column1; ?></td>
<td><?php echo $item->column2; ?></td>
</tr>
<?php } ?>
</tbody>
</table>
<?php
} else {
echo 'Sorry! No data found...';
}
我认为这个例子很清楚,不需要解释,但我会简要解释一下发生了什么。首先,我们创建了一种从数据库中获取数据并将其存储在可从外部访问的变量中的方法。然后我们从display方法中调用该方法,该方法在某种程度上是视图类的构造函数。然后在视图的模板中,我使用了一个循环来存储$items
变量中的记录,并在表格行中显示它们。