2011-07-14 6 views
4

私はMySQL &に新しいですが、結果セットを地域別にフィルタリングしたいと考えています。私は以前に同様の質問をしてきましたが、私は新しい質問を作成するか、それを続行するつもりかどうか分かりません。MySQL、PHP、Ajaxで結果セットをフィルタリングするには?

http://www.w3schools.com/ajax/tryit.asp?filename=tryajax_database &私はそれが理想的だと思っていますが、私はそれを働かせる方法や結果を "更新"する方法がわかりません。

理想的には、地域の下のドロップダウンボックスがきれいに見えると思いますが、何の成功もありません。本当に私の理解に完全に制限されています。 (最初の部分を手伝ってくれた先輩にもありがとう!!)

これは私が今までに持っていたものです(フィルタリングしたいもののアイデアを与えるためです)。

多くのおかげで、スコシア - 以下regionbox.phpファイル

です...

<script type="text/javascript"> 
function selectRegion(str) 
{ 
var xmlhttp;  
if (str=="") 
    { 
    document.getElementById("region").innerHTML=""; 
    return; 
    } 
if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    document.getElementById("region").innerHTML=xmlhttp.responseText; 
    } 
    } 
xmlhttp.open("GET","regionbox.php?q="+str,true); 
xmlhttp.send(); 
} 
</script> 
</head> 
<body> 

<P> 
<table class="dbTable"> 
    <tr> 
    <tr><th>Commodity</th> <th><form action="regionbox.php"> 
<select name="region" onchange="selectRegion(this.value)"> 
<option value="">Select Region</option> 
<option value="E. Midlands">E. Midlands</option> 
<option value="Gtr. London">Gtr. London</option> 
<option value="North East">North East</option> 
<option value="North West">North West</option> 
<option value="Scotland">Scotland</option> 
<option value="South East">South East</option> 
<option value="South West">South West</option> 
<option value="W. Midlands">W. Midlands</option> 
<option value="Wales">Wales</option> 
</select> 
</form></th> <th>Member</th> <th>Size</th> <th>Price</th> <th>Date Posted</th> 
    </tr> 

<?php 
$link = mysql_connect('localhost', '', ''); 

$db_selected = mysql_select_db('palegall_newTrader', $link); 
if (!$db_selected) { 
    die ('cant find newTrader' . mysql_error()); 
} 

$region = mysql_real_escape_string($_POST['region']); 
    $query = mysql_query("SELECT * FROM `sell` WHERE `commodity` = 'paper' ORDER BY `price`") 
     or die(mysql_error()); 

    echo '<table class="dbTable">'; 

    while ($row = mysql_fetch_assoc($query)) 
    { 

     echo '<tr><td>'.$row['commodity'].'</td> <td>'.$row['region'].'</td> <td>'. 
         $row['member'].'</td> <td>'.$row['size'].'</td> <td>'. 
         $row['price'].'</td> <td>'.$row['posted'].'</td> </tr>'; 
    } 
    echo "</table>"; 
    ?> 
</body></html> 

私はビットを取り除かました。私はこれがOKであることを望む。

+0

この質問を新しい質問にしてください。あなたの質問に答えるために 'regionbox.php'に関連するコードを見る必要があります。あなたのサイトをハッキングさせないためにリンクを削除してください。 – Johan

+0

ああ、ありがとう、本当にありがとう... regionbox.phpコードはどこに追加すればよいですか? (申し訳ありません!) – scotia

+0

あなたの質問に**関連する部分をコピー**してから、コードを選択し、 'CTRL + K'を押してコードのようにします。 – Johan

答えて

3

変更するには、このコードに

