2016-11-27 92 views
-1

我正在爲我的網站上的新帳戶啓用激活隊列。系統將通過遍歷數組來遍歷每個項目作爲另一個包含新用戶帳戶詳細信息的數組,然後將該數組的每個項目顯示給用戶,以便管理員可以接受或拒絕該帳戶。我已經在PHP文件中收集了數組的所有信息,但是我需要將第一個帳戶的詳細信息返回到Javascript以顯示它們。我正在嘗試的代碼不起作用,但是在Chrome的開發控制檯或我的服務器目錄中都沒有提供任何錯誤。如果有人能夠通過我的代碼掃描他們的眼睛會很好,因爲我知道我的運氣會是如此明顯,或者是因爲我完全不理解JSON。提前致謝。將JSON數組解碼爲Javascript

<?php 
session_start(); 

require "classes.php"; 
$TF = new TF_Core(); 

$ActQueueQuery = "SELECT username, surname, forename, joined FROM users 
WHERE rank = 'Unactivated'"; 

if ($statement = TF_Core::$MySQLi->DB->prepare($ActQueueQuery)) { 
    $statement->execute(); 
    $results = $statement->get_result(); 
} 

if($results->num_rows == 0){ 
    $data = 1; 
    echo $data; 
} 
else{ 
    $_SESSION["ActQueue"] = array(""); 

    while($row = $results->fetch_assoc()){ 
     array_push($_SESSION["ActQueue"], array($row["username"], $row["surname"], $row["forname"], $row["joined"])); 
    } 
    $data = 0; 
    echo json_encode(['Surname'=>'$_SESSION["ActQueue"][1][0]','Forename'=>'$_SESSION["ActQueue"][0][1]','Username'=>'$_SESSION["ActQueue"][0][2]','Joined'=>'$_SESSION["ActQueue"][0][3]']); 
} 
?> 

的Javascript:

function ActQueueRefresh(){ 
     $.post('../functions/php/fncactqueuerefresh.php', {}, function(data) { 
      var returnValue = JSON.parse(data); 
      if (data == 0){ 
       $('#divQueueError').html(''); 
       $("#spnSurname").text(returnValue['Surname']); 
       $("#spnForename").text(returnValue['Forename']); 
       $("#spnUsername").text(returnValue['Username']); 
       $("#spnJoined").text(returnValue['Joined']); 
       $('#divQueueError').text(''); 
      } 
      else if (data == 1){ 
       $("#spnSurname").text(''); 
       $("#spnForename").text(''); 
       $("#spnUsername").text(''); 
       $("#spnJoined").text(''); 
       $('#divQueueError').html('<p class="text-center text-danger bg-danger" id="pUPInc">There are no accounts pending activation!</p>'); 
      } 
     }); 
    } 

http://thomas-smyth.co.uk/admin/activationqueue.php

+0

JavaScript在哪裏? – Chris

+0

@Chris,我已將它添加到我的帖子中。 –

回答

1

這應該工作:(你包圍變量單引號,輸錯用的名字(的forName前))

<?php 
session_start(); 

require "classes.php"; 
$TF = new TF_Core(); 

$ActQueueQuery = "SELECT username, surname, forename, joined FROM users 
WHERE rank = 'Unactivated'"; 

if ($statement = TF_Core::$MySQLi->DB->prepare($ActQueueQuery)) { 
    $statement->execute(); 
    $results = $statement->get_result(); 
} 

if($results->num_rows == 0){ 
    $data = 1; 
    echo $data; 
} 
else{ 
    $_SESSION["ActQueue"] = array(); 

    while($row = $results->fetch_assoc()){ 
     array_push($_SESSION["ActQueue"], array($row["username"], $row["surname"], $row["forename"], $row["joined"])); 
    } 
    $data = 0; 
    echo json_encode(['Surname'=>$_SESSION["ActQueue"][0][1],'Forename'=>$_SESSION["ActQueue"][0][2],'Username'=>$_SESSION["ActQueue"][0][0],'Joined'=>$_SESSION["ActQueue"][0][3]]); 
} 
?> 
+0

好點。我已經按照你所說的行事,但它仍然行不通。還有什麼建議? array_push($ _ SESSION [「ActQueue」],數組($ row [「username」],$ row [「surname」],$ row [「forename」]) ],$ row [「joined」])); } $ data = 0;\t echo json_encode(['Username'=> $ _ SESSION [「ActQueue」] [0] [0],'Surname'=> $ _ SESSION [「ActQueue」] [1] [1],'Forename'=> $ _SESSION [ 「ActQueue」] [0] [2], '加入'=> $ _ SESSION [ 「ActQueue」] [0] [3]]);' –

0
<?php 
session_start(); 

require "classes.php"; 
$TF = new TF_Core(); 

$ActQueueQuery = "SELECT username, surname, forename, joined FROM users 
WHERE rank = 'Unactivated'"; 

if ($results = TF_Core::$MySQLi->DB->query($ActQueueQuery)) { 
    if($results->num_rows == 0){ 
     $data = 1; 
     echo $data; 
    } 
    else{ 
     $_SESSION["ActQueue"] = array(); 

     while($row = $results->fetch_assoc()){ 
      array_push($_SESSION["ActQueue"], array($row["username"], $row["surname"], $row["forename"], $row["joined"])); 
     } 
     $data = 0; 
     echo json_encode(['Username'=>$_SESSION["ActQueue"][0][0], 'Surname'=>$_SESSION["ActQueue"][0][1],'Forename'=>$_SESSION["ActQueue"][0][2],'Joined'=>$_SESSION["ActQueue"][0][3]]); 
    } 
} 
?> 

硒ems就像一些奇怪的不規則行爲,但我設法在一位德國朋友的幫助下實現它。