使用我的数据库中的选定条目在我的网页中创建下拉列表

时间:2015-07-23 09:47:14

标签: php mysql database drop-down-menu command-line

我正在创建一个网页,其中一个人输入一个名称,并在该名称下注册的市场显示在下拉列表中。 这是我的代码的一部分

            <form name="login" action="index_submit" method="get" accept-charset="utf-8">
        <ul>
            <li>
                <label for="seller">Seller Name/ID</label>
                <input type="text" id="username" placeholder="Seller Username/ID" required>
            </li>
             <?php

             ?>
            <li>
                <label for="marketplace">Choose a marketplace</label>
                <select name="url" onchange="menu_goto(this.form)">
                <?php
                    include ('config.php');
                    $username = $_POST['username'];
                    $query = "SELECT Marketplace FROM Details WHERE Seller_name='$username' OR Seller_ID='$username'";
                    $result = mysql_query($dbcon, $query) or die('error getting data');
                    while ($row = mysql_fetch_array($result)){
                    echo "<option value="marketplace1">" . $row['Marketplace'] . "</option>";
                    }
                ?>
                </select>
            </li>

但是当我运行.php文件时,我得到一个屏幕,结果是遇到PHP脚本,它下面的html代码保持不变。我是新来的。我无法在代码中检测到错误(如果有的话)。 config.php文件只是与我的数据库建立的连接(不再包含其中的代码)。另外,如果我从代码中删除php脚本,然后显示我的网页,我的其余代码工作正常。我猜这个问题是我的PHP脚本。

编辑:我使用了以下某人的回答: 在用户名输入字段上,输入一个javascript函数,然后使用ajax调用服务器端代码,然后将其结果作为选项附加到url字段。喜欢以下。

    <form name="login" action="index_submit" method="get" accept-charset="utf-8">
    <ul>
        <li>
            <label for="seller">Seller Name/ID</label>
            <input type="text" onchange="ajaxCall(this.value)" id="username" placeholder="Seller Username/ID" required>
        </li>
         <?php

         ?>
        <li>
            <label for="marketplace">Choose a marketplace</label>
            <select name="url" onchange="menu_goto(this.form)">
            </select>
        </li>

javascript函数应该是这样的。

          <script>
           function ajaxCall(val)
            {
          $.post('abc.php',{'username':val},function(res){
           $.('#url').html(res);
           });
           }
        </script>

abc.php将会跟随。

                <?php
                include ('config.php');
                $username = $_POST['username'];
                $query = "SELECT Marketplace FROM Details WHERE Seller_name='$username' OR Seller_ID='$username'";
                $result = mysql_query($dbcon, $query) or die('error getting data');
                $res='';
                while ($row = mysql_fetch_array($result)){
                $res .='<option value="marketplace1">' . $row['Marketplace'] . '</option>';
                }
             echo $res;
             ?>

我的整个代码现在正在执行,但我仍然没有在我的下拉列表中获得任何值。(它显示为空白,是的,我的数据库中有值)。

2 个答案:

答案 0 :(得分:2)

echo "<option value="marketplace1">" . $row['Marketplace'] . "</option>";
                    ^            ^ ---------> Not escaped

尝试

echo "<option value=\"marketplace1\">" . $row['Marketplace'] . "</option>";

或者

echo '<option value="marketplace1">' . $row['Marketplace'] . '</option>';

希望它有所帮助。

PS:看看MySQLi和/或PDO,因为不推荐使用mysql函数。

编辑:如果没有错误,你有错误报告吗?如果没有插入

error_reporting(E_ALL);

进入你的文档,你应该得到这样的东西:

Parse error: syntax error, unexpected 'marketplace1' (T_STRING), expecting ',' or ';' in C:\xampp\htdocs\testing\index.php on line 2

答案 1 :(得分:1)

假设您已经制作了@yaso

建议的HTML内容

像这样更改你的代码,它应该设置错误显示在浏览器窗口上。

我也觉得你用一个像

这样的网址发布这个

example.com/myscript.php?username=OneThatExists

<?php
    error_reporting(E_ALL);
    ini_set('display_errors', 1);

    include ('config.php');

    $username = $_POST['username'];
    $query = "SELECT Marketplace FROM Details WHERE Seller_name='$username' OR Seller_ID='$username'";
    $result = mysql_query($query,$dbcon) or die('error getting data');

    while ($row = mysql_fetch_array($result)){
        echo "<option value="marketplace1">" . $row['Marketplace'] . "</option>";
    }
?>

你应该真的测试一个参数实际上是这样传递的。您可以撰写sanityCheck()

<?php
    error_reporting(E_ALL);
    ini_set('display_errors', 1);

    include ('config.php');

    if ( isset($_POST['username']) ) {

        $_POST['username'] = sanityCheck($_POST['username']);

        $query = "SELECT Marketplace 
                  FROM Details 
                  WHERE Seller_name='{$_POST['username']' 
                     OR Seller_ID='{$_POST['username']}'";

        $result = mysql_query($query, $dbcon) or die('error getting data');

        while ($row = mysql_fetch_array($result)){
            echo "<option value="marketplace1">" . $row['Marketplace'] . "</option>";
        }
    } else {
        // do whatever you want to do if no parameter was entered
    }
?>