Foreach在codeigniter中生成多个表单 - 值出错

时间:2017-02-10 15:00:37

标签: php forms codeigniter

我做了一个foreach来呈现销售优惠券,因此用户可以选择一个并取消该优惠券。他把密码和服务员取消了这笔交易。

问题:在提交时,始终提交最后的表单值。为什么?我猜可能是id或提交按钮名称问题,但当然不知道。测试将id放在表单上,​​在提交时输入不同的名称等;什么都行不通 因此,如果我将用户密码放在第一个生成的表单上,则密码输入为空。但是,如果我将密码放在最后生成的表单上,输入就可以了!此外,隐藏输入中的值始终来自最后一种形式。我正在为每个偶像使用一个表单和一个提交按钮。所有这些都有相同的属性和输入(可能是问题),但我无法弄明白。 有任何想法吗?两天的工作,直到现在都没有。

Foreach代码:

<?php
$queryCancel = $this->posweb->get_last_transactions($id)->result();
    foreach ($queryCancel AS $cupom) {
?>
<?php echo form_open('posweb/operacao'); ?>
<div>
    <input type="hidden" name="hdidUser" value="<?php echo $query->idUser ?>"/>

    <label>User Password</label>
    <input name="pswUser" type="password" class="form-control">
    <br>
    <button type="submit" class="btnSalvar btn btn-block btn-danger btn-danger-border">
        Cancel this coupom
    </button>
    <input type="hidden" name="operation_type"
           value="cancelSale">
</div>
</form>

1 个答案:

答案 0 :(得分:0)

没有具体的答案尚未提供帮助,所以我改变了逻辑。 已删除的<form>代码和内部div不再使用10个表单,而是成为<a>标记。 那个<a>标签链接到一个bootstrap模式,我通过data-href将vars从link传递给modal。 将我需要的所有数据放入隐藏的输入中,然后使用用户输入密码提交。 它有效。

查看:

<?php
$queryCancel = $this->posweb->get_last_transactions($id)->result();
    foreach ($queryCancel AS $cupom) {
?>
<div>
    <a data-href="<?php echo $query->userId ?>" data-valid="<?php echo $query->valid_date ?>" data-idloja="<?php echo $idLoja ?>" data-estab="<?php echo $query->cnpj_loja ?>" data-valor="<?php echo $cupom->valor ?>" data-dtcompra="<?php echo date('d/m/Y', strtotime($cupom->created_at)) ?>" data-toggle="modal" data-target="#cancel-sale" class="btn btn-block btn-danger btn-danger-border" title="Cancelar Venda"><span class="label label-default label-size"><i class="fa fa-check"></i></span></a>
</div>

<?php } ?>

- 莫代尔 -

<div class="modal fade modal-3d-slit" id="cancel-sale" aria-hidden="true"
 aria-labelledby="exampleModalTitle" role="dialog" tabindex="-1">
<div class="modal-dialog">
    <div class="modal-content">
        <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                <span aria-hidden="true">×</span>
            </button>
            <h4 class="modal-title"><i class="fa fa-warning" aria-hidden="true"></i> Atenção</h4>
        </div>
        <?php
        echo form_open('posweb/operacao');
        ?>
        <div class="modal-body">
            <div class="alert dark alert-alt alert-danger alert-dismissible" role="alert">
                <strong>
                    <span>Ask the customer to enter your password</span>
                </strong>
            </div>

            <label>Customer Password</label>
            <input name="pswUser" type="password" class="form-control" />
            <br>
            <!--button type="submit" class="btnSalvar btn btn-block btn-danger btn-danger-border">
                Cancel this Coupom
            </button-->

            <input type="hidden" class="inputValue" name="hdUser" />
            <input type="hidden" class="inputValue2" name="hdvalidDate" />
            <input type="hidden" class="inputValue3" name="hdidLoja" />
            <input type="hidden" class="inputValue4" name="hdEstab" />
            <input type="hidden" class="inputValue5" name="hdValor" />
            <input type="hidden" class="inputValue6" name="hdDtCompra" />

            <input type="hidden" name="operation_type" value="cancelSale" />

        </div>
        <div class="modal-footer">
            <button type="button" class="btn btn-default margin-0" data-dismiss="modal">Cancelar</button>
            <button type="submit" class="btn btn-danger btn-ok">Confirmar</button>
        </div>
    </div>
</div>
</div>

JavaScript - 将您想要的php变量从点击的<a>传递给模态:

$('#cancel-sale').on('show.bs.modal', function (e) {
    $(this).find('.btn-ok').attr('href', $(e.relatedTarget).data('href'));
    $('.inputValue').val($(this).find('.btn-ok').attr('href'));

    $(this).find('.btn-ok').attr('valid', $(e.relatedTarget).data('valid'));
    $('.inputValue2').val($(this).find('.btn-ok').attr('valid'));

    $(this).find('.btn-ok').attr('idloja', $(e.relatedTarget).data('idloja'));
    $('.inputValue3').val($(this).find('.btn-ok').attr('idloja'));

    $(this).find('.btn-ok').attr('estab', $(e.relatedTarget).data('estab'));
    $('.inputValue4').val($(this).find('.btn-ok').attr('estab'));

    $(this).find('.btn-ok').attr('valor', $(e.relatedTarget).data('valor'));
    $('.inputValue5').val($(this).find('.btn-ok').attr('valor'));

    $(this).find('.btn-ok').attr('dtcompra', $(e.relatedTarget).data('dtcompra'));
    $('.inputValue6').val($(this).find('.btn-ok').attr('dtcompra'));

});

希望帮助有同样问题的人。 我仍然想知道为什么当页面上有多个具有相同元素的表单时,提交的值始终是最后一个表单的值。 如果你知道原因,请告诉我。