0

有没有一种方法可以同时从表中的单个字段中发布两个值,但对用户隐藏一个?

我希望以下表单发布值IDreason_name提交时间,但用户只能看到(并在文本框中编辑)reason_name.

<form name="add_positioning" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    <table border="1" class="autoTable_pos">
        <tr>
            <td>Positioning</td><td> </td></tr>
        <?
        $sql= "SELECT * FROM gradeReason WHERE reason_userID = $user_id AND category = 'positioning' AND current = 1";
        $result = mysqli_query($mysqli,$sql) or die(mysqli_error($mysqli));
        while($row = mysqli_fetch_array($result)){?>
        <tr>
            <td>
                <input type="text" name="reason[]" size="25" value="<? echo $row['reason_name']; ?>"/>
            </td>
            <td>
                <input type="button" value="Delete" class="delRow_pos"/>
            </td>
        </tr>
            <?
        }
        ?>
        <tr>
            <td>
                <input type="text" name="reason[]" size="25"/>
            </td>
            <td>
                <input type="button" value="Delete" class="delRow_pos"/>
            </td>
        </tr>
        <tr>
            <td colspan="2" align="right">
                <input type="submit" value="Save" name="save_reasons"/>
            </td>
        </tr>
    </table>
</form>

到目前为止的表单 POST 操作(目前的基本回声是为了我自己的理智检查它是否正确发布了值,它确实......)

if(isset($_POST['save_reasons'])) {   
    foreach($_POST['reason'] as $item) {
        echo $item.'<br/>';
    }
}

此表显示数据库中保存的值,但允许用户通过JQUERY在底部键入空行时动态添加新行(使用我没有包括)到表中来添加更多值,并且还允许它们编辑或删除现有值。

对于发布的每个值,我打算检查该ID值是否为空,如果是则表示它是一个新值并在数据库中输入一条新记录,如果它没有用相应的更新数据库中的现有记录ID。我写那一点没有问题,我只是想不出如何获得ID发布的价值以及reason_name同时ID对用户隐藏。

4

2 回答 2

1

将 ID 添加到从数据库加载的原因的文本框的名称属性中。将使用 JQ 添加的其他文本框保留为不带 ID。例如,显示从数据库加载的现有原因的文本框

 <input type="text" name="reason[][ID]" size="25"/>

用 JQ 添加的文本框

<input type="text" name="reason[]" size="25"/>

然后,一旦您提交了您获得的表单,您将获得以下数组。

array

'原因' => 数组 0 => 数组 14 => 字符串 'VAL1' (长度 = 4) 1 => 字符串 'VAL2' (长度 = 5)

通过检查“原因”数组中每个元素中的数组,您可以区分两种类型的文本框。

这是我测试过的完整代码。

<?PHP
//var_dump($_POST);
foreach($_POST['reason'] as $item=>$value)
{
    if(is_array($value)){
        foreach($value as $ID=>$reason)
        {
            echo "Existing Reason : ".$ID." - ".$reason."<br>";
        }   
    }
    else{
        echo "New Reason : ".$item." - ".$value.'<br/>';
    }


}     
?>
<form action="" method="POST">
  <input type="text" name="reason[][14]" size="25" value="aaaa"/>
  <input type="text" name="reason[]" size="25" value="bbbbb"/>
  <input name="" type="submit">
</form>
于 2013-08-10T18:02:26.307 回答
0

假设 id 在 $row['reason_id'] 我想你想要:

$i = 0;
while($row = mysqli_fetch_array($result)){?>
    <tr>
        <td>
            <input type="hidden" name="reason_id[<? echo $i; ?>]" size="25" value="<? echo $row['reason_id']; ?>"/>
            <input type="text" name="reason[<? echo $i; ?>]" size="25" value="<? echo $row['reason_name']; ?>"/>
        </td>
        <td>
            <input type="button" value="Delete" class="delRow_pos"/></td></tr>
<? $i++ } ?>

这样你以后可以

if(isset($_POST['save_reasons'])) {   
    foreach($_POST['reason'] as $key => $item) {
        $id = $_POST['reason_id'][$key];
        echo $id . " " . $item.'<br/>';
    }
}
于 2013-08-10T18:04:51.557 回答