1

私は手動で更新しているjsonをいくつか持っていますが、データが電子メールで送られてくるので、データが増えるほど、jsonの作成に費やす時間が長くなります

一部のデータ (テキストとアップロード) を取得し、JSON をファイルまたはデータベースに書き込み/出力するフォームを作成する方法はありますか? - Ajax、PHP、MySQL などの調査を試みましたが、うまくいきませんでした。アドバイスをお願いします (正しい方向に向けてください)。

私の構造:

    {
    "FirstName": "John",
    "LastName": "Doe",
    "Photo": "http://ImageURL",
    "PhoneNumber": [
        {
            "MobilePhone": "555-555-5555",
            "Provider": "Verizon"
        },
        {
            "HomePhone": "555-555-5555",
            "Provider": "AT&T"
        },
        {
            "WorkPhone": "555-555-5555",
            "Provider": "SBC"
        }
    ]
}

必要なフォーム

名: (テキスト入力)

姓: (テキスト入力)

写真: (ファイルのアップロード)

(「電話番号」の下にネスト)

携帯電話:(文字入力)

プロバイダー: (テキスト入力)

自宅電話: (文字入力)

プロバイダー: (テキスト入力)

勤務先電話番号: (テキスト入力)

プロバイダー: (テキスト入力)

注: これはダミー データです。実際の JSON 辞書は音楽アルバムに使用され、ファイルのアドレスはhttp://www.godsgypsychristianchurch.net/music.jsonです。

4

2 に答える 2

2

これを試して:

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {

    move_uploaded_file($_FILES["Photo"]["tmp_name"],"images/".$_POST['Photo']);

    $filters=array(
        "FirstName",
        "LastName",
        "Photo",
        "MobilePhone",
        "MobilePhoneProvider",
        "HomePhone",
        "HomePhoneProvider",
        "WorkPhone",
        "WorkPhoneProvider"
    );

    $final=array();

    foreach ($filters as $filter) {
        $final[$filter]=$_POST[$filter]?$_POST[$filter]:"";
    }

    $final["PhoneNumber"]=array(
        array(
            "MobilePhone"=>$final["MobilePhone"],
            "Provider"=>$final["MobilePhoneProvider"],
        ),
        array(
            "HomePhone"=>$final["HomePhone"],
            "Provider"=>$final["HomePhoneProvider"],
        ),
        array(
            "WorkPhone"=>$final["WorkPhone"],
            "Provider"=>$final["WorkPhoneProvider"],
        )
    );

    $unsets=array(
        "MobilePhone",
        "MobilePhoneProvider",
        "HomePhone",
        "HomePhoneProvider",
        "WorkPhone",
        "WorkPhoneProvider"
    );

    foreach ($unsets as $unset) {
        unset($final[$unset]);
    }

    echo json_encode($final);
    exit;
}
?><!DOCTYPE html>
<html>
    <head>
        <title>Contact</title>
    </head>
    <body>
        <form action="" method="post" enctype="multipart/form-data">
            First Name: <input type="text" name="FirstName"><br>
            Last Name: <input type="text" name="LastName"><br>
            Photo: <input type="file" name="Photo"><br>
            Mobile Phone: <input type="tel" name="MobilePhone"><br>
            Mobile Phone Provider: <input type="text" name="MobilePhoneProvider"><br>
            Home Phone: <input type="tel" name="HomePhone"><br>
            Home Phone Provider: <input type="text" name="HomePhoneProvider"><br>
            Work Phone: <input type="tel" name="WorkPhone"><br>
            Work Phone Provider: <input type="text" name="WorkPhoneProvider"><br>
            <input type="submit">
        </form>
    </body>
</html>

これは出発点にすぎません。ユーザー入力が有効であることを確認するために、画像チェックやその他のさまざまなチェックを行う必要があります。(このテストでは、というフォルダを作成する必要がありますimages)

于 2013-06-03T02:20:29.837 に答える
0

Backbone.js などのいくつかのライブラリは、これを行うための便利な方法を提供します。この質問 ( Backbone.js を使用してフォーム入力を JSON にシリアル化する) に対する回答を確認し、それがニーズに合うかどうかを確認してください。

そうは言っても、フォームを通常どおり POST してから、PHP 関数でデータベースに保存することを検討しましたか? なんらかの理由で文字列化された JSON として DB に入れる必要がない限り(これは通常は推奨されません)、通常の INSERT 呼び出しを使用してデータを MySQL データベースに保存することができます。(このチュートリアルを参照してください: http://php.about.com/od/phpbasics/ss/mysql_files.htm )

于 2013-06-03T02:23:07.833 に答える