Concrete5-将数组保存到DB



我创建了块wchich,您可以动态添加一个多个名称。当我Cick保存并返回块编辑时,我看不到我的新添加名称。我认为保存到数据库是问题。请有人可以帮我吗?

这是我的代码:

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>

另一个问题:如何从DB加载数组?

您的代码中有几个问题:

  1. 如果您的字段输入要重复,您需要添加括号[]的名称,因此变为 name="inpust[]"

  2. 在您的数据库表中,字段出价包含块ID,这是一个键 字段意味着您的数据库中只有一排可以具有该值。在你的 情况,如果您有3个输入,则将有3行带有相同的出价 这是不可能的。

我建议您查看核心幻灯片块,以使用2个单独的表来保存一个块的多个值。

加载数据库助手后,您可以执行其他问题

$rows = $db->getArray($sql,$vals); 

$行将包含您的值数组,$ sql是您的sql呼叫(从whyit_table ...)和$ vals(可选)包含用于SQL中使用的过滤值。

相关内容

  • 没有找到相关文章

最新更新