我有 2 个 PHP 页面...
INDEX.PHP 使用此代码:
<form method="post" action="" name="f1">
<input type="text" name='p_name' size='50'><br>
<input type="text" name='p_name2' size='50'><br>
<a href="javascript:void(0);" NAME="My Window Name" title=" My title here " onClick=window.open("index2.php","Ratting","width=550,height=170,left=150,top=200,toolbar=1,status=1,");>Click here to open the child window</a>
</form>
和INDEX2.PHP 使用此 JavaScript 代码:
<script langauge="javascript">
function post_value()
{
opener.document.f1.p_name.value = document.frm.c_name.value;
opener.document.f1.p_name2.value = document.frm.c_name2.value;
self.close();
}
</script>
还有这个 PHP/HTML:
<form name="frm" method="post" action="">
<?php
$sql="SELECT * from customer";
$rs=mysql_query($sql,$conn) or die(mysql_error());
while($result=mysql_fetch_array($rs))
{
echo '<input type="text" name="c_name" size="50" value="'.$result["sequence"].'" /><br>
<input type="text" name="c_name2" size="50" value="'.$result["company"].'" /><br>
<input type=button value=\'Submit\' onclick=\'post_value();\'><br><br>';
}
?>
</form>
基本上,当您转到index.php时,单击链接打开弹出窗口index2.php,然后列出数据库中的客户并为每个人提供2个文本框 - 一个用于客户的序列/ID另一个用于公司名称,每行一个提交按钮。
当按下按钮时,它会运行 JavaScript 函数 post_value();
,它将数据库/子弹出窗口 (index2.php) 中的值放入父窗口 (索引.php)
当我运行此代码时,它只是将“未定义”一词放入父页面的方框中,但是如果我删除 php 中的 while 循环,它只显示客户数据库中的一行,它工作正常。
它就像不喜欢 php 中的 while 循环,但我不知道为什么。 任何帮助将不胜感激。
最佳答案
编辑 - 我刚刚意识到你的 while 循环将生成如下所示的内容:
<input type="text" name="c_name" size="50" value="A1" /><br>
<input type="text" name="c_name2" size="50" value="B1" /><br>
<input type=button value=\'Submit\' onclick=\'post_value();\'><br><br>
<input type="text" name="c_name" size="50" value="A2" /><br>
<input type="text" name="c_name2" size="50" value="B2" /><br>
<input type=button value=\'Submit\' onclick=\'post_value();\'><br><br>
<input type="text" name="c_name" size="50" value="A3" /><br>
<input type="text" name="c_name2" size="50" value="B3" /><br>
<input type=button value=\'Submit\' onclick=\'post_value();\'><br><br>
这不起作用,因为同一表单中有多个名为“c_name”和“c_name2”的元素。我认为您想要做的是将表单元素放入 while 循环中,如下所示:
<?php
$sql="SELECT * from customer";
$rs=mysql_query($sql,$conn) or die(mysql_error());
$ctr = 0;
while($result=mysql_fetch_array($rs))
{
echo '<form name="frm' . $ctr . '" method="post" action="">
<input type="text" name="c_name" size="50" value="'.$result["sequence"].'" /><br>
<input type="text" name="c_name2" size="50" value="'.$result["company"].'" /><br>
<input type=button value=\'Submit\' onclick=\'post_value(' . $ctr . ');\'><br><br>'
</form>';
$ctr++;
}
?>
请注意我如何创建 $ctr 变量,以便您可以识别每个表单以及如何将其传递到 post_value。您需要使用它来获取正确的表单,如下所示:
<script langauge="javascript">
function post_value(ctr)
{
opener.document.f1.p_name.value = document.forms["frm" + ctr].c_name.value;
opener.document.f1.p_name2.value = document.forms["frm" + ctr].c_name2.value;
self.close();
}
</script>
默认情况下,mysql_fetch_array 返回一个带有数字键(即 0、1、2 等)的数组。如果您想通过列名检索记录,则需要使用:
while ($result = mysql_fetch_array($rs, MYSQL_ASSOC))
请看这里的示例 3:
关于php - Javascript 与 PHP 和 MySQL 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15224854/