I have to create a javascript array whose elements are fetched by php from a database. Is it possible? If so, how?
(I dont want to use ajax to do that)
I have to create a javascript array whose elements are fetched by php from a database. Is it possible? If so, how?
(I dont want to use ajax to do that)
If you can loop through the database contents, creating an array is simple:
echo "var myArray = [";
Loop through array here and add commas to separate values.
echo "];";
Your myArray variable will be available client-side. It should look something like:
var myArray = [1, 3, 2, 4];
Alternatively and to avoid an extra comma due to loop-based string concatenation, you can write the variable to the client as follows:
echo "var myArray = [];"
...and do the following for each data row:
echo "myArray.push($db_data);"
This is effective, though not quite as clean as the previous approach. You will end up with code similar to the following:
var myArray = [];
myArray.push(3);
myArray.push(5);
myArray.push(1);
alert(myArray); // will display "3, 5, 1"
My apologies for not being too familiar with PHP, but this is something that can be done with any server-side language.
Answer 1: yes, it can be done.
Answer 2: Here's how:
$js_array = "[";
$result = mysql_query("some query of yours");
while( $row=mysql_fetch_array($result, MYSQL_NUM) ) {
$js_array .= $row[0]; // assuming you just want the first field
// of each row in the array
$js_array .= ",";
}
$js_array{ strlen($js_array)-1 } = ']';
echo "var db_array = $js_array ;";
Cheers!
Collect the values in an array and convert it to JSON with json_encode
:
$array = array();
while ($row = mysql_fetch_assoc($result)) {
$array[] = $row['key'];
}
echo 'var array = '.json_encode($array).';';
<script language="javascript1.2">
var arr = new array(<?php
$result = mysql_query("select .... ");
$count = mysql_num_rows($result);
if($count>0){
for( $i=0;$i<$count-1;$i++) {
$row = mysql_fetch_row($result);
echo $row[0],',';
}
$row = mysql_fetch_row($result);
echo $row[0],',';
}
?>);
</script>