2016-05-14 14 views
1

データをjsonファイルにエクスポートしたいと思います。これは簡単な登録ページです。 私は3つのパラメータがあるので、私は件のデータを持っていますが、私はそれらをエクスポートすることはできません。3つのパラメータを持つ配列をjsonファイルにエクスポートするにはどうすればいいですか?

-Username

-Password -email
<html> 
    <body marginleft="auto" marginright="auto" marginwidth="500px" > 
     <form method="post"> 
     Username: 
     <input type="text" name="username" placeholder="Username"> 
     <br> 
     Email: 
     <input type="text" name="email" placeholder="Email"> 
     <br> 
     Password: 
     <input type="text" name="password" placeholder="Password"> 
     <br> 

     <?php 
     $allDatas = json_decode(file_get_contents('data.json'), true); 
     $usernames = array(); 
     $passwords = array(); 
     $emails = array(); 

     foreach ($allDatas as $data) { 
      array_push($usernames, $data[0]); 
     } 
     foreach ($allDatas as $data) { 
      array_push($passwords, $data[1]); 
     } 
     foreach ($allDatas as $data) { 
      array_push($emails, $data[2]); 
     } 

     if (isset($_POST['email']) && isset($_POST['password']) && isset($_POST['username'])) { 
      $username = $_POST['username']; 
      $password = $_POST['password']; 
      $email = $_POST['email']; 
      $foundedUser = false; 

      foreach ($usernames as $key => $value) { 
       if ($value == $username) { 
        echo "Error: Username exsists;"; 
       } 
      } 
      foreach ($emails as $key => $value) { 
       if ($value == $email) { 
        echo "Error: Email registered;"; 
       } 
      } 

      array_push($usernames, $username); 
      array_push($passwords, $password); 
      array_push($emails, $email); 

      unset($allDatas); 
      $allDatas = array(); 
      ???? 
      } 
     } 
     ?> 
     <input type="submit" value="Registration"> 
     <br> 
    </body> 
    </html> 

は答えてくれてありがとう!

+0

単純です: '$ usernames'、' $ passwords'、 '$ emails'で新しい配列を作成してからjson_encodeの後に入れてください。 'Username -Email -Password'でjsonを取得します。 –

答えて

1

$usernames$emails、および$passwordsアレイを個別に作成する必要はありません。 $allDataをループするだけで、登録と一致する既存のエントリを検索することができます。

第2に、一致するものが見つかると$founduserに設定し、新しいユーザーを追加する前に確認する必要があります。

第3に、新しいユーザーを$allDataに追加してから、JSONとしてファイルに書き出す必要があります。

<?php 
    if (isset($_POST['email']) && isset($_POST['password']) && isset($_POST['username'])) { 
     $allDatas = json_decode(file_get_contents('data.json'), true); 
     $username = $_POST['username']; 
     $password = $_POST['password']; 
     $email = $_POST['email']; 
     $foundedUser = false; 

     foreach ($allDatas as $value) { 
      if ($value[0] == $username) { 
       echo "Error: Username exsists;"; 
       $foundUser = true; 
       break; 
      } elseif ($value[2] == $email) { 
       echo "Error: Email registered;"; 
       $foundUser = true; 
       break; 
      } 
     } 
     if (!$foundUser) { 
      $allDatas[] = array($username, $email, $password); 
      file_put_contents('data.json', json_encode($allDatas)); 
     } 

     unset($allDatas); 
     } 
    } 
    ?> 
+0

OPの要件として、私はちょうど彼がどのようにこれをしたのかを彼に伝えます。しかし、あなたは、彼が何をする必要があるすべての本質を構成する人、ありがとう。あなたは素晴らしいです... –

0

$ usernames、$ passwords、$ emailsからこれらの配列からjson文字列を作成したいとします。あなたは新しい配列を作成し、新しい配列にこれらの配列を挿入する必要があります。その後、json_encodeを使用すると、新しいjson文字列が得られます。

if条件の外では、これらを実行する必要があります。

あなたはこれらを持っている:

array_push($usernames, $username); 
array_push($passwords, $password); 
array_push($emails, $email); 

はこれを行います。

$newArr = array(); 
$newArr[] = $username; 
$newArr[] = $passwords; 
$newArr[] = $emails; 

$newstring = json_encode($newArr); 

は、私はあなたが役に立つかではありません知ってみましょう。

+0

これは、JSONファイル内の他のすべてのユーザーを失います。新しいユーザーは、そのアレイに置き換える必要があります。 – Barmar

+0

OPの要件によると、私は彼に彼がこれをどうやってできるのかを伝えます。しかし、あなたは、彼が何をする必要があるすべての本質を構成する人、ありがとう。あなたは素晴らしいです... –

関連する問題