php - Javascript 与 PHP 和 MySQL 未定义

标签 php javascript mysql database

我有 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:

http://php.net/manual/en/function.mysql-fetch-array.php

关于php - Javascript 与 PHP 和 MySQL 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15224854/

相关文章:

javascript - 如何在 sequelize 中实现此 SQL 查询(多个连接和多个 AND/OR)

php - 一次插入多行。这怎么能缩短呢?

php - 如何检测和删除不必要的 xmlns :<something> attributes in PHP DOM?

php - PHP 无法读取大型 XML 文件

php - 从 MySQL 数据库获取数据后,从第 n 行获取列数据并分配给变量

javascript - 使 Bootstrap 列从屏幕右侧进入

php 中的 php 以包含 wordpress 自定义字段

javascript - 类型和 OO 耦合了吗?

php - MySQL突然连接过多

mysql - 来自不同表的计数补充了来自子结果的另一个计数