PHP MySQL显示数据库基于选择的选项和onclick

Posted

技术标签:

【中文标题】PHP MySQL显示数据库基于选择的选项和onclick【英文标题】:PHP MySQL display database based on option chosen and onclick 【发布时间】:2016-12-19 00:31:59 【问题描述】:

我需要选择一个选项(书籍类别),然后搜索数据库以找到该类别的所有书籍,并将数据库显示为表格。

我可以在这段代码中使用 htmljavascriptphpmysql

这是 HTML 代码:

<p>
            <select name="genre" size="1">
                <option value='0' id='AA'>Art & Architecture</option>
                <option value='1' id='BG'>Biography</option>
                <option value='2' id='CH'>Children</option>
                <option value='3' id='DR'>Drama</option>
                <option value='4' id='ER'>Erotica</option>
                <option value='5' id='HS'>History</option>
                <option value='6' id='ML'>Military</option>
                <option value='7' id='MU'>Music</option>
                <option value='8' id='NE'>Non-English</option>
                <option value='9' id='NV'>Novels</option>
                <option value='10' id='OC'>Occult</option>
                <option value='11' id='PS'>Philosophy</option>
                <option value='12' id='PG'>Photography</option>
                <option value='13' id='PT'>Poetry</option>
                <option value='14' id='PE'>Politics & Economics</option>
                <option value='15' id='RG'>Religion</option>
                <option value='16' id='SE'>Science & Engineering</option>
                <option value='17' id='SP'>Sport</option>
                <option value='18' id='TE'>Travel & Exploration</option>
            </select>
        <input type="submit" value="Search" onClick="">
    </p> 

这是 PHP 和 MySQL 代码:

<?php 
        $mysqli = new mysqli('localhost','root','','bookstore');
        if(mysqli_connect_errno())
        
            $problem = mysqli_connect_error();
            echo "Error opening database";
            die ($problem);
        
        $genre = getElementByName('genre');
        $query = "SELECT category(*) FROM book_list WHERE category=$genre"; 

        echo "<h2>These are the books available</h2>";
        // Execute Query
        $result = $mysqli->query($query);
        // echo "<table border="1">";
            while($row = $result->fetch_array(mysql_query))
            
                $Title = $row["Title"];
                $Author = $row["Author"];
                $Price = $row["Price ($)"];

                echo "<tr><td>$Title</td><td>$Author</td><td>$Price</td></tr>";
                echo "</table>";
            
        $result->close();
    ?>

任何想法哪里出错了?

P.S.:PHP 超级新手,所以请使用简单的语言和解释。谢谢!

【问题讨论】:

显示你的 getElementByName getElementByName 你在你的 php 文件中创建了这个函数吗? 仅供参考,有一个内置的 javascript 函数,也称为 getElementsByName,所以请确保您不会对此感到困惑.. getElementByName 是通过 JavaScript 实现的,它不是函数 你不能从 PHP 调用客户端 javascript 函数 【参考方案1】:

您似乎在这里混淆了 php 和 javascript (jquery) 之间的内容.. 不过,我为您的查询得出了以下结论..

创建了一个test.php文件

<script   src="https://code.jquery.com/jquery-3.1.0.min.js"   integrity="sha256-cCueBR6CsyA4/9szpPfrX3s49M9vUU5BgtiJj06wt/s="   crossorigin="anonymous"></script>

<script>

$(document).ready(function()
    $("#genre").on('change', function postinput()
        var genre = $(this).val(); // this.value
        $.ajax(
            url: 'test2.php',
            data:  genre: genre ,
            type: 'post'
        ).done(function(responseData) 
            console.log('Done: ', responseData);
            $("#your_html_response").html(responseData);
        ).fail(function() 
            console.log('Failed');
        );
    );
);

</script>

<p>
            <select name="genre" id="genre" size="1">
                <option value='0' id='AA'>Art & Architecture</option>
                <option value='1' id='BG'>Biography</option>
                <option value='2' id='CH'>Children</option>
                <option value='3' id='DR'>Drama</option>
                <option value='4' id='ER'>Erotica</option>
                <option value='5' id='HS'>History</option>
                <option value='6' id='ML'>Military</option>
                <option value='7' id='MU'>Music</option>
                <option value='8' id='NE'>Non-English</option>
                <option value='9' id='NV'>Novels</option>
                <option value='10' id='OC'>Occult</option>
                <option value='11' id='PS'>Philosophy</option>
                <option value='12' id='PG'>Photography</option>
                <option value='13' id='PT'>Poetry</option>
                <option value='14' id='PE'>Politics & Economics</option>
                <option value='15' id='RG'>Religion</option>
                <option value='16' id='SE'>Science & Engineering</option>
                <option value='17' id='SP'>Sport</option>
                <option value='18' id='TE'>Travel & Exploration</option>
            </select>
    </p>

    <div id="your_html_response">

    </div>

在上面,我包含了一个 jquery 库并使用下拉列表的 onchange 函数将值发布到 test2.php 文件..

你也可以看到空白的&lt;div id="your_html_response"&gt;&lt;/div&gt;,它将添加来自test2.php文件的响应中的数据

还删除了&lt;input type="submit" value="Search" onClick=""&gt;,因为您没有在代码中创建表单。

创建test2.php文件

<?php


        $mysqli = new mysqli('localhost','root','','bookstore');
        if(mysqli_connect_errno())
        
            $problem = mysqli_connect_error();
            echo "Error opening database";
            die ($problem);
        
        $genre = $_POST['genre'];
        $query = "SELECT category(*) FROM book_list WHERE category=$genre";

        $html_response = "<h2>These are the books available</h2>";
        // Execute Query
        $result = $mysqli->query($query);
        $html_response .= "<table border='1'>";
            while($row = $result->fetch_array(mysql_query))
            
                $Title = $row["Title"];
                $Author = $row["Author"];
                $Price = $row["Price ($)"];

                $html_response.= "<tr><td>$Title</td><td>$Author</td><td>$Price</td></tr>";

            
            $html_response .= "</table>";


        $result->close();
        echo $html_response;
    ?>

在上面,我从下拉列表中获取了发布的值,并连接了一个数据库并使用 mysqli 查询返回了一个记录(如果有的话)。我在这里以 html 格式返回了响应 ..

如果你看到,在 test.php 中你可以找到这段代码

done(function(responseData) 
            console.log('Done: ', responseData);
            $("#your_html_response").html(responseData);
    

其中我使用了$("#your_html_response").html(responseData);,它添加了我们从 test2.php 文件中获得的响应中的数据

希望这能解决您的困惑。

【讨论】:

谢谢!但有更简单的方法吗?我不允许使用 jquery...

以上是关于PHP MySQL显示数据库基于选择的选项和onclick的主要内容,如果未能解决你的问题,请参考以下文章

获取选择菜单以根据 MySQL SELECT 结果动态显示特定的选择选项

PHP显示中文乱码

选择选项时自动加载选项 PHP/MySQL

使用 PHP 和 mySql 从下拉菜单中选择选项

使用 PHP 和 HTML 选择选项在另一个 mysql 查询中使用数组数据

[使用PHP从数据库填充复选框-仅选中最后一个选项