繁体   English   中英

如何从子弹出窗口的下拉框中获取MySQL记录的多个字段,以将这些值插入父页面的多个字段中?

[英]How do I grab multiple fields of a MySQL record from dropdown box of a child popup window to insert those values in multiple fields of parent page?

我在弹出窗口中具有此功能,该弹出窗口使用数据库条目创建下拉列表。

<select name="ddlNames" id="ddlNames">
<?php
while($row = mysql_fetch_array($result)) {
?>
    <option value="<?php echo $row["vendorid"]; ?>"><?php echo $row["vendorname"]; ?></option>
<?php
}
?>
</select>
<input type="button" value="Select" onclick="SetVendor();" />

然后,此javascript将这些值插入到父页面的字段中,并同时关闭弹出窗口。

<script type="text/javascript">
function SetVendor() {
    if (window.opener != null && !window.opener.closed) {
        var vendor_name = window.opener.document.getElementById("vendor_name");
        var vendor_nameSelect = document.getElementById("ddlNames");
        var vendor_nameSelectedText = vendor_nameSelect.options[vendor_nameSelect.selectedIndex].text;
        vendor_name.value = vendor_nameSelectedText;

        var vendorid = window.opener.document.getElementById("vendorid");
        vendorid.value = document.getElementById("ddlNames").value;
    }
    window.close();
}
</script>

我已经抢了2个不同的领域。 每个选项的value参数中填充的ID号,以及每个选项的名称。

所以现在我想要第三件事,然后是第四和第五等等。 我不能只是把它放在下拉选项循环中。 不起作用。

<input type="hidden" id="street" name="street" value="<?php echo $row["street"]; ?>">

这些是我想从每个记录中获取的下一个字段。 地址字段。 街道,城市,州,邮编。

因此,对于每个下拉菜单,我想获取6个不同的值,并且从弹出窗口窗体中选择下拉菜单项之一时,这6个值应插入到父页面的6个不同输入框中。 到目前为止,我有2个值正常工作。 只是不知道该怎么做3个或更多。

更新:

如果我不使用下拉菜单怎么办? 如果我只使用带有ID的div怎么办? 而div项之一将是一个链接,当单击该链接时,将仅收集被单击的那一行的所有div值? 像这样的东西:

<?php
while($row = mysql_fetch_array($result)) {
?>
<div style="display: block; clear: both;" id="this_needs_to_be_loop">
<div id="myvendorid" style="float: left; padding-right: 10px;"><?php echo $row["vendorid"]; ?></div>
<div id="myvendorname" style="float: left; padding-right: 10px;"><a href="#" id="link"><?php echo $row["vendorname"]; ?></a></div>
<div id="mystreet" style="float: left; padding-right: 10px;"><?php echo $row["street"]; ?></div>
<div id="mycity" style="float: left; padding-right: 10px;"><?php echo $row["city"]; ?></div>
<div id="mystate" style="float: left; padding-right: 10px;"><?php echo $row["state"]; ?></div>
<div id="myzip" style="float: left; padding-right: 10px;"><?php echo $row["zip"]; ?></div>
</div>
<?php
}
?>

更新:

我的json脚本看起来像这样。 看起来不正确。

<script>var myDataBase = {"1":{"0":"1","vendorid":"1","1":"34534","vendor_no":"34534","2":"hi","vendorname":"hi","3":"3434534534","phone":"3434534534","4":"sdfsdfs@sdfsdfsd.com","email":"sdfsdfs@sdfsdfsd.com","5":null,"website":null,"6":null,"glacct":null,"7":null,"category":null,"8":"sdfsdfsdf","street":"sdfsdfsdf","9":"sdfsdfsd","city":"sdfsdfsd","10":"sdfsdf","state":"sdfsdf","11":null,"pobox":null,"12":null,"postalcode":null,"13":null,"country":null,"14":null,"description":null},"2":{"0":"2","vendorid":"2","1":"5334534","vendor_no":"5334534","2":"sfsdfsfsd","vendorname":"sfsdfsfsd","3":"78654653","phone":"78654653","4":"ggh@sdsg.com","email":"ggh@sdsg.com","5":null,"website":null,"6":null,"glacct":null,"7":null,"category":null,"8":"sfsdfsdfsdf","street":"sfsdfsdfsdf","9":"sdfsdfsdsdf","city":"sdfsdfsdsdf","10":"sdfsdfsdfsd","state":"sdfsdfsdfsd","11":null,"pobox":null,"12":null,"postalcode":null,"13":null,"country":null,"14":null,"description":null},"4":{"0":"4","vendorid":"4","1":"345342","vendor_no":"345342","2":"dgdf","vendorname":"dgdf","3":"dfgdf","phone":"dfgdf","4":"dfgdfgdf","email":"dfgdfgdf","5":null,"website":null,"6":null,"glacct":null,"7":null,"category":null,"8":"sdfsdsd","street":"sdfsdsd","9":"sdfsfsd","city":"sdfsfsd","10":"sdfsdf","state":"sdfsdf","11":null,"pobox":null,"12":null,"postalcode":null,"13":null,"country":null,"14":null,"description":null},"5":{"0":"5","vendorid":"5","1":"978765345546","vendor_no":"978765345546","2":"jfgsdfjghdfger","vendorname":"jfgsdfjghdfger","3":"54686576456","phone":"54686576456","4":"sdfjhr@dfghjkl.com","email":"sdfjhr@dfghjkl.com","5":null,"website":null,"6":null,"glacct":null,"7":null,"category":null,"8":"gdfgdf","street":"gdfgdf","9":"dfgdfgdf","city":"dfgdfgdf","10":"dfgdfgdf","state":"dfgdfgdf","11":null,"pobox":null,"12":null,"postalcode":null,"13":null,"country":null,"14":null,"description":null}};</script>

您的下拉弹出窗口必须包含所有值。 您可以使用Javascript执行此操作。

您将在PHP中获得一个获取元组的循环:

{ vendorid, vendorname, street, address, ... }

现在,您可以使用此元组创建一个下拉列表:

<option value="{$vendorid}">{$vendorname}</option>

要执行所需的操作, 需要将相同的数据保存在不同的结构中:

<?php
// This is OUTSIDE the cycle that creates the options
$database = array();   

     // This is inside the cycle that creates the options

     $option = "<option value=\"{$data['vendorid']}\">{$data['vendorname']}</option>";

     $database[$data['vendorid']] = $data;

// Now the cycle has ended. We print the data in Javascript.

print "<script>";
print "var myDataBase = ";
print json_encode($database);
print ";\n";
print "</script>";

上面定义了一个Javascript数组,该数组很像PHP数组,由于json_encode ,这些字段具有与PHP中相同的名称。

现在,在Javascript中,您将像以前一样获得供应商ID:

var vendor_id = vendor_nameSelect.options[vendor_nameSelect.selectedIndex].value;

vendor_id是现在Javascript变量myDataBase 因此,您可以执行以下操作:

window.opener.document.getElementById("streetfieldid").value
    = myDatabase[vendor_id]["street"];

window.opener.document.getElementById("addressfieldid").value
    = myDatabase[vendor_id]["address"];


...and so on.

您可以在此处查看实际使用的概念(当然,除了PHP)。 我只使用了三个字段,它们都在同一页面中,但是修改很简单。 要生成myDataBase请使用上面的PHP代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM