协助循环中包含的javascript函数(PHP)

I am working on a project where I have divisions stored in mysql database with the "division id" and the "division name";

what I want to have is so that i use php to do a "while" loop and go through all the divisions;

then for each division it creates a button which will trigger a javascript function…

I have done a lot of testing on this so I know certain parts are working…; here is my code:

<p id="id57512">How are you?</p>

<script>
var g_myobj = {};
</script>

<?php

$result_g1 = mysql_query("SELECT * FROM divisions");

while($row = mysql_fetch_array($result_g1, MYSQL_BOTH))
{
$div_id=$row[div_id];
$div_name=$row[div_name];

$button_id="b";
$button_id.=$div_id;

$function_id="f";
$function_id.=$div_id;

?>

<button id=<?php echo $button_id; ?>><?php echo $div_name; ?></button>

<script>
var f_id='<?php echo $function_id; ?>';
var b_id='<?php echo $button_id; ?>';
var div_id='<?php echo $div_id; ?>';

var newFieldName = f_id;
var newFieldValue = function()    {document.getElementById("id57512").firstChild.nodeValue=gman_code1(div_id);};
g_myobj[newFieldName] = newFieldValue;


var gman_code1 = function(number) {
var result1 = number*2;
console.log(result1);
return result1;//add return statement
}

//define the behavior

document.getElementById(b_id).addEventListener("click", g_myobj[f_id] , false);

</script>

<?php
}

the function names need to be a variable; but I figured out how to do that by making it an object; and so can access the different functions that way…

I basically tested this all when it was not in a loop; where I manually had it do everything twice (even creating the functions in the object) and it all worked fine…

basically when you click on a button it is supposed to send a number to that "p" container and multiply it by 2

when I did it manually and not in loop i just had it create the object g_myobj first and then just started adding items to the object…

but now that i am doing this in a loop - I felt I could not have the statement that creates the empty object in the loop or it would just keep recreating it; so I went above the loop and had the object created there in its own "script" tags all by itself…

that part may be a problem with this, not sure at all…

another potential problem is that I am not sure if I can do all this in a loop like this

it is a "php loop" and so maybe this just all cannot be done in a loop like that…

What is going on is the first button works but none of the others do…

So, I am hoping someone can advise me on what I am doing wrong on this…

Thanks so much...

If all you are trying to do is send a number to <p> and multiply it by 2, see this one liner function. I assume you are trying to accomplish more than just the multiplying thing otherwise you probably would have just done a simple function like below...

Also, I'm sure you will get lots of comments on it, but you should not be using the mysql_ functions anymore. They are both deprecated and potentially unsafe. You should use mysqli or PDO prepared statements.

On your button, you should probably put quotes around the id="yadayada" instead of id=yadayada. jQuery may be a good option for your js to handle functions or what-have-you.

<p id="id57512">How are you?</p>
<?php

    $result_g1 = mysql_query("SELECT * FROM divisions");

    while($row = mysql_fetch_array($result_g1, MYSQL_BOTH)) {
            $div_id         =   $row[div_id];
            $div_name       =   $row[div_name];

            $button_id      =   "b$div_id";
            $function_id    =   "f$div_id"; ?>

    <button id="<?php echo $button_id; ?>" onClick="MyRadFunction('<?php echo $div_id; ?>')">

<?php echo $div_name; ?></button>

<?php   } ?>

<script>

     function MyRadFunction(DivId) {
            $("#id57512").html(DivId*2);
        //  var NewNum  =   $("#id57512").text();
        }
</script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/themes/smoothness/jquery-ui.css" />
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/jquery-ui.min.js"></script>

When rendering your button, you should wrap the id in quotes, e.g.

<button id='<?php echo $button_id; ?>'><?php echo $div_name; ?></button>