数据库组合框用值填充输入框,然后在新的浏览器窗口中打开 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 个字段:webidwebnameweburl。 当我从下拉列表中选择一个项目时,我想要一个输入框来显示相应 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的主要内容,如果未能解决你的问题,请参考以下文章

用值填充列(熊猫)

在 php mysql 中选择选项时用值填充输入字段

Excel VBA文本框以填充组合框

自动填充组合框 ExtJS

VB.NET 2005 - 无法绑定到新的显示成员 - 组合框 - 数组

为啥“_Blank”不会导致 URL 在新的浏览器窗口中打开?