javascript - 选择下拉列表时生成更多 MYSQL 数据库结果

标签 javascript php mysql

希望能帮到你

我想要一个下拉列表来搜索我的 mysql 数据库并显示用户的名字和姓氏。然后,您可以选择任何名称,它将生成其余的成员(member)详细信息(即注册日期、上次登录日期等)。

我的下拉列表工作正常,但我的问题来自生成其余详细信息的下一步。使用下面的代码,它仅显示最后一个注册用户的详细信息,并且当我更改下拉菜单中的名称时不会更改。

我很确定我需要 Javascript 来帮助完成这项工作,但由于我是 PHP/MYSQL 的初学者,任何对我来说正确方向的建议都会很棒。谢谢

这是搜索我的数据库并将名字和姓氏放入下拉列表中的代码

$sql = "SELECT first_name,last_name FROM registration_tbl";
$query = mysqli_query($dbc, $sql);
echo '<select name="name" style="width: 400px">';
while ($row = mysqli_fetch_assoc($query)){
    $firstname = $row['first_name'];
    $lastname = $row['last_name'];
    echo'<option>' . $firstname . " " . $lastname . '</option>';
}
echo '</select> <p>';

上面的代码工作正常,但下面的代码是我遇到的困难

$sql = "SELECT * FROM registration_tbl WHERE first_name = '".$firstname."'";
$query = mysqli_query($dbc, $sql);
while($row = mysqli_fetch_array($query)){
    echo "ID: " . " " . $row[0] . "<br>" . 
        "Name: " . $row[1] . " " . $row[2] . "<br>" . 
        "Company: " . $row[3] . "<br> " . 
        "Email: " .$row[4] . "<br> " . 
        "Date of registration: " . $row[6] . "<br> " . 
        "Last login:  " .$row[7] . "<br>" . 
        "Admin/User: " .$row[8] . "<p>";
}

最佳答案

如果你不想使用AJAX动态加载内容,你需要一个表单来提交数据,你的问题是在你的第一个循环之后,$firstname是最后一个加载到的用户,以使你的代码工作,你需要一个表格。

只需将选择放入表单中并添加一个按钮

    <form action="mypage.php" method="get">
    <select name="name" style="width: 400px">
    <?php
    $sql = "SELECT first_name,last_name FROM registration_tbl";
    $query = mysqli_query($dbc, $sql);
    while ($row = mysqli_fetch_assoc($query)){
        $firstname = $row['first_name'];
        $lastname = $row['last_name'];
        echo'<option>' . $firstname . " " . $lastname . '</option>';
    }
    ?>

</select>
<input type="submit" value="Load User Data">
</form>

然后在 mypage.php 中您需要检查表单是否已提交,并显示用户详细信息。

<?php
if(isset($_GET["name"]))  {
   //this form is posted, show user details
   //$firstname = $_GET["name"]; <--- SQL Injection enabled here!!
   $firstname = mysqli_real_escape_string($_GET["name"]); // please try to avoid SQL injection!
   //your code continues here
   $sql = "SELECT * FROM registration_tbl WHERE first_name = '".$firstname."'";
   $query = mysqli_query($dbc, $sql);
   while($row = mysqli_fetch_array($query)){
      echo "ID: " . " " . $row[0] . "<br>" . 
        "Name: " . $row[1] . " " . $row[2] . "<br>" . 
        "Company: " . $row[3] . "<br> " . 
        "Email: " .$row[4] . "<br> " . 
        "Date of registration: " . $row[6] . "<br> " . 
        "Last login:  " .$row[7] . "<br>" . 
        "Admin/User: " .$row[8] . "<p>";
   }

}

最后一点,如果您不希望用户名出现在查询字符串中,请将表单操作更改为 post,并使用 $_POST["name"] 获取变量

编辑:如果您希望表单使用 javascript 自动发布,请将其添加到您的选择定义中:

<select name="name" style="width: 400px" onchange="this.form.submit()">

但请记住,很多用户阻止 JavaScript,因此这不起作用。

关于javascript - 选择下拉列表时生成更多 MYSQL 数据库结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25304663/

相关文章:

javascript - 如何检查firebase中的电子邮件是否在React Native中经过验证?

javascript - angularjs ng-repeat cascading Dropdown不更新

php - 通过PHP将日期值插入MySQL

javascript - PDF.JS:使用 ArrayBuffer 或 Blob 而不是 URL 呈现 PDF

javascript - 如何在 React Native 应用程序中显示超链接?

php - 如何在变量为真的 PHP 中返回 X 结果

php cURL 操作在 120308 毫秒后超时,接收到 -1 字节中的 X

PHP使用id统计其他表的记录

MySQL:将数据插入表中的行子集

java - Spring 3 DataSourceTransactionManager 在将事务获取到 MySQL 时偶尔超时