Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Load Javascript array with MYSQL database data

suppose i have an javascript array "userName".I want to load it from a database table named "user".

Can anyone help with idea or sample code?

Thanks

like image 392
Rony Avatar asked Jul 20 '10 09:07

Rony


3 Answers

You'll have to use the mysql_connect(), mysql_select_db() functions in PHP to connect to your db. After that use mysql_query() to SELECT the fields in your user table (if your user table has the fields name and id, SELECT name, id FROM user). Then you can fetch all infos from the db with mysql_fetch_assoc() or any other mysql fetch function. Now you need to echo your data into the javascript on your website, formatted as an array. This is complicated to get right, but you can get help from json_encode.

To fill your array with the user names, you'd do something like this.

<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>
like image 153
svens Avatar answered Nov 03 '22 08:11

svens


Use ajax and php as an intermediate :

  1. Define an empty JS array :

    var myarray = new Array();

  2. use ajax to call your php script, javascript will eval the output by PHP (note this uses prototype library):

     new Ajax.Request('myfile.php', {
    
        onSuccess : function(xmlHTTP) {
    
            eval(mlHTTP.responseText);
        }
    
    });
    
  3. Write your PHP code to grab data and print JS code (it must be valid javscript !) :

    $i=0; $q=mysql_query('select ..');
    
    while($row=mysql_fetch_array($q)){               
    
        echo "myarray[".$i."]='".$row['data']."';";
    
        $i++;  
    }
    
  4. You can check that your Js array contains data :

    alert(myarray.length); 
    

hope this helps.

like image 35
Youssef Avatar answered Nov 03 '22 08:11

Youssef


This creates a global user variable in your 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>

If you're looking for a dynamic AJAXy solution, follow some tutorials about AJAX.

like image 43
deceze Avatar answered Nov 03 '22 10:11

deceze