簡體   English   中英

PHP 從表單數據創建多維數組

[英]PHP Create Multidimensional Array From Form Data

昨天我一整天都在尋找解決方案,但我仍然被卡住了

這是我的問題:

我有一個 PHP 頁面,我必須在其中填寫一個包含 3 個值的表單,當我單擊提交時,它應該在 JSON 數組中創建一個新的 JSON 數組,數組的編號增加 1。

我想要達到的目標:

當我填寫表單 5 次並單擊提交按鈕 5 次時,我的 JSON 數組應如下所示:

 { "articles": { "1": { "tax": "11", "price": "111", "discription": "Transport" }, "2": { "tax": "234", "price": "4532", "discription": "Opslag" }, "3": { "tax": "19", "price": "19", "discription": "Gasoline" }, "4": { "tax": "84765", "price": "4235", "discription": "Food" }, "5": { "tax": "132", "price": "5460", "discription": "Opslag" } } }

我試圖做的事情:

我試圖在 javascript 中創建一些東西:它從所有輸入字段創建一個 JSON 數組,但到目前為止我無法存儲這些字段並從結果中創建一個多維數組。 我確實發現了一個有趣的Stack Overflow 問題Click但我不知道如何使用輸入字段來填充數組,就像問題上的示例一樣。

我希望有一個人可以幫助我 :)

托馬斯

你可以通過兩種方式做到這一點。 兩者都適合。 我想我會認為第二種方式更安全,因為它完全是在服務器端完成的。 我將為您演示兩者。

第一種方式:

您將使用一個隱藏的輸入字段並序列化一個數組。 您將在提交時通過隱藏輸入字段將序列化數組傳遞回您的 post 數組。 該代碼會將新的帖子數據推送到它從隱藏輸入字段中獲取的未序列化數組中。

像這樣:

<?php

if(isset($_POST['submit']) && $_POST['submit']){

    $array = unserialize(base64_decode($_POST['articles']));

    $array['articles'][] = array(

        'tax'               => $_POST['tax'],
        'price'             => $_POST['price'],
        'description'       => $_POST['description']

    );

    $postData = base64_encode(serialize($array));

}

?>

<!DOCTYPE HTML>
<html>

  <head>
    <title>My Simple Form</title>
    <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
    <meta content="utf-8" http-equiv="encoding">
  </head>

  <body style="background-color:#b3ffff">

        <div style="padding-left:500px; padding-top:200px">

            <form action=""  method="post" enctype="multipart/form-data">

                Tax: <input type="text" name="tax" placeholder="tax" value=""><br>
                Price: <input type="text" name="price" placeholder="price" value=""><br>
                Description <input type="text" name="description" placeholder="description" value=""><br>
                <input type="hidden" name="articles" value=" <?php echo $postData; ?> ">
                <input type="submit" name="submit" value="Submit">

            </form>

    </div>

  </body>

</html>


<?php

echo
'<pre>';
print_r($array);
echo
'</pre>';

 //When you need to convert it to a json string then use this:
 $jsonString = json_encode($array);

?>

第二種方式

這種方式不使用隱藏的輸入字段。 相反,我們只是將發布數據傳遞給 $_SESSION 變量,該變量將在服務器端的內存中存儲數組。 當您決定離開頁面時,請確保刪除會話變量,因為如果您不這樣做,它將始終存在。 我的意思是,如果您稍后重新加載頁面,那么您第一次在頁面上的所有數據仍將存在。

session_start();

if(isset($_POST['submit']) && $_POST['submit']){

    $_SESSION['myData']['articles'][] = array(

        'tax'               => $_POST['tax'],
        'price'             => $_POST['price'],
        'description'       => $_POST['description']

    );

}

?>

<!DOCTYPE HTML>
<html>

  <head>
    <title>My Simple Form</title>
    <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
    <meta content="utf-8" http-equiv="encoding">
  </head>

  <body style="background-color:#b3ffff">

        <div style="padding-left:500px; padding-top:200px">

            <form action=""  method="post" enctype="multipart/form-data">

                Tax: <input type="text" name="tax" placeholder="tax" value=""><br>
                Price: <input type="text" name="price" placeholder="price" value=""><br>
                Description <input type="text" name="description" placeholder="description" value=""><br>
                <input type="submit" name="submit" value="Submit">

            </form>

    </div>

  </body>

</html>


<?php

echo
'<pre>';
print_r($_SESSION['myData']);
echo
'</pre>';
$array[] = $_POST["value"]; // push array after submit

$strJSON = json_encode($array);    //convert Array to JSONString
$objJSON = json_decode($strJSON);  //convert JSONString to JSONObject

暫無
暫無

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

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