Jump to content

Recommended Posts

hi all,

 

I have a database which stores years. 1 column with many rows for simplicity reasons. Something like 1970,1980,2003 etc...

 

i have a javascript function that gets these variables and write the results into page.

the place that i stuck is, i cannot able to put each variable and show each result. I know there must be a for or while loop for javascipt or for php but couldn't manage to do.  :(

 

that means : How should i put php variables that comes form db, in an array, than use the javascript function for each of them and write the results.

 

below is the code.

<?php 
$conn = mysql_connect("localhost", "root", "****");

mysql_select_db("test") or die ("mysql_error()");

$list = mysql_query("select * FROM years");

while ($row = mysql_fetch_array($list))
{
$years =  $row['years'];
echo "<br>";
echo "<div id=\"yeardiv\"></div>";
echo "
<SCRIPT TYPE=\"text/javascript\" LANGUAGE=\"JavaScript\">
dbYear = new Date($years);// try to put php results.. 
	function calcYear(){
			yearNow = new Date();
			result = dbYear.getYear() - yearNow.getYear();
			delete yearNow;

			if(result < 1975){
			document.getElementById('yeardiv').innerHTML=\"this year is lower!\";
			} else {
			document.getElementById('yeardiv').innerHTML=\"this year is higher!\";
		}
	}
window.onload=function(){calcYear();}
</script>
";
}
?>

 

Thanks a lot!

 

Link to comment
https://forums.phpfreaks.com/topic/52001-php-variables-into-javascript-function/
Share on other sites

Is there a reason you want to use javascript to display the records to the page? Why not do it with PHP? PHP and Javascript can't interact with each other in the manner you have above. PHP first creates the page. Once that is complete, the page is delivered to the browser. If any javascript exists in the page, it will then be run by the browser. In your code above $year would have no value within the javascript.

 

Here is how you could do it within PHP:

<?php 
$conn = mysql_connect("localhost", "root", "****");

mysql_select_db("test") or die ("mysql_error()");

$list = mysql_query("select * FROM years") or die ("mysql_error()");

if (!mysql_num_rows()) {

    echo "There were no results.";

} else {
    echo "<br><div id=\"yeardiv\">";
    $currentYear = date("Y");

    while ($row = mysql_fetch_array($list)) {

        $year =  $row['years'];
        if ( ($year-$currentYear) < 1975 ) {
            echo "$year: This year is lower!";
        } else {
            echo "$year: This year is higher!";
        }
    }
    echo "</div>";
}
?>

 

If you really need to do this in Javascript, that can be done as well.

thanks for your reply,

 

actually yes, there is a reason. I want to use the ability of javascript to write a timer,for each of the results.Like a countdown clock.

For example in database there will be appoinment dates in date format and javascript writes each timer for each appointment in the same page.

I don't think php handle this but can only populate the javascript function array. That's the way i think of course :)

am i right?

 

Is there a reason you want to use javascript to display the records to the page? Why not do it with PHP? PHP and Javascript can't interact with each other in the manner you have above. PHP first creates the page. Once that is complete, the page is delivered to the browser. If any javascript exists in the page, it will then be run by the browser. In your code above $year would have no value within the javascript.

 

Here is how you could do it within PHP:

<?php 
$conn = mysql_connect("localhost", "root", "****");

mysql_select_db("test") or die ("mysql_error()");

$list = mysql_query("select * FROM years") or die ("mysql_error()");

if (!mysql_num_rows()) {

    echo "There were no results.";

} else {
    echo "<br><div id=\"yeardiv\">";
    $currentYear = date("Y");

    while ($row = mysql_fetch_array($list)) {

        $year =  $row['years'];
        if ( ($year-$currentYear) < 1975 ) {
            echo "$year: This year is lower!";
        } else {
            echo "$year: This year is higher!";
        }
    }
    echo "</div>";
}
?>

 

If you really need to do this in Javascript, that can be done as well.

Here you go:

 

<?php 
$conn = mysql_connect("localhost", "root", "****");
mysql_select_db("test") or die ("mysql_error()");
$list = mysql_query("select * FROM years") or die ("mysql_error()");

if (!mysql_num_rows()) {

    echo "There were no results.";

} else {

    echo "<html><head>\n";
    echo "<script type=\"text/javascript\">\n";

    //Create the array in javascript
    echo "  yearAry = new Array();\n";

    $counter = 0;
    while ($row = mysql_fetch_array($list)) {

        echo "  yearAry[$counter] = $row[years];\n";
        $counter++;
    }

    echo "  today = new Date();\n";
    echo "  yearNow = today.getFullYear()\n";


    //Create the js function
    echo "  function calcYear(){\n";
    echo "    divObj = document.getElementById('yeardiv');\n";
    echo "    for (i=0; i<yearAry.length; i++) {\n";
    echo "      if ( (yearAry[i]-yearNow) < 1975 ) {\n";
    echo "        txt = 'This year is lower!';\n";
    echo "      } else {";
    echo "        txt = 'This year is higer!';\n";
    echo "      }\n";
    echo "      divObj.innerHTML = divObj.innerHTML + '<br>' + yearAry[i] + ': ' + txt;\n";
    echo "    }\n";
    echo "  }\n";

    echo "  window.onload=function(){calcYear();}\n";
    echo "</script>\n";

    echo "</head><body>\n";
    echo "<br><div id=\"yeardiv\"></div>\n";
    echo "</body></html>\n";
}

?>

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.