$query = mysql_query("SELECT * FROM `sell` WHERE `commodity`='Paper' 
         ORDER BY `price`") 
    or die(mysql_error()); 
$row=mysql_fetch_assoc($query); 
do 
{ 
    echo'<table class="dbTable">'; 
    echo '<tr><td>'.$row['commodity'].'</td> <td>'.$row['region'].'</td> <td>'. 
        $row['member'].'</td> <td>'.$row['size'].'</td> <td>'. 
        $row['price'].'</td> <td>'.$row['posted'].'</td> </tr>'; 
} 
while($row = mysql_fetch_assoc($query)); 
    echo "</table>"; ?> 

$region = mysql_real_escape_string($_POST['region_Name']); 
//For debugging: 
echo $region 
$query = mysql_query("SELECT * FROM sell WHERE commodity = 'paper' 
         AND region = '$region' ORDER BY price") 
    or die(mysql_error()); 

echo '<table class="dbTable">'; 

//echo the rows in a while loop 
while ($row = mysql_fetch_assoc($query)) 
{ 

    echo '<tr><td>'.$row['commodity'].'</td> <td>'.$row['region'].'</td> <td>'. 
        $row['member'].'</td> <td>'.$row['size'].'</td> <td>'. 
        $row['price'].'</td> <td>'.$row['posted'].'</td> </tr>'; 
} 
echo "</table>"; 
?> 
+0

...私はいくつかのエラーメッセージを持っていましたが、私は間違っています。私は本当にあなたの助けに感謝します...すぐに戻ってきてください! – scotia

+0

...申し訳ありません - Immが間違っているところを見ることはできません。エラーメッセージは最後にエコーを参照しているようですか?構文解析エラー:予期しないT_ECHO、T_WHILEが/home/palegall/public_html/Reassessment/regionbox.phpの108行目にあると予期しています。 最後にWHILEを戻すと、ドロップダウンで表示するヘッダーを取得できますが、最初のデータは示されていません - とてもばかげて申し訳ありません。 – scotia

+0

@scotia、そこに属していない 'do'を残して、申し訳ありません。 – Johan

3

[OK]を、あなたは私が頻繁に使用し、きちんとした効果を持つ小さなスクリプトを出してあげる答えていないからです。

それはあなたが、これはここにhttp://jsfiddle.net/6psNF/1/

あなたは例のテーブルのために、ので、あなたのテーブルコードを適応させる必要がある作業が持つIDと行を持っている可能性が表示される場合があり、あなたのウェブサイトに存在するように

$('select').change(function(){ 
var region = $(this).val(); 
    $("tr").each(function() { 
     if ($(this).text().search(new RegExp(region, "i")) < 0) { 
      $(this).hide(); 
     } else { 
      $(this).show(); 
     } 
    }); 
}); 

をjQueryのを必要としますコードはクラスを持つことができます。小さな例でタイニーコード:だから

<table id="trader"> 
<tbody> 
<tr> 
    <td>Random</td> 
    <td class="region">E. Midlands</td> 
    <td>Member</td> 
    <td>Size</td> 
    <td>Price</td> 
    <td>Date</td> 
    <td>Posted</td> 
</tr> 
</tbody> 

、私が書いたコードは、コンテンツの多くのページやスーパービッグテーブルでのパフォーマンスを上げる

$('select').change(function(){ 
var region = $(this).val(); 
    $("#trader tr").each(function() { 
     if ($(this).text().find(".region").search(new RegExp(region, "i")) < 0) { 
      $(this).hide(); 
     } else { 
      $(this).show(); 
     } 
    }); 
}); 

のように終わる可能性が!

+0

恐ろしく申し訳ありません - 私は投稿abovveを逃していたと私は名前が混在していなかったことを確認しようとしていた - 私は本当に皆の助けを感謝します - scotia – scotia

+0

ああ、私はちょうど便利な返信を書いてみたいです:-) –

+0

私は上記のコードの目的を理解していると思いますが、jqueryについてはわかりませんが、Imとちょっと違うものを試してみると心配しています。今私は自分自身をさらに混乱させてしまいます。私はすべてのデータを最初に表示し、次にドロップダウンフィルタに結果を表示する必要があります。 :) – scotia

関連する問題