数据库组合框用值填充输入框,然后在新的浏览器窗口中打开 URL
Posted
技术标签:
【中文标题】数据库组合框用值填充输入框,然后在新的浏览器窗口中打开 URL【英文标题】:Database combobox fill input box with value then open the URL in new browser window 【发布时间】:2018-02-03 04:03:41 【问题描述】:我一直在四处搜索,并且观看了几个视频,但我无法获得我正在寻找的结果。
-
我正在尝试通过使用 php 的数据库来填充 webname 的组合框。在数据库中,我有 3 个字段:webid、webname 和 weburl。
当我从下拉列表中选择一个项目时,我想要一个输入框来显示相应 webname 的 URL。
拥有一个按钮,单击后将在单独的浏览器窗口中打开显示的 URL。
我必须正确填充组合框,但是当我更改下拉菜单时,我无法获得正确的 URL。
我的 Index.php
<body id="top">
<?php
$cn=mysql_connect("dbHost","dbUser","dbPW") or die(mysql_error());
mysql_select_db("dbName",$cn) or die(mysql_error());
$sql = "SELECT * FROM tblName ";
$result = mysql_query($sql);
?>
<select id="loads" name="Loads" size=1 style="position:absolute;left:133px;top:10px;width:81px;height:22px;z-index:1;">
<?php
while($ri = mysql_fetch_array($result))
echo "<option value=" .$ri['webname'] . ">" . $ri['webname'] . "</option>";
echo "</select> "
?>
<input type="text" id="ShipperName" name="ShipperName" value="">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
$(document).ready(function() /* PREPARE THE SCRIPT */
$("#loads").change(function() /* TRIGGER THIS WHEN USER HAS SELECTED DATA FROM THE SELECT FIELD */
var WebName = $(this).val(); /* STORE THE SELECTED LOAD NUMBER TO THIS VARIABLE */
$.ajax( /* START AJAX */
type: "POST", /* METHOD TO USE TO PASS THE DATA */
url: "action.php", /* THE FILE WHERE WE WILL PASS THE DATA */
data: "WebName": WebName, /* THE DATA WE WILL PASS TO action.php */
dataType: 'json', /* DATA TYPE THAT WILL BE RETURNED FROM action.php */
success: function(result)
$("#ShipperName").val(result.shippername);
/* $("#ShipperAddr").val(result.shipperaddr); */
); /* END OF AJAX */
); /* END OF CHANGE #loads */
);
</script>
</body>
</html>
我的 action.php
<?php
if(!empty($_POST["WebName"]))
/* RE-ESTABLISH YOUR CONNECTION */
$con = new mysqli("dbHost","dbUser","dbPW","dbTable");
/* CHECK CONNECTION */
if (mysqli_connect_errno())
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
/* PREPARE YOUR QUERY */
$stmt = $con->prepare("SELECT weburl, webid FROM tblName WHERE webname = ?");
$stmt->bind_param("i", $_POST["WebName"]); /* PARAMETIZE THIS VARIABLE TO YOUR QUERY */
$stmt->execute(); /* EXECUTE QUERY */
$stmt->bind_result($shippername, $shipperaddress); /* BIND THE RESULTS TO THESE VARIABLES */
$stmt->fetch(); /* FETCH THE RESULTS */
$stmt->close(); /* CLOSE THE PREPARED STATEMENT */
/* RETURN THIS DATA TO THE MAIN FILE */
echo json_encode(array("shippername" => $shippername, "shipperaddr" => $shipperaddress));
/* END OF IF NOT EMPTY loadnumber */
?>
【问题讨论】:
但是你遇到了什么问题? 无论我选择什么,文本框都显示相同的 URL。 我在这里找到了一篇与您的问题类似的好文章phppot.com/jquery/… @sForSujit 谢谢。这是一个很好的例子,因为它使用外键链接数据。我正在尝试使用 1 个表来完成此操作。我将继续过滤代码,看看我能想出什么。 一定要关注@ftvKing 【参考方案1】:我认为您正在寻找用 URL 填充文本框,但是您正在将 ShipperName 分配给文本框,如下所示:
$("#ShipperName").val(result.shippername);
这应该是:
$("#ShipperName").val(result.weburl);
【讨论】:
我试过了,但没用。托运人名称是从这里传回的`将此数据返回到主文件 */ echo json_encode(array("shippername" => $shippername, "shipperaddr" => $shipperaddress));` 您是否调试过您的代码,并查看结果中是否包含所有值? 不是控制台,我的意思是放一个调试器并检查你是否得到了值 我在 DW 中编写和测试,但我试图在 Visual Studio 代码中运行调试器但没有成功。我做了更多的故障排除,我在输入框中得到的值似乎是表中的记录。我删除了一些记录以确认它。以上是关于数据库组合框用值填充输入框,然后在新的浏览器窗口中打开 URL的主要内容,如果未能解决你的问题,请参考以下文章