PHP中的HTML-插入所有值表单,而部分表单按循环显示

PHP中的HTML-插入所有值表单,而部分表单按循环显示,php,html,forms,Php,Html,Forms,我有一个表单,看起来像: |-----------------------| |Text | |(dropdown) | ------------------------| |label (value = 1) | //get this by loop using while |input | //get this by loop using while |------------------

我有一个表单,看起来像:

|-----------------------|
|Text                   |
|(dropdown)             |
------------------------|
|label (value = 1)      | //get this by loop using while
|input                  | //get this by loop using while
|-----------------------|
|label (value = 2)      | //get this by loop using while
|input                  | //get this by loop using while
|-----------------------|
|label (value = ...)    | //get this by loop using while
|input                  | //get this by loop using while
|-----------------------|
|submit                 |
我不知道为什么我的表单只插入最后一个值

示例

  • 选择下拉值=1
  • 在标签1上添加输入值=80
  • 标签2上输入的加值=79
  • FYI

  • [ia]=下拉值
  • [ik]=标签值
  • [nn]=输入值
  • 当我用
    print\r($\u POST)点击提交按钮时输出是
    数组([ia]=>1[ik]=>2[nn]=>79)

    我想去

    Array ( [ia] => 1 [ik] => 1 [nn] => 80 )
    Array ( [ia] => 1 [ik] => 2 [nn] => 79 )
    
    这是我关于使用
    while
    显示另一个表单的代码:

    if($_POST){
    
        include_once 'includes/rangking.inc.php';
        $eks = new rangking($db);
    
        $eks->ia = $_POST['ia'];
        $eks->ik = $_POST['ik'];
        $eks->nn = $_POST['nn'];
    
        if($eks->insert()){
    ?>
    <div class="alert alert-success alert-dismissible" role="alert">
      <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
      <strong>Berhasil Tambah Data!</strong> Tambah lagi atau <a href="rangking.php">lihat semua data</a>.
    </div>
    <?php
        }
    
        else{
    ?>
    <div class="alert alert-danger alert-dismissible" role="alert">
      <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
      <strong>Gagal Tambah Data!</strong> Terjadi kesalahan, coba lagi.
    </div>
    <?php
        }
    }
    ?>
    <form method="post">
        <div class="form-group">
        <label for="ia">Alternatif</label>
        <select class="form-control" id="ia" name="ia">
            <?php
            $stmt3 = $pgn1->readAll();
            while ($row3 = $stmt3->fetch(PDO::FETCH_ASSOC)){
                extract($row3);
                echo "<option value='{$id_alternatif}'>{$nama_alternatif}</option>";
            }
            ?>
        </select>
        </div>
        <div class="form-group">
            <?php
            $no=1;
            $stmt2 = $pgn2->readAll();
            while ($row2 = $stmt2->fetch(PDO::FETCH_ASSOC)){
                extract($row2);
                ?>
                <label for="ik"><?php echo $nama_kriteria; ?></label>
                <input type="hidden" name="ik" id="ik" value=<?php echo $id_kriteria ?>>
                <input type="text" class="form-control" id="nn" name="nn">
            <?php
            }
            ?>
        </div>
        <button type="submit" class="btn btn-primary">Simpan</button>
        <button type="button" onclick="location.href='rangking.php'" class="btn btn-success">Kembali</button>
    </form>
    

    您有多个同名元素,如果发布该表单,它将只发送最后一个元素的值

    您应该更改以下两行:

    <input type="hidden" name="ik" id="ik" value=<?php echo $id_kriteria ?>>
    <input type="text" class="form-control" id="nn" name="nn">
    
    >
    

    这样,它将作为一个数组传递,该数组应包含每个输入。您可以查看更多信息。

    这段代码帮助我了解我想要的数组,但是为什么显示
    数组到字符串转换的错误
    ,我应该编辑
    rangking.inc.php
    代码吗?您尝试使用实际数组而不是数组中的值。您正在尝试将实际数组插入数据库。您必须循环insert函数(内部或外部),并同时传递数组的一行。您可以查看更多信息。感谢您的建议,现在是使用阵列“战斗”的时候了,
    <input type="hidden" name="ik" id="ik" value=<?php echo $id_kriteria ?>>
    <input type="text" class="form-control" id="nn" name="nn">
    
    <input type="hidden" name="ik[]" id="ik" value=<?php echo $id_kriteria ?>>
    <input type="text" class="form-control" id="nn" name="nn[]">