2017-07-02 1 views
0

こんにちは私はID値に基づいてjsonファイルで配列を削除する方法を探しています。ここでPHPとAJAXでJSONファイルの配列を削除

<?php 
$file = $_POST["id"]; 

$animals = file_get_contents('text.json'); 

$animals = json_decode($animals, true); 
foreach ($animals as $key => $value) { 
    if (in_array($file, $value)) { 
     unset($animals[$key]); 
    } 
} 
$animals = json_encode($animals); 
?> 

そして、私のAjaxコード

(それは別のPHPからのコピーです)ここに私のJSONファイル

[ 
    { 
     date: "3/7/2017", 
     title: "kjjnkjnjn", 
     category: "Automobile", 
     ville: "Labas", 
     decription: "nlknlknklnkjlnkl", 
     mail: "[email protected]", 
     telephone: "0777878988", 
     pseudo: "kknklnkln", 
     prix: "10", 
     mdp: "0000", 
     id: "5959785fde3bc26610" 
    }, 
    { 
     date: "3/7/2017", 
     title: "kjjnkjnjn", 
     category: "Automobile", 
     ville: "Labas", 
     decription: "nlknlknklnkjlnkl", 
     mail: "[email protected]", 
     telephone: "0777878988", 
     pseudo: "kknklnkln", 
     prix: "10", 
     mdp: "0000", 
     id: "6848675fde3bc26610" 
    },{ 
     date: "3/7/2017", 
     title: "kjjnkjnjn", 
     category: "Automobile", 
     ville: "Labas", 
     decription: "nlknlknklnkjlnkl", 
     mail: "[email protected]", 
     telephone: "0777878988", 
     pseudo: "kknklnkln", 
     prix: "10", 
     mdp: "0000", 
     id: "5737554fde3bc26610" 
    } 
] 

は私のPHPファイルである

$("#5959785fde3bc26610").click(function() { 
    $.ajax({ 
     url: "delete.php", 
     type: "POST", 
     data: { 
      id: "5959785fde3bc26610", 
     }, 
     success: function (result) { 
      Materialize.toast('Annonce Supprimé!', 4000); 
     } 
    }); 
}); 

これはどのようにあります私のjsonファイルを見せたいです

[ 
    { 
     date: "3/7/2017", 
     title: "kjjnkjnjn", 
     category: "Automobile", 
     ville: "Labas", 
     decription: "nlknlknklnkjlnkl", 
     mail: "[email protected]", 
     telephone: "0777878988", 
     pseudo: "kknklnkln", 
     prix: "10", 
     mdp: "0000", 
     id: "6848675fde3bc26610" 
    },{ 
     date: "3/7/2017", 
     title: "kjjnkjnjn", 
     category: "Automobile", 
     ville: "Labas", 
     decription: "nlknlknklnkjlnkl", 
     mail: "[email protected]", 
     telephone: "0777878988", 
     pseudo: "kknklnkln", 
     prix: "10", 
     mdp: "0000", 
     id: "5737554fde3bc26610" 
    } 
] 

ご協力いただきありがとうございます。

+0

? PHPの部分またはjavascript? –

+0

JavascriptとPHPが正しく動作しないため、私は何かが見つからない可能性があります –

+0

ファイル内のjsonが正確である場合は、最初の手順で正しいjson形式を使用するようにします。例:日付、タイトル。メールは二重引用符で囲む必要があります。あなたのJSONの検証をここで確認できます [json formatter](https://jsonformatter.curiousconcept.com/) –

答えて

1

まず、あなたは、このように、PHPでJSONを読んでいました:あなたが助けを必要としているコードの一部

<?php 

$id = $_POST['id']; 

// stop if it's non-numeric 
if (!preg_match('/^\d+$/', $id)) { 
    die('Don’t hack us.'); 
} 

$file = 'the.json'; 
$data = file_get_contents($file); 
$list = json_decode($data); 

// now, we will search the ID 
for ($i = 0; $i < count($list); $i++) { 

    // if we found it, 
    if ($list[$i]->id === $id) { 
    // we remove it 
    unset($list[$i]); 
    break; 
    } 
} 

// make the numeric array consecutive again 
$list = array_values($list); 

// write the resulting JSON to disk 
$fp = fopen($file, 'w'); 
fwrite($fp, json_encode($list)); 
fclose($fp); 
+0

ありがとうございました=) 他の配列が削除されたときに、その前の数を削除するにはどうすればよいですか? ありがとうございます –

+0

あなたは何を意味しますか? – Jublo

+0

私のファイルは次のようなものです: [{"date": "2017、07、01"、 "title": "zeezerzrez"}、{"date": "2017、07 03"、 "title": "zeezerzrez "}" [1:{"date": "2017、07、01"、 "title": "zeezerzrez"}、2:{"date" : "2017、07、03"、 "title": "zeezerzrez"}] 前に番号があり、foreachコードをajaxで使用できません。 –

-2

ES6 Array.prototype.filterを使用することをお勧めします。

const deletePropWithId = (array, id) => { 
    return array.filter((obj) => obj.id[id] !== undefined); 
} 
+0

このコードはどこに行くべきですか? –