2010-07-20 14 views
6

supponiamo di disporre di un array javascript "userName" .Voglio caricarlo da una tabella di database denominata "utente".Carica array Javascript con dati di database MYSQL

Qualcuno può aiutare con idea o codice di esempio?

Grazie

+1

Vuoi dire che il contenuto dell'array è memorizzato nel database o vuoi ottenere il codice per creare l'array dal database? –

+0

Solitamente Javascript non può parlare direttamente con un database, avrete bisogno di qualcosa in mezzo. Come stai parlando al database? – deceze

+0

@Guillaume: Voglio ottenere il codice per creare array dal database @deceze: io uso php .. – Rony

risposta

5

Usa Ajax e PHP come intermedio:

  1. definire un array JS vuoto:

    var myarray = new Array();

  2. uso ajax per chiamare lo script PHP, Javascript sarà eval il uscita da PHP (nota che utilizza la libreria prototipo):

    new Ajax.Request('myfile.php', { 
    
        onSuccess : function(xmlHTTP) { 
    
         eval(mlHTTP.responseText); 
        } 
    
    }); 
    
  3. scrivere il codice PHP per afferrare i dati e il codice di stampa JS (che devono essere javscript valido!):

    $i=0; $q=mysql_query('select ..'); 
    
    while($row=mysql_fetch_array($q)){    
    
        echo "myarray[".$i."]='".$row['data']."';"; 
    
        $i++; 
    } 
    
  4. È possibile verificare che l'array Js contiene i dati:

    alert(myarray.length); 
    

spero che questo aiuti.

4

Questo crea un user variabile globale nella tua pagina.

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

Se stai cercando una soluzione dinamica AJAXy, segui alcuni tutorial su AJAX.

+0

in realtà non voglio mix di codice javascript php per fare questo ... ho script javascript e php separati e da javascript voglio chiamare lo script php per ottenere i dati del database .... – Rony

+1

@Rony In questo caso dovrai rispolverare su AJAX, che puoi usare per caricare alcune informazioni dal server. Se la variabile 'user' non cambia, questo metodo è migliore e salva un roundtrip extra sul server. – deceze

1

Il modo migliore per farlo è semplicemente ottenere i dati nel codice php e quindi "scrivere" il codice javascript per generare l'array in php.

Un breve esempio potrebbe essere:

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

Il mio codice potrebbe essere abbastanza corretto, è juste per darvi un esempio veloce.

Si potrebbe anche farlo in un modo più elegante, utilizzando json.

+0

in realtà non voglio mix di codice javascript php per fare questo ... ho separato javascript e script php e da javascript voglio chiamare lo script php per ottenere i dati del database .... – Rony

+0

Puoi quindi fare una richiesta Ajax a un pezzo di codice php, che ti darebbe i dati in json, xml o qualsiasi cosa tu voglia. –

4

Dovrai utilizzare le funzioni mysql_connect(), mysql_select_db() in PHP per connettersi al tuo db. Successivamente, utilizzare mysql_query() per SELEZIONARE i campi nella tabella utente (se la tabella utente ha il nome e l'ID dei campi, SELECT name, id FROM user). Quindi puoi recuperare tutte le informazioni dal db con mysql_fetch_assoc() o qualsiasi altra funzione di recupero mysql. Ora hai bisogno di echo i tuoi dati in javascript sul tuo sito web, formattati come una matrice. È complicato avere ragione, ma puoi ottenere assistenza da json_encode.

Per riempire l'array con i nomi utente, farebbe qualcosa di simile.

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