我创建了一个块,您可以动态添加多个名称。当我cick save,并返回到块编辑时,我没有看到我的新添加的名称。我认为这是保存到数据库的问题。请有人帮帮我吗?
这是我的代码:
Controller.php这样:
<?php defined('C5_EXECUTE') or die("Access Denied.");
Loader::block('library_file');
class MultipleBlockController extends BlockController {
protected $btName = 'Multiply TEST';
protected $btDescription = 'Multiple add. TEST';
protected $btTable = 'btDCMultiple';
protected $btInterfaceWidth = "700";
protected $btInterfaceHeight = "450";
}
db.xml:
<?xml version="1.0"?>
<schema version="0.3">
<table name="btDCMultiple">
<field name="bID" type="I">
<key />
<unsigned />
</field>
<field name="inputs" type="C" size="16"></field>
</table>
</schema>
edit.php:
<?php defined('C5_EXECUTE') or die("Access Denied.");
?>
<?php
$remove_row_icon = '<img src="'.ASSETS_URL_IMAGES.'/icons/remove_minus.png" class="remove_row" height="14" width="14" >';
$add_row_icon = '<img src="'.ASSETS_URL_IMAGES.'/icons/add_small.png" class="add_row" height="14" width="14" >';
?>
<!-- Zakladki -->
<ul id="ccm-autonav-tabs" class="ccm-dialog-tabs">
<li class="ccm-nav-active"><a id="ccm-autonav-tab-add" href="javascript:void(0);"><?php echo t('Edit')?></a></li>
</ul>
<!-- Odstep konfiguracja -->
<div style="padding: 10px">
<div class="ccm-autonavPane" id="ccm-autonavPane-add">
<h2>debug</h2>
<table>
<tr><td><?php echo 'Name';?></td><td></td></tr>
<?php
foreach($inputs as $a_name) { ?>
<tr>
<td><input type="text" size="10" name="inputs" value="<?php echo $a_name ?>" ></td>
<td><?php echo $add_row_icon; echo (' '); echo $remove_row_icon;?></td>
</tr>
<?php } ?>
</table>
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){
$('.add_row').live('click',function(){
var copy_of_row = $(this).closest('tr').clone();
$(copy_of_row).find('input').val('');
$(this).closest('tr').after(copy_of_row);
});
$('.remove_row').live('click',function(){
$(this).closest('tr').remove();
});
});
</script>
view.php:
<?php defined('C5_EXECUTE') or die("Access Denied.");
?>
<div>
<?php echo $inputs ?>
</div>
另一个问题:如何从数据库加载数组?
答案 0 :(得分:0)
您的代码中有几个问题:
如果您的字段输入将重复,则需要添加
括号[]到它的名字,所以它变成name="inpust[]"
在数据库表中,字段bID包含块ID,它是一个键 字段意味着数据库中只有一行可以具有该值。在你的 例如,如果您有3个输入,则将有3行具有相同的bID 这是不可能的。
我建议您查看核心幻灯片块,以获取使用2个单独表格为一个块保存多个值的示例。
关于您的其他问题,一旦加载数据库助手,您就可以
$rows = $db->getArray($sql,$vals);
$ rows将包含您的值数组,$ sql是您的sql调用(SELECT * FROM whatever_table ...),$ vals(可选)包含要在sql中使用的过滤值。