2013-02-22 56 views
-1

如果a)提前道歉,這個問題已經得到解答,我搜索了,但是無法使用我找到的答案,b)我不是一個非常熟練的程序員,並且正在努力學習...Javascript MYSQL Dropdown

爲了使這一儘可能短...

  • 我有一個全功能的網站與搜索和排序數據庫(即一個同事幾乎建立了我很久以前,所以我爲什麼額外感到困惑)
  • 我想添加一個從數據庫填充的下拉式過濾器
  • 代碼參考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

乾杯

+0

下拉菜單在哪裏?它應該如何過濾? – 2013-02-22 01:05:03

+0

對於初學者,我建議刪除該行中的半報價: $ result = mysql_query(「SELECT * FROM'$ table';」)或die(mysql_error()); 並使它看起來像... $ result = mysql_query(「SELECT * FROM'$ table'」)或die(mysql_error()); 這可能會拋出您的查詢。 – JamesD 2013-02-22 01:08:47

+0

您擁有(或應該擁有)的唯一下拉列表是選擇每頁顯示的結果數量。如果排序按鈕無法正常工作,則需要指定排序規則或其他內容。查看jQuery數據表的文檔http://www.datatables.net – NickSlash 2013-02-22 01:19:31

回答

0

試試這個,我編輯了一些看起來不太正確的東西,並添加了一些代碼,希望能夠過濾這些東西。由於我從來沒有使用過數據表,因此我猜不出數據類型是什麼。

<?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> 
+0

感謝您嘗試尼克,但這似乎打破了'顯示XXX條目',下一頁功能和排序功能哈哈:) 老實說,我認爲這個關鍵是在JavaScript,我只是沒有足夠的技巧能夠弄清楚......如果任何人能夠幫助並想要JavaScript的副本,請讓我知道,我會通過電子郵件發送給你所有的文件。 再次感謝! :) – LivingDeadGirl 2013-02-22 02:04:17

+0

我真的添加了所有的JavaScript,並解決了您的一代選擇輸入框的問題。它很難工作在我不能調試自己的東西上。您的問題與數據表相關,您需要閱讀有關自定義過濾器的文檔。 – NickSlash 2013-02-22 02:09:08

+0

我會繼續閱讀它,但看起來當我使用你的代碼時,不僅新的下拉菜單不起作用,而且它刪除了以前工作的功能。我真的認爲解決方案在於JavaScript(不幸的是,對我來說):( – LivingDeadGirl 2013-02-22 02:15:11