【问题标题】:Javascript MYSQL DropdownJavascript MYSQL 下拉菜单
【发布时间】:2013-02-22 01:02:39
【问题描述】:

如果 a) 这个问题已经得到解答,我已经搜索但无法使用我找到的答案,并且 b) 我不是一个非常熟练的程序员并且正在努力学习...

为了尽量缩短...

  • 我有一个功能齐全的网站,其中包含一个可搜索和可排序的数据库(这是一个同事很久以前为我构建的,因此我特别困惑)
  • 我想添加一个从数据库填充的下拉过滤器
  • 代码引用了 javascript 和 PHP。据我了解,PHP 为我填充了表格数据,而 javascript 触发了“显示 xx 条目”过滤器和搜索框——它们都很棒

我的问题是我无法获得想要添加到工作中的下拉列表的任何代码。我可以让下拉列表填充但实际上不能过滤数据:(

<?php


$dbhost = 'localhost';
$dbuser = 'database';
$dbpass = 'password;
$dbname = 'marchmadness';
$table = 'leaderboard';

//connect to the database
$db = mysql_connect($dbhost, $dbuser, $dbpass) or die(mysql_error());

mysql_select_db($dbname) or die(mysql_error());

?>

<!DOCTYPE html>
<html lang="en">

<head>
    <title>Leaderboard</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <link rel="icon" type="image/png" href="/favicon.ico" />
   <link rel="stylesheet" type="text/css" href="assets/css/main.css">
    <link rel="stylesheet" type="text/css" href="assets/css/listing.css" media="all" />
    <script type="text/javascript" src="assets/js/jquery.min.js"></script>
    <script type="text/javascript" language="javascript" src="assets/js/jquery.dataTables.min.js"></script> 

    <script type="text/javascript">
$(document).ready(function() {
            /* This triggers the cool filtering stuff, without this it's just a normal table of data */
            $('table').dataTable({
                "iDisplayLength": 10
            });
        });

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}


}
    </script>


</head>

<body id="listing">
<div id="wrapper">

<div id="topbox" align="center">
<img src="_Images/maddnessheader.png" width="539" height="296" align="center" /></div>
&nbsp; <br/>
&nbsp; <br/>
&nbsp; <br/>
&nbsp; <br/>
&nbsp; <br/>
&nbsp; <br/>

<?
  $sql="SELECT Title FROM leaderboard"; 
$result=mysql_query($sql); 

$options=""; 

while ($row=mysql_fetch_array($result)) { 

    $id=$row["leaderboard"]; 
    $thing=$row["Title"]; 
    $options.="<OPTION VALUE=\"$id\">".$thing.'</option>';
} 
?>


<SELECT NAME=thing> 
<OPTION VALUE=0>Choose 
<?=$options?> 
</SELEC

T>

  <table align="center">

<thead>
    <tr>
        <th>Title</th>
        <th>Name</th>
        <th>Call Coding (%)</th>
        <th>FizzBack SAT Score (%)</th>

    </tr>
</thead>


<tbody>


<?php


    //get the information from the database
    $result = mysql_query("SELECT * FROM `$table`;") or die(mysql_error());

    while($row = mysql_fetch_array($result)) {
        echo '<tr>';

        // print out the data from the database. Notice how the text inside $row[] matches up with the headers in phpmyadmin

        echo '<td>' . htmlentities($row['Title']) . '</td>';
        echo '<td>' . htmlentities($row['Name']) . '</td>';
        echo '<td>' . htmlentities($row['CC']) . '</td>';
        echo '<td>' . htmlentities($row['FZB']) . '</td>';


        echo "</tr>\n";
    }

?>



</tbody>
</table>


</div>
</body>
</html>

我想我必须操纵 javascript 来添加我需要的东西,因为那是工作下拉列表和搜索框的来源......但我很烂 javascript :-\ 如果有人可以提供帮助,我将不胜感激.如果需要,我也可以共享现有的 Java :D

干杯!

【问题讨论】:

  • 下拉菜单在哪里?它应该如何过滤?
  • 对于初学者,我建议删除此行中的半引号: $result = mysql_query("SELECT * FROM $table;") 或 die(mysql_error());让它看起来像... $result = mysql_query("SELECT * FROM $table") 或 die(mysql_error());这可能会导致您的查询失败。
  • 您拥有(或应该拥有)的唯一下拉菜单是选择每页显示的结果数。如果排序按钮无法正常工作,您将需要分配排序规则或其他内容。查看 jQuery 数据表的文档datatables.net
  • 您能提供一个示例输出吗?这样我们就可以看到您要排序的内容? (图片或实时页面的链接就可以了)
  • 您应该编辑您的帖子以包含此代码,它在这里并不是很有帮助:)

标签: javascript mysql drop-down-menu


【解决方案1】:

