2017-02-06 6 views
0

私はサイジングチャートを得ました。そのサイズの意味の説明の横にある時点で1つの結果しか表示しません。phpとJSONのドロップダウンで項目を表示

例:idが01の場合はB + Cを出力したいが、それは私が作成したJSONファイルではなくCSVを使用している場合です。

どのように "ID": "01"項目だけを表示するようにPHPを作るのですか?

は、それからちょうど「名前」から、ちょうど「2XS」ドロップダウン選択、別のサイズの

そして第三の値を表示し、それはそれを表示します。

enter image description here

これまでのところ私は、JSONファイルに私のCSVを作ったが、私は、出力データをどのように理解していません。

{ 
    "ID": "01", 
    "name": "Height", 
    "2XS": 66, 
    "XS": 68, 
    "S": 70, 
    "M": 72, 
    "L": 74, 
    "XL": 76, 
    "2XL": 78, 
    "3XL": 80, 
    "4XL": 82, 
    "5XL": "", 
    "6XL": "", 
    "7XL": "", 
    "8XL": "", 
    "9XL": "", 
    "10XL": "" 
} 

これは私がPHP側でよどこまである:ここでは

<?php 
$json=file_get_contents("/sizes.json"); 
$result = json_decode(true); 

print_r($result); 
?> 

は、私はそれを示すことにする方法の例です:
enter image description here

+0

あなたは出力があることを期待するものを追加することはできますか?あなたの質問から伝えるのは難しいです。 –

+0

JSONカスケードドロップダウンを検索してくださいPHP AJAX - ブラウザにJSONを送信してオブジェクトを処理させることができます – mplungjan

+0

データが表示されたらすぐにこれを調べます! – user1296114

答えて

0

グラフがHTMLと同じページにある場合はPHPは必要ありません

ここでは例としてjQueryを使用します。

var item = { 
 
"ID": "01", 
 
    "sizes" : { 
 
"Height":   { "2XS": 66,"XS": 68,"S": 70,"M": 72,"L": 74,"XL": 76,"2XL": 78,"3XL": 80,"4XL": 82,"5XL": ""}, 
 
"Width under arm": { "2XS": 46,"XS": 68,"S": 70,"M": 72,"L": 74,"XL": 76,"2XL": 78,"3XL": 80,"4XL": 82,"5XL": ""}, 
 
"Bottom width": { "2XS": 46,"XS": 68,"S": 70,"M": 72,"L": 74,"XL": 76,"2XL": 78,"3XL": 80,"4XL": 82,"5XL": ""}, 
 
"Neck openeing": { "2XS": 46,"XS": 68,"S": 70,"M": 72,"L": 74,"XL": 76,"2XL": 78,"3XL": 80,"4XL": 82,"5XL": ""}, 
 
"Arm openeing": { "2XS": 18,"XS": 68,"S": 70,"M": 72,"L": 74,"XL": 76,"2XL": 78,"3XL": 80,"4XL": 82,"5XL": ""} // no comma 
 
    } 
 
} 
 

 
    /* the above could be 
 
    $.get("items.php?id=01",function(data) { 
 
     var item = JSON.parse(data); // not necessary to parse if the server returns aplicate/json 
 
    }); 
 
    */ 
 

 
var names = { 
 
    "2XS": "XX Small", 
 
    "XS": "X Small", 
 
    "S": "Small", 
 
    "M": "Medium", 
 
    "L": "Large", 
 
    "XL": "X large", 
 
    "2XL": "XX Large", 
 
    "3XL": "XXX Large", 
 
    "4XL": "XXXX Large", 
 
    "5XL": "XXXXX Large" 
 
} 
 
$(function() { 
 
    var $sel = $("#sel1"); // cache the object for reuse 
 
    $.each(item.sizes.Height, function(key, val) { // create the select from the object above - I use the Height list of sizes 
 
    if (val) { // ignore empty sizes 
 
     $sel.append($('<option/>', { 
 
     "value": key, 
 
     "text": names[key] 
 
     })); 
 
    } 
 
    }); 
 
    $sel.on("change", function() { 
 
    process(this.value); // pass select value to process 
 
    }).change(); // trigger the current selection 
 
}); 
 

 
function process(aSize) { // passes XS ... 5XL 
 
    var $table = $("#sizeTable").empty(); 
 
    $.each(item.sizes, function(key, val) { // loop over height, width, 
 
    $table.append('<tr><td class="nameCell">' + key + '</td><td class="sizeCell">' + val[aSize] + ' cm</td></tr>') 
 
    }); 
 
}
.nameCell { 
 
    font-weight: bold; 
 
    padding-right: 5px; 
 
} 
 
.sizeCell { 
 
    font-style: italic; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select id="sel1"></select> 
 
<table> 
 
    <tbody id="sizeTable"></tbody> 
 
</table>

+1

正確には私がそれを望んでいたが、コードと2時間で私はどのように私はそれが私がそれをしたい方法を行う方法を見つけることができるかを把握!ありがとう! – user1296114

+0

あなたは大歓迎ですね;) – mplungjan

+0

あなたのコードは私のために進んでいます..まず、JSONファイルの外でこのファイルが自動的に生成されるため、関数を実行します。しかし、私は "varアイテム"が必要なので、これは不可能だとは思わない?そして、名前の隣にリストされている数字をすべて取得する方法はわかりません。私は申し訳ありません。 種類 エコー:名前01;エコー:2XS01: エコー: エコー:2XS02; – user1296114

0

あなたの質問はありますあまり明確ではありませんが、あなたが言及したオブジェクトのプロパティを表示するだけで、次のことができます:

<?php 
// Get file and decode. 
$json=file_get_contents("/sizes.json"); 
$result = json_decode($string, true); 

// Access specific object properties. 
$id = $result->ID; 
$name = $result->name; 
$size = $result->{'2XS'}; 

// Outputs '01 Height 66' 
echo $id . ' ' . $name . ' ' . $size; 
?> 
+0

サーバーはAJAXを使用してJSONをブラウザに送信し、クライアントに解析させる必要があります – mplungjan

+0

@mplungjan AJAXで何かしたい場合は、リクエストを作成して応答を解析するフロントエンドコードを与える必要もありますまたはできるだけ近いと思っているものに近い)。あなたの最初の質問は、あなたがしようとしていることを明確にすることをうまくやっていません。 –

+0

ありがとうございますが、あなたのコードは何も出力しませんでした。私のswinglishに申し訳ありませんまたは朝の03:00のために私はそれを得るまで私は周りを嘲笑します..私はちょうどこれの周りに私の頭を取得しないでください。 – user1296114

関連する問題