簡體   English   中英

PHP在一個字段中發布兩個值,其中一個是隱藏的

[英]PHP post two values in one field, one of which is hidden

有沒有一種方法可以同時從表中的單個字段發布兩個值,但對用戶隱藏一個值?

我希望下面的表單在提交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同時獲取發布的ID值以及reason_name

將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>

假設編號為$ 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/>';
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM