2010-07-20 14 views
6

Supongamos que tengo una matriz de javascript "nombre de usuario". Quiero cargarlo desde una tabla de base de datos llamada "usuario".Cargar matriz de Javascript con datos de la base de datos MYSQL

¿Alguien puede ayudar con la idea o el código de muestra?

Gracias

+1

¿Quiere decir que el contenido de su matriz se almacena en la base de datos, o desea obtener el código para crear la matriz a partir de la base de datos? –

+0

Normalmente, Javascript no puede hablar directamente con una base de datos, necesitará algo intermedio. ¿Cómo estás hablando con la base de datos? – deceze

+0

@Guillaume: Quiero obtener el código para crear una matriz desde la base de datos @deceze: uso php .. – Rony

Respuesta

5

Uso ajax y php como producto intermedio:

  1. Definir una matriz vacía JS:

    var myarray = new Array();

  2. uso de AJAX para llamar a su script PHP, JavaScript se eval la salida por PHP (tenga en cuenta que esto utiliza una biblioteca de prototipos):

    new Ajax.Request('myfile.php', { 
    
        onSuccess : function(xmlHTTP) { 
    
         eval(mlHTTP.responseText); 
        } 
    
    }); 
    
  3. escribir el código PHP para tomar datos y el código JS de impresión (que deben ser javscript válida!):

    $i=0; $q=mysql_query('select ..'); 
    
    while($row=mysql_fetch_array($q)){    
    
        echo "myarray[".$i."]='".$row['data']."';"; 
    
        $i++; 
    } 
    
  4. Usted puede comprobar que la matriz de Js contiene datos:

    alert(myarray.length); 
    

Espero que esto ayude.

4

Esto crea una variable global user en su página.

<?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 está buscando una solución dinámica AJAXy, siga algunos tutoriales sobre AJAX.

+0

en realidad no quiero mezclar el código javascript php para hacer esto ... tengo script javascript y php por separado y desde javascript quiero llamar a la secuencia de comandos php para obtener datos de la base de datos ... – Rony

+1

@Rony En ese caso, deberá actualizar AJAX, que puede usar para cargar información del servidor. Sin embargo, si la variable 'user' no cambia, este método es mejor y guarda una ida y vuelta adicional al servidor. – deceze

1

La mejor manera de hacerlo es simplemente obtener sus datos en su código php, y luego "escribir" el código javascript para generar la matriz en php.

Un breve ejemplo sería:

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

Mi código podría ser bastante incorrecta, es juste para darle un ejemplo rápido.

También podría hacer eso de una manera más elegante, usando json.

+0

en realidad no quiero mezclar el código javascript php para hacer esto ... tengo un script javascript y php por separado y desde javascript quiero llamar al script php para obtener datos de la base de datos .... – Rony

+0

Luego puede hacer una solicitud ajax a una pieza de código php, que le daría los datos en json, xml, o cualquier cosa que desee. –

4

Deberá utilizar las funciones mysql_connect(), mysql_select_db() en PHP para conectarse a su base de datos. Después de eso, use mysql_query() para SELECCIONAR los campos en su tabla de usuarios (si su tabla de usuario tiene el nombre y el id. De los campos, SELECT name, id FROM user). Luego puede buscar todas las informaciones del archivo db con mysql_fetch_assoc() o cualquier otra función de búsqueda de mysql. Ahora necesita echo sus datos en el javascript en su sitio web, formateado como una matriz. Es complicado hacerlo bien, pero puede obtener ayuda en json_encode.

Para llenar su matriz con los nombres de usuario, haría algo como esto.

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