PHP在一个字段中发布两个值,其中一个是隐藏的

PHP在一个字段中发布两个值,其中一个是隐藏的,php,mysql,Php,Mysql,是否有一种方法可以同时从表中的单个字段发布两个值,但对用户隐藏一个值 我希望以下表单在提交时发布值ID和reason\u name,但用户只能看到(并在文本框中编辑)reason\u name <form name="add_positioning" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> <table border="1" class="autoTable_pos">

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

我希望以下表单在提交时发布值
ID
reason\u name
,但用户只能看到(并在文本框中编辑)reason\u 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>

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

 <input type="text" name="reason[][ID]" size="25"/>
“原因”=> 排列 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>

假设id为$row['reason\u 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++ } ?>
$i=0;
而($row=mysqli\u fetch\u数组($result)){?>

SESSION
是为您准备的:)每个记录都有自己的ID,会话会有什么帮助?如果您不想向用户显示它们,请将它们存储在会话中。否则,用户可以查看html中的任何内容。我知道这一点,但我不确定如何使用通过while循环创建的表单做到这一点?您可以使用隐藏字段,但用户仍然可以“看到”这一点。
array
<?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>
$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/>';
    }
}