2016-12-01 12 views
0

firstnameというユーザー入力変数に基づいて、テーブルに配列を出力しようとしています。 2つの配列の値が同じfirstnameの場合、テーブルには両方の配列が表示されます。現在、最初の配列のみが表に表示されています。私はそうのような出力にそれをしたいと思い

if ($firstname === "Emma") 
    $arr[] = array('id'=> "1", 'title'=> "Miss", 'firstname'=> "Emma", 'surname'=>"Brown"); 
else if ($firstname === "Emma") 
     $arr[] = array('id'=> "2", 'title'=> "Mrs", 'firstname'=> "Emma", 'surname'=>"Green"); 
else 
     $arr[] = array('id'=> "Unknown", 'title'=> "Unknown", 'firstname'=> "Unknown", 'surname'=> "Unknown"); 

echo '{"firstname":'.json_encode($arr).'}'; 


enter image description here

すべてのヘルプははるかに高く評価されて

$(document).ready(function() { 
    var url = "data.php"; 

    $('#getJSON').click(function(event) { 
     event.preventDefault(); 
     var firstname = $('#firstname').val(); 
     url = url + "?firstname=" + firstname; 

     $.getJSON(url, function(json) { 
      var tr; 
      for (var i = 0; i < json.data.length; i++) { 
       tr = $("<tr/>"); 
       tr.append("<td>" + json.data[0].id + "</td>"); 
       tr.append("<td>" + json.data[0].title + "</td>"); 
       tr.append("<td>" + json.data[0].firstname + "</td>"); 
       $('table').append(tr); 
      } 
     }); 
    }); 
}); 

PHPスクリプト:私は以下の私の現在のコードが含まれています!

+0

毎回; tr'はあなたが私たちに与えることができ、各反復 – atoms

+2

@atomsは罰金thatsの取得しているJSONと期待する出力の両方の例。最初の名前が一致すれば、両方の配列が表示されるはずです。あなたはおそらく '[0]'を '[i]'に変更したいと考えています –

+2

@Emmaの末尾に付加されます 'と' –

答えて

2

次の2つのミスを持っています。 if elseifを使用しているので、ifelseifの両方に同じ条件を設定することはできません。else ifは、前の条件が偽である場合は、別の条件をチェックします。この場合、最初の条件が真であるため、elseifは実行されません。

第2に、常にデータを結果配列の同じインデックスに格納するので、データを上書きして常にこの配列内の1つの要素を取得します。あなたの `` tr` TR = $( "")上書きしますループ

$id=1; 
$arr=array(); 

if ($firstname === "Emma"){ 
    $arr[] = array('id'=> $id++, 'title'=> "Miss", 'firstname'=> "Emma", 'surname'=>"Brown"); 
    $arr[] = array('id'=> $id++, 'title'=> "Mrs", 'firstname'=> "Emma", 'surname'=>"Green"); 
} 

else if($firstname === "NotEmma") 
    $arr[] = array('id'=> $id++, 'title'=> "Miss", 'firstname'=> "NotEmma", 'surname'=>"xx"); 

else 
     $arr[] = array('id'=> "Unknown", 'title'=> "Unknown", 'firstname'=> "Unknown", 'surname'=> "Unknown"); 

echo '{"firstname":'.json_encode($arr).'}'; 
+0

ありがとうAmani! PHPは私の強みではありませんが、これは完全に機能しています。 :) – Emma

+0

あなたは歓迎ですが、複雑ではありません。あなたが最初にやろうとしていることの背後にある論理を理解してから、それをコードに変換するだけです。 –

0

あなたはこれを試みることができる:

第1は、if節の使用である:

var tr; 
for (var i = 0; i < json.data.length; i++) { 
    tr += "<tr>"; 
    tr += "<td>" + json.data[i].id += "</td>"; 
    tr += "<td>" + json.data[i].title += "</td>"; 
    tr += "<td>" + json.data[i].firstname += "</td>"; 
    tr += "</tr>"; 

} 

$('table').html(tr); 
+0

これはパフォーマンスが向上する可能性がありますが、論理的にはOPが現在持っているものと同じですが、どのような利点がありますか?私のdownvote、FYI –

+0

私のために働く、私が考えることができる他の理由は壊れた応答です。そうすれば、OPは彼の反応をチェックしなければならない。 –

+0

なぜOPは "これを試してください"? ***良い答え***は、何が行われたのか、それがなぜOPのためだけでなく、将来の訪問者のためにそうした方法で行われたのかについての説明を常に持っています。 –

関連する問題