Re: Creating a javascript array from database data

From: Date: Thu, 16 Aug 2001 08:34:15 +0000
Subject: Re: Creating a javascript array from database data
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-62996@lists.php.net to get a copy of this message
Yeah thanks Tim. 5:30 in the afternoon does bad things to my logical thinking. Not the best time to try and learn PHP :) Neil Tim Ward wrote: > I'm not sure if this is the problem but it is an important point. print > "\"$text\""; does not output anything to screen, as with all prints and > echos it outputs it to html (in this case within a js function definition). > Try viewing the source produced. > > Tim > > ---------- > From: Neil Freeman [SMTP:neil.freeman@asa.co.uk] > Sent: 15 August 2001 18:10 > To: Sheridan Saint-Michel > Cc: php-general > Subject: Re: [PHP] Creating a javascript array from database data > > Thanks a lot for your help Sheridan, > > This now appears to work ok :) but if I remove the: > > print "\"$text\""; > > line (as it is not required), I receive errors complaining about a > syntax > error (related to what?) and that 'text' is undefined. As this line > simply > outputs the value to screen why should this cause a problem if it is > removed? > Or could it be some other problem? > > Neil > > PS: Here is my updated code: > > -------------------------- > <html> > <head> > <title>Menus test</title> > > </head> > <body bgcolor="white"> > > <?php > $dbhost = 'localhost'; > $dbuser = 'guest'; > $dbpass = 'guest'; > $dbname = 'IFE'; > $dbtable = 'menus'; > > //------ DATABASE CONNECTION --------// > mysql_connect($dbhost,$dbuser,$dbpass) > or die ("Unable to connect to database"); > > mysql_select_db($dbname) > or die ("Unable to select database"); > > $sql = "SELECT * FROM $dbtable"; > $result = mysql_query($sql); > > $number = mysql_numrows($result); > > $i = 0; > > if ($number == 0) > print "Error - No records found"; > elseif ($number > 0) > { > echo "<Script Language=\"JavaScript\">\n"; > echo "text = new Array("; > while ($i < $number) > { > $text = mysql_result($result, $i, "name"); > > $i++; > > if ($i < $number) > print ","; > else > print ")\n"; > } > echo "</Script>\n"; > } > > mysql_free_result($result); > mysql_close(); > ?> > > </body> > </html> > -------------------------- > > Sheridan Saint-Michel wrote: > > > *************************************************************** > > This message was virus checked with: SAVI 3.48 > > last updated 14th August 2001 > > *************************************************************** > > > > The thing to ALWAYS remember when working with both PHP and > > JavaScript is that PHP is Server-Side and JavaScript is > Client-Side. > > > > What this mean is practical terms is that when going from > JavaScript > > to PHP you have to submit or redirect back to the server... and > when > > going from PHP to JavaScript (Like you are trying to do here) you > > have to make sure your PHP outputs JavaScript. > > > > So instead of printing $text you need to actually print the > JavaScript... > > > > So in your case change the middle of your script to something > like: > > > > $number = mysql_numrows($result); > > > > $i = 0; > > > > if ($number == 0) > > print "Error - No records found"; > > else > > { > > echo "<Script Language=\"JavaScript\">\n"; > > echo "text = new Array("; > > while ($i < $number) > > { > > $text = mysql_result($result, $i, "name"); > > print "\"$text\""; > > $i++; > > if ($i < $number) > > print ","; > > else > > print ")\n"; > > } > > echo "</Script>\n"; > > } > > > > } > > > > Note: This is my quick *untested* fix done by modifying > > your code as little as possible. I would suggest you use > > mysql_fetch_row and use your loop to parse it rather than > > making several calls to mysql_result (especially if you are > > ever going to have more than a few entries in the DB). > > > > Sheridan Saint-Michel > > Website Administrator > > FoxJet, an ITW Company > > www.foxjet.com > > > > ----- Original Message ----- > > From: Neil Freeman <neil.freeman@asa.co.uk> > > To: PHP General <php-general@lists.php.net> > > Sent: Wednesday, August 15, 2001 11:16 AM > > Subject: [PHP] Creating a javascript array from database data > > > > > Hi there, > > > > > > Well after a few hours roaming around various websites I am at a > loss. > > > Here is what I am trying to do: > > > > > > 1) Access a MySQL database which contains 1 table > > > 2) Read the records from this table > > > 3) Store the values returned from this table into javascript > array > > > elements, ie, if I get the values "dog", "cat" and > > > "cow" back I > want > > > these stored in an array as such: > > > myArray[0] = valueReturned1 > > > myArray[1] = valueReturned2 > > > myArray[2] = valueReturned3 > > > > > > You get the idea. > > > > > > Problem being that I cannot work out how to implement the > javascript > > > section of this. At the moment my php script writes the values > returned > > > from the database to screen but I require these to be stored in > a > > > javascript array. Please can someone help me before I go mad :) > > > > > > Here is my current .php script: > > > > > > ---------------------------------------------- > > > <html> > > > <head> > > > <title>Menus test</title> > > > </head> > > > <body bgcolor="white"> > > > > > > <?php > > > $dbhost = 'localhost'; > > > $dbuser = 'guest'; > > > $dbpass = 'guest'; > > > $dbname = 'IFE'; > > > $dbtable = 'menus'; > > > > > > file://------ DATABASE CONNECTION --------// > > > mysql_connect($dbhost,$dbuser,$dbpass) > > > or die ("Unable to connect to database"); > > > > > > mysql_select_db($dbname) > > > or die ("Unable to select database"); > > > > > > > > > $sql = "SELECT * FROM $dbtable"; > > > $result = mysql_query($sql); > > > > > > $number = mysql_numrows($result); > > > > > > $i = 0; > > > > > > if ($number == 0) > > > print "Error - No records found"; > > > elseif ($number > 0) > > > { > > > while ($i < $number) > > > { > > > $text = mysql_result($result, $i, "name"); > > > print "$text"; > > > > > > $i++; > > > } > > > } > > > > > > mysql_free_result($result); > > > mysql_close(); > > > ?> > > > > > > </body> > > > </html> > > > ---------------------------------------------- > > > > > > Thanks, Neil > > -- > -------------------------------- > Email: neil.freeman@asa.co.uk > neil_freeman@yahoo.com > -------------------------------- > > -- -------------------------------- Email: neil.freeman@asa.co.uk neil_freeman@yahoo.com --------------------------------

« previous php.general (#62996) next »