2010-07-20 5 views
6

Supposons que j'ai un tableau javascript "nomUtilisateur" .Je veux le charger à partir d'une table de base de données nommée "utilisateur".Charger un tableau Javascript avec des données de base de données MYSQL

Quelqu'un peut-il aider avec l'idée ou l'exemple de code?

Merci

+1

Voulez-vous dire que le contenu de votre tableau est stocké dans la base de données ou que vous voulez obtenir le code pour créer le tableau à partir de la base de données? –

+0

Habituellement, javascript ne peut pas parler directement à une base de données, vous aurez besoin de quelque chose entre les deux. Comment parlez-vous à la base de données? – deceze

+0

@Guillaume: Je veux obtenir du code pour créer un tableau à partir de la base de données @deceze: j'utilise php .. – Rony

Répondre

5

Utilisez ajax et php comme intermédiaire:

  1. Définir un tableau vide JS:

    var myarray = new Array();

  2. utilisation ajax pour appeler votre script php, javascript sera eval la produit par PHP (notez ceci utilise la bibliothèque prototype):

    new Ajax.Request('myfile.php', { 
    
        onSuccess : function(xmlHTTP) { 
    
         eval(mlHTTP.responseText); 
        } 
    
    }); 
    
  3. Écrivez votre code PHP pour récupérer les données et imprimer le code JS (il doit être javscript valide!):

    $i=0; $q=mysql_query('select ..'); 
    
    while($row=mysql_fetch_array($q)){    
    
        echo "myarray[".$i."]='".$row['data']."';"; 
    
        $i++; 
    } 
    
  4. Vous pouvez vérifier que votre tableau Js contient des données:

    alert(myarray.length); 
    

espérons que cela aide.

4

Cela crée une variable globale user dans votre page.

<?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> 

Si vous recherchez une solution AJAXy dynamique, suivez quelques tutoriels sur AJAX.

+0

Je ne veux pas de mélange de code php javascript pour ce faire ... j'ai script javascript et php séparé et de javascript je veux appeler le script php pour obtenir des données de base de données .... – Rony

+1

@Rony Dans ce cas, vous devrez rafraîchir sur AJAX, que vous pouvez utiliser pour charger des informations sur le serveur. Si la variable 'user' ne change pas, cette méthode est meilleure et enregistre un aller-retour supplémentaire sur le serveur. – deceze

1

La meilleure façon de faire cela est simplement d'obtenir vos données dans votre code php, puis "écrire" le code javascript pour générer le tableau en php.

Un court exemple serait:

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

Mon code pourrait être tout à fait incorrect, il est juste de vous donner un exemple rapide.

Vous pouvez également faire cela d'une manière plus élégante en utilisant json.

+0

en fait je ne veux pas de mélange de code php javascript pour ce faire ... j'ai script javascript et php séparés et de javascript je veux appeler le script php pour obtenir des données de base de données .... – Rony

+0

Vous pouvez ensuite faire une requête ajax à un morceau de code php, ce qui vous donnerait les données en json, xml, ou tout ce que vous aimez. –

4

Vous devrez utiliser les fonctions mysql_connect(), mysql_select_db() en PHP pour vous connecter à votre db. Après cela, utilisez mysql_query() pour sélectionner les champs de votre table utilisateur (si votre table utilisateur a le nom et l'identifiant des champs, SELECT name, id FROM user). Ensuite, vous pouvez aller chercher toutes les infos de la base de données avec mysql_fetch_assoc() ou toute autre fonction mysql fetch. Maintenant vous devez echo vos données dans le javascript sur votre site Web, formaté comme un tableau. C'est compliqué à obtenir, mais vous pouvez obtenir de l'aide de json_encode. Pour remplir votre tableau avec les noms d'utilisateur, vous devriez faire quelque chose comme ceci.

<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> 
Questions connexes