2010-07-20 106 views
6

假設我有一個javascript數組「userName」。我想從名爲「user」的數據庫表中加載它。使用MYSQL數據庫數據加載Javascript數組

任何人都可以幫助想法或示例代碼?

感謝

+1

你的意思是你的數組的內容存儲在數據庫中,或者你想要從數據庫中獲取創建數組的代碼? – 2010-07-20 09:42:23

+0

通常,Javascript不能直接與數據庫交談,您需要在兩者之間進行操作。你如何與數據庫交談? – deceze 2010-07-20 09:43:51

+0

@Guillaume:我想要從代碼中創建數據庫 @deceze:我使用php .. – Rony 2010-07-20 09:46:51

回答

5

使用AJAX和PHP作爲中間:

  1. 定義一個空的JS數組:

    var myarray = new Array();

  2. 使用Ajax調用PHP腳本,JavaScript的使用eval由PHP輸出(注意這使用原型庫):

    new Ajax.Request('myfile.php', { 
    
        onSuccess : function(xmlHTTP) { 
    
         eval(mlHTTP.responseText); 
        } 
    
    }); 
    
  3. 寫你的PHP代碼獲取數據和打印JS代碼(它必須是有效的javscript!):

    ​​
  4. 你可以檢查你的js數組包含數據:

    alert(myarray.length); 
    

希望這有助於。

4

這會在你的頁面的全局變量user

<?php 
    $user = /* get information from database the way you usually do */; 
    // $user == array('id' => 1, 'name' => 'foo', ...); 
?> 

<script type="text/javascript" charset="utf-8"> 
    var user = <?php echo json_encode($user); ?>; 
</script> 

如果您正在尋找動態AJAXy解決方案,請遵循一些關於AJAX的教程。

+0

我實際上不希望JavaScript php代碼混合做到這一點...我有單獨的JavaScript和PHP腳本和從javascript我想調用php腳本來獲取數據庫數據.... – Rony 2010-07-20 09:58:29

+1

@Rony在這種情況下,您將不得不刷新AJAX,您可以使用它從服務器加載一些信息。如果'user'變量不變,這個方法更好,並且節省了一個額外的往返服務器。 – deceze 2010-07-20 10:01:39

1

最簡單的方法就是在你的php代碼中獲取數據,然後「編寫」javascript代碼以在php中生成數組。

一個簡短的例子是:

echo "a = new Array();"; 
foreach($row in $results) 
{ 
    echo "a[$row[0]] = $row[1];"; 
} 

我的代碼可能是相當不正確,它的中庸之道,給你一個簡單的例子。

你也可以使用json以更優雅的方式來做到這一點。

+0

我其實不希望混合JavaScript的PHP代碼來做到這一點...我有單獨的JavaScript和PHP腳本,並從JavaScript我想調用PHP腳本來獲取數據庫數據.... – Rony 2010-07-20 09:58:12

+0

然後,你可以做一個Ajax請求到一段php代碼,這會給你在json,xml,或任何你喜歡的數據。 – 2010-07-20 10:02:08

4

您將不得不使用PHP中的mysql_connect(),mysql_select_db()函數連接到您的db。之後,使用mysql_query()來選擇用戶表中的字段(如果您的用戶表具有字段名稱和ID,SELECT name, id FROM user)。然後,您可以使用mysql_fetch_assoc()或任何其他mysql提取函數從db中獲取所有信息。現在您需要將您的數據以echo格式轉換爲您網站上的JavaScript,並將其格式化爲數組。這很複雜,但你可以從json_encode獲得幫助。

要用你的用戶名填充你的數組,你應該這樣做。

<html> 
    <head> 
    <script type="text/javascript"> 
     var userName = <?php 
      // Connect to MySQL 
      //mysql_connect(); 
      //mysql_select_db(); 
      $d = mysql_query("SELECT name, id FROM user") or die(mysql_error()); 
      $usernames = array(); 
      while($r = mysql_fetch_assoc($d)) { 
       $usernames[] = $r['name']; 
      } 
      echo json_encode($usernames); 
     ?>; 
     // Do something with the userName array here 
    </script> 
    </head>