2017-01-22 39 views
0

我需要一些简单的代码帮助,我无法工作。Javascript - 通过数组显示一些未定义的循环

问题是我想从一个MySQL数据库中获取一些数据到我的javascript中。我知道我需要通过php来取得它,我已经做到了,并把它放在一个数组中,我通过json_encode读取,似乎获得大多数数据,但有些返回undefined

代码如下:

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; 

这应该放置2个数据库到一个数组(和它)

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数)

现在我不知道该怎么做,我对js很陌生,这可能是一个简单的解决方案......但我真的需要你们的一些指导。

+0

'='用于赋值,'=='(和'===')用于比较。 – Pointy

回答

2

你可以尝试更新如果语句

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

=是赋值。这不是比较运算符。

0

嗯,这是一个错误的embarssing,它怎么竟然没有解决我的问题(但确实让我有点接近,我认为)

什么我的问题是,是,我似乎无法得到如果在我希望它运行到运行..

我的新代码是这样的

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); 

但它永远不会返回任何东西的,如果循环,所以它不到风度做什么我认为它会...我知道我有6个obj。在我的阵列中,有4个定制者和2个消费者。我想我可以告诉If循环,当一个costumer(k_id)匹配Orders(o_key)时,它应该返回if循环中的信息X次,直到它们的k_id和o_key不再匹配。

但它不这样做...所以我是一个noob,并不能缝隙来排序数组中的数据,就像我想要的那样。

+0

我有一些睡眠后,有一段时间了..意识到我的愚蠢的错误,也就是说,该数组将永远不会在同一个循环中获得K_id和O_key,我已经建立了错误的数组形式的开始。 感谢您的帮助,虽然=和==和=== :)并抱歉浪费时间。 –