Helen Neely
Helen Neely

Reputation: 4740

Generate Javascript Array from Mysql select

I wonder if anyone can help - I want to select a table and create Javascript a array with the return values. Here's what I have so far:

con = mysql_connect("localhost","usrname","password");

if (!$con) {
    die('Could not connect: ' . mysql_error());
}

mysql_select_db("my_db", $con);
$ql = "SELECT theMessage FROM email_message";
$result = mysql_query($ql) or die(mysql_error());

while ($row = mysql_fetch_array($result)) {
    $allMessage = $row['theMessage'] . " ";
}

$arr = array($allMessages);
$script = '<script>var newArr = new Array(' . implode(' ', $arr) . ');</script>';
echo $script;

But instead, it just shows me empty array like this: var newArr = new Array();

Upvotes: 2

Views: 1275

Answers (2)

Ethan
Ethan

Reputation: 2784

have you considered using json_encode()?

I would use a mysql_fetch_assoc, then in my 'while' loop, push each item into a php array, then use the built in json_encode function to create a javascript object which you can easily use.

EDIT: Do NOT use mysql_ functions. There are similar functions in PDO and MySQLi to achieve the same goal. Use those.

Upvotes: 0

EGOrecords
EGOrecords

Reputation: 1969

Change the line

$allMessage = $row['theMessage'] . " ";

to

$allMessages[] = $row['theMessage'] . " ";

(adding a s to the variable name, and adding the []) because you are overwriting your result every time you read a new line, and afterwards read from a different (empty) variable!

Now you should implode the array not with spaces, you should implode it with ", " or with "', '", depending on what data is stored.

You could also put the output directly into the fetch-loop, but thats just an idea for you.

What you really should consider about is reading the json_encode() and json_decode():

http://www.php.net/manual/en/function.json-encode.php

http://www.php.net/manual/en/function.json-decode.php

Hope i could help.

Upvotes: 3

Related Questions