7
votes

Charger la matrice JavaScript avec les données de base de données MySQL

Supposons que j'ai un tableau JavaScript "Nom d'utilisateur". Je veux le charger à partir d'une table de base de données nommée "User".

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

merci


3 commentaires

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


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?


@Guillaume: Je veux obtenir du code pour créer une matrice à partir de la base de données @Deceze: J'utilise php ..


4 Réponses :


4
votes

Ceci crée une variable globale code> utilisateur code> 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>


2 commentaires

En fait, je ne veux pas que le code PHP JavaScript puisse faire cela ... J'ai un 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 Dans ce cas, vous devrez vous branler sur Ajax, que vous pouvez utiliser pour charger certaines informations du serveur. Si la variable utilisateur ne change pas cependant, cette méthode est meilleure et enregistre un aller-retour supplémentaire sur le serveur.



1
votes

Le meilleur moyen de le faire est simplement d'obtenir vos données dans votre code PHP, puis de "écrire" le code JavaScript pour générer le tableau dans PHP.

Un court exemple serait: P>

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


2 commentaires

En fait, je ne veux pas que le code PHP JavaScript puisse faire cela ... J'ai un 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 ....


Vous pouvez ensuite faire une demande Ajax à une pièce de code PHP, qui vous donnerait les données de JSON, XML ou tout ce que vous aimez.



5
votes

Vous devrez utiliser le mysql_connect () code>, mysql_select_db () code> fonctionne en php pour vous connecter à votre dB. Après cette utilisation mysql_query () code> Pour sélectionner les champs de votre table utilisateur (si votre table utilisateur dispose des champs Nom et ID, Sélectionnez le nom, ID de l'utilisateur code>). Ensuite, vous pouvez extraire toutes les infos de la DB avec mysql_fetch_assoc () code> ou toute autre fonction de récupération MySQL. Maintenant, vous devez ECHO code> vos données dans le JavaScript sur votre site Web, formaté comme une matrice. Ceci est compliqué à obtenir correctement, mais vous pouvez obtenir de l'aide de json_encode code>.

Pour remplir votre tableau avec les noms d'utilisateur, vous feriez quelque chose comme ça. P>

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


0 commentaires

4
votes

Utilisez AJAX et PHP comme intermédiaire:

  1. Définissez un tableau JS vide: P>

    var myarray = nouveau tableau (); code> p> li>

  2. Utilisez AJAX pour appeler votre script PHP, JavaScript évaluera la sortie par PHP (Remarque Ceci utilise la bibliothèque de prototypes): P>

    alert(myarray.length); 
    
  3. Écrivez votre code PHP pour saisir les données et imprimer un code JS (il doit être valide JavScript!): P>

    $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: P>

     new Ajax.Request('myfile.php', {
    
        onSuccess : function(xmlHTTP) {
    
            eval(mlHTTP.responseText);
        }
    
    });
    


0 commentaires