试一试,我编辑了一些看起来不太正确的内容,并添加了一些希望过滤内容的代码。有点猜测,因为我从未使用过数据表,也不知道数据类型是什么。

<?php
    $dbhost = 'localhost';
    $dbuser = 'database';
    $dbpass = 'password';
    $dbname = 'marchmadness';
    $table = 'leaderboard';

    //connect to the database
    $db = mysql_connect($dbhost, $dbuser, $dbpass) or die(mysql_error());

    mysql_select_db($dbname) or die(mysql_error());
?>
<!doctype html>
<html lang="en">
    <head>
        <title>Leaderboard</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <link rel="icon" type="image/png" href="/favicon.ico" />
        <link rel="stylesheet" type="text/css" href="assets/css/main.css">
        <link rel="stylesheet" type="text/css" href="assets/css/listing.css" media="all" />
        <script type="text/javascript" src="assets/js/jquery.min.js"></script>
        <script type="text/javascript" language="javascript" src="assets/js/jquery.dataTables.min.js"></script> 

        <script type="text/javascript">
            var table; // used to store a reference later
            $.fn.dataTablesExt.afnFiltering.push(
                function( oSettings, aData, iDataIndex ) {
                    if (aData[0].toLowerCase() == $('#title_filter').val().toLowerCase()) {
                        return true;
                    } else {
                        return false;
                    }
                }
            );
            $(document).ready(function() {
                /* This triggers the cool filtering stuff, without this it's just a normal table of data */
                table = $('table').dataTable({ "iDisplayLength": 10 }); // this starts the datatable stuff and returns a reference to it
            });
            $("#title_filter").onchange(function() { 
                table.fnDraw(); // forgot this line - whoops
            });
            function MM_preloadImages() { //v3.0
                var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
                var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
                if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
            }
        </script>
    </head>
    <body id="listing">
        <div id="wrapper">
            <div id="topbox" align="center">
                <img src="_Images/maddnessheader.png" width="539" height="296" align="center" /></div>
<?php
    $sql="SELECT Title FROM leaderboard"; 
    $result=mysql_query($sql); 
    $options=""; 
    while ($row=mysql_fetch_array($result)) { 
        $id=$row["leaderboard"]; 
        $thing=$row["Title"]; 
        $options.="<option value=\"$thing\">".$thing.'</option>';
    } 
?>
                <select id="title_filter"> 
                    <?=$options?> 
                </select>
                <table align="center">
                    <thead>
                        <tr>
                            <th>Title</th>
                            <th>Name</th>
                            <th>Call Coding (%)</th>
                            <th>FizzBack SAT Score (%)</th>
                        </tr>
                    </thead>
                <tbody>
<?php
    //get the information from the database
    $result = mysql_query("SELECT * FROM `$table`;") or die(mysql_error());

    while($row = mysql_fetch_array($result)) {
        echo '<tr>';
        // print out the data from the database. Notice how the text inside $row[] matches up with the headers in phpmyadmin
        echo '<td>' . htmlentities($row['Title']) . '</td>';
        echo '<td>' . htmlentities($row['Name']) . '</td>';
        echo '<td>' . htmlentities($row['CC']) . '</td>';
        echo '<td>' . htmlentities($row['FZB']) . '</td>';
        echo "</tr>\n";
    }
?>
                </tbody>
            </table>
        </div>
    </body>
</html>

【讨论】:

  • 感谢您尝试 Nick,但这似乎破坏了“显示 XXX 条目”、下一页功能和排序功能,哈哈 :) 老实说,我认为关键在于 JavaScript,我只是不够熟练,无法弄清楚...如果有人能够提供帮助并想要一份 JavaScript 的副本,请告诉我,我会将所有文件通过电子邮件发送给您。再次感谢! :)
  • 我真正添加的只是javascript,并修复了您生成选择输入框的问题。很难处理我自己无法调试的东西。您的问题与数据表有关,您需要阅读有关自定义过滤器的文档。
  • 我将继续阅读它,但似乎当我使用您的代码时,不仅新的下拉菜单不起作用,而且它删除了以前工作的功能。老实说,我认为解决方案在于 JavaScript(不幸的是我):(
  • Datatables 是 javascript,如果无法访问您页面的输出(包括示例数据),任何人都无法真正提供帮助。我要停下来,因为我有点破纪录了.....
  • 我已提议与任何愿意提供帮助的人共享这些文件,因为这里发布的内容太多,而且该页面位于我无法访问的安全服务器上。我意识到我并不完全知道我在说什么,也许我也不明白你在说什么 100%...但是,我正在努力学习,感谢耐心。再次感谢您的尝试;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-05
  • 2013-01-23
  • 1970-01-01
  • 1970-01-01
  • 2018-12-06
  • 2019-04-18
相关资源
最近更新 更多