Codeigniter,传递数组输入,然后显示结果

时间:2015-10-22 09:20:30

标签: php codeigniter

打扰一下,如果这个问题已经到处问过,但我找不到有效的答案。

所以我有一个动态生成的表,它是通过从数据库中的表中选择行来生成的。

这是创建表格的视图文件。

除了标题之外的所有行都是根据数据库中表中找到的数据数创建的,因此,所有输入都具有类似

的名称
<form class="form-horizontal" role="form" id="formDtKryw" method="POST" action="updKryw">
<div class="table-responsive form-group row">
    <table class="table table-hover table-condensed table-bordered">
        <thead class="text-center">
            <tr>
                <th>No</th>
                <th>Nama</th>
                <th>Telepon</th>
            </tr>
        </thead>
        <tbody>
<?php $no = 0;
    foreach ($dftr_crKryw as $data_crKryw):
        $no_ktp[$no] = $data_crKryw->no_ktp;
?>
        <input type="hidden" name="no_ktp[<?php echo $no; ?>]" id="no_ktp[<?php echo $no; ?>]" value="<?php echo $data_crKryw->no_ktp; ?>">
            <tr>
                <td><?php echo $no+1; ?></td>
                <td><?php   $this->db->select('nama,')->from('dt_prbd')->where('no_ktp', $data_crKryw->no_ktp);
                    $qry = $this->db->get();

                    if ($qry->num_rows() > 0) {
                        foreach($qry->result() as $data):
                            echo $data->nama;
                        endforeach;
                    }
                ?></td>
                <td><?php
                    if ($data_crKryw->memo == NULL) {
                    ?>
                        <select class="form-control input-sm" name="memo[<?php echo $no; ?>]" id="memo[<?php echo $no; ?>]">
                            <option value="">---Pilih---</option>
                            <option value="Memo 1">Memo 1</option>
                            <option value="Memo 2">Memo 2</option>
                            <option value="Memo 3">Memo 3</option>
                        </select>
                    <?php
                    }
                    else {
                        echo $data_crKryw->memo;
                    }
                ?></td>
            </tr>
<?php
        $no++;
            endforeach;
        }
?>
        <input type="hidden" name="totData" id="totData" value="<?php echo $no; ?>">
            <tr>
                <td colspan="11" align="right"><button type="submit" id="submit" class="btn btn-primary">Simpan Data</button>  <button type="reset" class="btn btn-danger">Hapus Form</button></td>
            </tr>
        </tbody>
    </table>
</div>
</form>

这是应该捕获输入的控制器

function updKryw(){
    $totData = $this->input->post('totData');

    $no_ktp = $this->input->post('no_ktp');
    $memo = $this->input->post('memo');

    $frmUpdKryw = array(
        'totData' => $totData,
        'no_ktp' => $no_ktp,
        'memo' => $memo
    );

    $this->load->view('display_data', $frmUpdKryw);
}

这是视图文件,它假设从表单

中查看所有捕获的信息
<html>
<head></head>
<body>
<?php

for($x = 0; $x < $totData; $x++){
    echo $totData . "<br>";
    echo $no_ktp[$x] . "<br>";
    echo $memo[$x] . "<br>";
}

?>
</body>
</html>

所有显示的只是$ totData,$ no_ktp [$ x]和$ memo [$ x]不会显示任何内容。

如果我的代码或逻辑中出现任何错误,任何人都可以提供帮助。

提前致谢。

=============================================== ==========================

编辑:我开始认为我的php引擎坏了。为什么呢?

即使这个简单的表格也不会显示任何内容。

form.php的

<form name="myForm" method="post" action="go.php">
    <input type="text" name="name" value="firstname">
    <input type="text" name="addr" value="firstaddr">
    <button type="submit" name="submit" id="submit">save</button>
</form>

go.php

$name = $_POST[name];
$addr = $_POST[addr];

echo $name;
echo $addr;

2 个答案:

答案 0 :(得分:0)

首先,我建议在将数据保存到$ frmUpdKryw数组之前进行调试

$this->input->post(NULL, TRUE); // returns all POST items with XSS filter 
$this->input->post(); // returns all POST items without XSS filter

然后,如果数据不为空,则在

之前
$this->load->view('display_data', $frmUpdKryw);

添加

var_dump($frmUpdKryw);

如果一切都很好,那么在视图的开头调试

var_dump($totData);
var_dump($no_ktp);
var_dump($memo);

如果一切都很好,那么问题就在你的循环中,所以你需要修复它。要么你知道你有问题在哪里:

  1. 使用POST发送数据失败
  2. 未能保存到新变量
  3. 无法发送数据进行查看
  4. 并且上次以循环失败
  5. 希望它会有所帮助

答案 1 :(得分:0)

当我在同一个应用程序中解决另一个问题时,这个问题也得到解决,问题不在代码或逻辑中。所有代码都按预期工作。

这是解决方案的链接。不是我期望的解决方案,而是它的工作。

The Solution

感谢AbdullaOleg Sapishchuk