在while循环中从php调用javascript

时间:2011-07-08 15:54:46

标签: php javascript

我希望有人可以帮助我,我一直在努力,我有一个来自和表格内的表格有列。它从Mysql表中检索数据。在第2列中显示当前信息,在第3列中显示更新值的表单选项,例如:

First name:  John  [Form field to update]
Date of birth: 1970-01-01 [form field to update]

我特别努力让java脚本在弹出日历中运行。如果我从html运行它它工作正常但是当我在php中执行它时我无法运行它,因为它在while循环中显示表单:

<head>
   <script src="datetimepicker_css.js"></script>
</head>
<body>

<?php

.....

$sql2="SELECT * FROM em_detail WHERE id = '$data1'";
$result2=mysql_query($sql2);

echo "<form action='upd_emp.php' method=post>";

while($row2 = mysql_fetch_assoc($result2)) {
$id_2 = $row2['id'] ;
.....

echo "<tr>";
echo "<td height=35px><strong>Date of Birth: </strong></td>";
echo "<td>$dob_2</td>";
echo "<td><input size=30 type=Text name=dob id=demo1/></td>";
echo "<td align=left><img src=images/cal.gif onclick=javascript:NewCssCal('demo1') style=cursor:pointer/></td>";
echo "      </tr>";

2 个答案:

答案 0 :(得分:2)

它不起作用,因为在循环中打印的每一行中,相应的输入具有相同的ID - demo1

HTML中的ID在所有元素中都应该是唯一的。这意味着每个打开的日历都会查找ID为demo1的输入,并始终找到相同的输入。

您需要确保每行中的输入都具有唯一ID。您可以使用您拥有的变量$id_2,或者您可以为循环的每次迭代递增一个计数器并使用它。然后,您将在id的{​​{1}}和日历触发器的<input>中使用该唯一编号。

onclick

此外,我还使用以下更改更新代码:

    输入的
  • <?php //... $counter = 0; while($row2 = mysql_fetch_assoc($result2)) { $id_2 = $row2['id'] ; ?> <tr> <td height="35"><strong>Date of Birth: </strong></td> <td><?php echo $dob_2; ?></td> <td><input size="30" type="text" name="dob_<?php echo $id_2; ?>" id="demo_<?php echo $counter; ?>"/></td> <td align="left"><img src="images/cal.gif" onclick="NewCssCal('demo_<?php echo $counter; ?>');" style="cursor:pointer"/></td> </tr> <?php $counter++; } 也应该是唯一的。
  • 您应该在HTML
  • 中使用属性值周围的引号
  • 如果没有变量,则无需回显HTML代码 - 当您想要重新使用PHP代码时,只需使用name?>
  • <?php属性中不需要
  • javascript: - 它们始终是Javascript,onclick只是一个未使用的标签。

答案 1 :(得分:0)

我认为问题是您尝试执行的代码是使用ID中的input。 ID只能在页面上使用一次,否则JavaScript不知道要使用哪个字段。

你有两个潜在的选择,第一个是使用一个类来调用日期选择器,这是我个人所做的,它的作品很有魅力。您可能需要稍微修改一下代码才能使其正常工作。

第二种是为您正在使用的每个ID字段动态生成不同的input

我希望这会对你有所帮助。

相关问题