2017-01-22 6 views
0

私は簡単なコードで少しでも助けが必要です。Javascript - ループスルー配列で未定義の文字が表示される

問題は、mysqlデータベースのデータをjavascriptに取り込むことです。私はPHPを介してそれをプルする必要があることを知って、私はそれをして配列に配置、私はjson_encodeを介して、それはほとんどのデータを得るようだが、一部の返信undefined。コードの下

:アレイに2つのデータベースを配置する必要があり

PHP

$sql_kunder = "SELECT * FROM Kunder"; 
$rows_kunder = array(); 
$result_kunder = $conn ->query($sql_kunder); 

while($row_kunder = $result_kunder->fetch_assoc()) 
    { 

    $rows_kunder[] = $row_kunder; 

    $ordre_key = $row_kunder["Kunde_id"]; 
    $sql_ordre = "SELECT * FROM Ordre WHERE Order_Key = $ordre_key"; 
    $result_ordre = $conn ->query($sql_ordre); 

    While($row_ordre = $result_ordre->fetch_assoc()) 
     { 
      $rows_kunder[] = $row_ordre; 
     } 

    } 

$phpArray_kunder = $rows_kunder; 

(およびそれがない)

JS

<script type="text/javascript"> 

var JsonKunder= <?php echo json_encode($phpArray_kunder); ?>; 

console.log(JsonKunder); 
for (var key in JsonKunder) 
    { 
    if (JsonKunder[key].Kunde_id = JsonKunder[key].Order_Key) 
     { 
      console.log(JsonKunder[key].Start_dato); 
      console.log(JsonKunder[key].End_dato); 
      console.log(JsonKunder[key].Ordre_nr); 
      console.log(JsonKunder[key].Ordre_id); 
      console.log(JsonKunder[key].Kunde_navn); 
      console.log(JsonKunder[key].Kunde_cvr); 
      console.log(JsonKunder[key].Kunde_id); 
     } 
    } 
</script> 

出力

Array[6] 
0: Object 
Kunde_cvr: "25659191" 
Kunde_id: undefined 
Kunde_navn: "Karens bix" 
__proto__: Object  
1: Object 
End_dato: "1485561600" 
Kunde_id: "1" 
Order_Key: "1" 
Ordre_id: "1" 
Ordre_nr: "1111" 
Start_dato: "1484697600" 
__proto__: Object 
2: Object 
End_dato: "1486684800" 
Kunde_id: "1" 
Order_Key: "1" 
Ordre_id: "2" 
Ordre_nr: "1112" 
Start_dato: "1485993600" 
__proto__: Object 
3: Object 
Kunde_cvr: "65917878" 
Kunde_id: undefined 
Kunde_navn: "Bygmarked" 
__proto__: Object 
4: Object 
End_dato: "1485302400" 
Kunde_id: "2" 
Order_Key: "2" 
Ordre_id: "3" 
Ordre_nr: "2222" 
Start_dato: "1484870400" 
__proto__: Object 
5: Object 
End_dato: "1487980800" 
Kunde_id: "2" 
Order_Key: "2" 
Ordre_id: "4" 
Ordre_nr: "2223" 
Start_dato: "1486771200" 
__proto__: Object 
length: 6 
__proto__: Array[0] 

あなたが見ることができるように、見当違いの情報のビットがあります。

たとえば、オブジェクト0にはkunde_idUndefinedがあり、オブジェクト1にはkunde:id = 1があります。なぜそれがそれをするのかわからない、そこにはいけない。

次はforループ吐き出console.log、それは次のように読み取ります

1484697600 testarray.php:30 <- from ordre (start dato) 
1485561600 testarray.php:31 <- from ordre (end dato) 
1111  testarray.php:32 <- from ordre (ordre nr) 
1   testarray.php:33 <- from ordre (ordre id) 
undefined testarray.php:34 <- Should be Kunde navn 
undefined testarray.php:35 <- should be kunde cvr 
1   testarray.php:36 <- From kunde id 

そして、私は二回しかループにそれを望んでいたこと4回、(クンデデータベース内のcostumersの数)をループ

今私は何をすべきか分かりません。私はかなり新しいです。これはおそらく簡単な修正ですが、実際にあなたからの指導が必要です。

+0

'='は値の割り当てであり、 '=='(と '===')は比較のためのものです。 – Pointy

答えて

2

あなたは

if (JsonKunder[key].Kunde_id == JsonKunder[key].Order_Key) 

if文をアップデートしよう=割り当てです。オペレータを比較するのではない。 embarssingの間違いだった

0

さて、どのように今までそれは私の問題を解決していませんでした(しかし、ビット近い私は考えて私を手に入れた)

何私の問題は、あることは私が取得するように見えることができないということです..私はそれを実行することを期待したときに実行するIF

私の新しいコードはこの

var i = 0 /* this is to see loops */ 

for (var key in JsonKunder) { 

    var k_id = JsonKunder[key].Kunde_id; 
    var o_key = JsonKunder[key].Order_Key; 

    i++ 

    console.log('Counts loops ' + i); 
    console.log('kunde id ' + k_id); 
    console.log('ordre key ' + o_key); 

    if(k_id == o_key) 
    { 
     console.log('in if '); 
    } 

} 

console.log('total loops ' +i); 

のようなものです。しかし、それは、もしループ内の任意のものを返すことはありませんので、それは私はそれが思った何dosn't ...私は6 objを知っている。私の配列では、4つのordresと2人のcostumers。私はIfループで、costumer(k_id)がOrders(o_key)と一致したときに、それらがk_idとo_keyが一致しなくなるまで、ifループの情報をX回返しなければならないと伝えました。

しかし、それはしません...私はnoobですので、私はしたいように配列内のデータを並べ替えることはできません。

+0

私は少しの睡眠の後にいくつかの時間を持っています..私の愚かな間違いを実現した、つまり、アレイはK_idとO_keyを同じループで得ることはないでしょう。 =と==と=== :)と助けてくれてありがとう、無駄な時間にごめんなさい。 –

関連する問題