输入选择产品,然后在更新形式的codeigniter中加载产品数据

时间:2018-01-23 23:12:06

标签: php forms codeigniter

我目前正在codeigniter上创建项目/产品更新表单。要匹配我要编辑的产品,我使用输入选择,它会加载数据库中的所有可用产品。

用户选择产品然后点击提交后,该功能将在更新表单中加载所有产品数据。

问题是,我不知道如何传递输入值变量并以形式获取产品数据而不重新加载页面(因为它当前位于div选项卡上)。

我目前的模特:

function editarProducto()
{
    $id = $this->input->post('productoID');;
    $this->db->where('id', $id);
    $query = $this->db->get('items');
    return $query->result();
}

查看(这里我选择" productoID"将从数据库中检索产品,其想法是在选择产品后将valueid发布到模型" editarProducto& #34):

...<form id="SelectProd-form" method="post">
                                <select id="productoID" name="productoID" class="form-control">
                                    <option value="">Seleccionar</option>
                                    <?php
                                    foreach ($editarID as $key => $value) {
                                        echo "<option value='".$value->id."'>".$value->nombre."</option>";
                                    }
                                    ?>
                                </select>
                            </div>
                            <br>
                            <button id="botonSelectProd" type="submit" class="form-group" name="submit">Seleccionar</button>
                            </form>
                        </div>
                    </div>
                    <div id="editarProducto">
                    <form id="editarProducto-form" action="<?php echo site_url('admin/editarProducto'); ?>" method="post">
                        <div id="msjRegistro" class="login-form-main-message"><?php echo validation_errors(); ?></div>
                        <div class="form-group">
                            <label for="nombre" class="cols-sm-2 control-label">Nombre</label>
                            <div class="cols-sm-10">
                                <div class="input-group">
                                    <span class="input-group-addon"><i class="fa fa-forward fa" aria-hidden="true"></i></span>
                                    <input type="text" class="form-control" name="nombre" placeholder="Ingresa el nombre del producto" value="<?php echo set_value('nombre'); ?>" />
                                </div>
                            </div>
                        </div>
                        <div class="form-group">
                            <label for="precio" class="cols-sm-2 control-label">Precio</label>
                            <div class="cols-sm-10">
                                <div class="input-group">
                                    <span class="input-group-addon"><i class="fa fa-dollar fa" aria-hidden="true"></i></span>
                                    <input type="number" min="0.00" max="100000.00" step="0.01" placeholder="Ingresa el precio en pesos" class="form-control" name="precio" value="<?php echo set_value('precio'); ?>"/>
                                </div>
                            </div>
                        </div>...

1 个答案:

答案 0 :(得分:0)

  1. 通常,在选择更改时,或点击#botonSelectProd后,您可以使用ajax将#productoID的.val()中的ID发布到与editarProducto()交互的控制器函数。< / LI>
  2. 使用相同的.val()并将其添加到表单操作的末尾,以便您知道要更新的项目,并且可以在控制器中检索它,如:$this->input->get('id')
  3. 然后通过编码像array('field_name_1'=>'field_value_1') .etc这样的数组来发回JSON响应。
  4. 使用$ .each,您可以返回按照JSON响应和presto的名称填充每个输入。您的更新表单已填充。
  5. 此时您必须重新考虑使用set_value()validation_errors(),因为这些需要重新加载页面。您可以以json形式返回验证错误,并使用json重新填充提交的表单值,但如果您需要的唯一ajax是selectbox,则更有效。