3

私のウェブサイトには、お客様の声を表示するページがあります。データベースからすべての証言を表示するために、このコードを書きました。

これはこれまでの私のコードです:

while ( $row = mysqli_fetch_array( $r, MYSQLI_ASSOC)) {
    $testimonial = $row['testimonial'];
    //echo $testimonial;
    $mytestimonial = nl2br($testimonial);
    $city               = $row['city_name'];
    $name               = $row['name'];
    $url                = $row['web_address'];
    $imageName      = $row['image_name'];
    $type               = $row['membership_type'];
} 

このコードを使用すると、すべての証言をページに取得できます。私にとってはかなりうまくいっています。私の問題は、タイプに応じて証言をフィルタリングする必要があることです。私のデータベースには 3 種類の証言があります。(家庭教師、研究所、学生)

選択ボックスを使用してデータをフィルタリングします。選択ボックスからオプションを選択するとき、選択したタイプに応じて証言を表示する必要があります。

<div class="filter-box">    
    <div id="select_box">
        <form method="post" action="">          
            <div class="variation2">
                <label>Filter By</label>
                <select class="select">
                    <option>Tutor</option>
                    <option>Institute</option>
                    <option>Student</option>
                </select>
            </div>
        </form> 
    </div>  
</div>

誰かが私をここに向かわせることができますか?

ありがとうございました

4

4 に答える 4

0

それぞれの証言 div に名前でクラスを追加します。

 <div class="student">testimonial goes here</div>

jquery を使用して、カテゴリを一度に非表示/表示できるようになりました。

 $('.student').show();

私はそれが役立つことを願っています

于 2013-03-13T11:56:27.580 に答える
0

いくつかのオプションがあります。最初はajaxです。2 つ目は、onchange または onsubmit のフォームを送信することです。

<select class="select" name="type" onchange="document.forms[0].submit();">
    <option value="Tutor">Tutor</option>
    <option value="Institute">Institute</option>
    <option value="Student">Student</option>
</select>

そしてあなたのクエリ:

$type = '';
if(!empty($_POST) && isset($_POST[type])){
    $type = " WHERE testimonials.type = '".$_POST[type]."'";
}
$q = "SELECT testimonial, city_name, name, web_address, image_name, membership_type
        FROM testimonials 
        INNER JOIN city ON city.city_id = testimonials.city_id
        ".$type."
        ORDER BY date_added DESC LIMIT $start, $display";

もちろん、フォームが送信されたかどうかを確認してください。

于 2013-03-05T13:52:20.873 に答える
0

ユーザーが 3 つのオプションのいずれかを選択し、必要な証言を表示したら、(AJAX を使用して) 選択ボックスを動的にリロードしないでください。それで問題が解決すると思います。

于 2013-03-05T13:42:25.083 に答える
0

そのため、タイプに基づいて証言を選択する必要があります

$q = "SELECT testimonial, city_name, name, web_address, image_name, membership_type
        FROM testimonials 
        INNER JOIN city ON city.city_id = testimonials.city_id
        WHERE type = '$type'
        ORDER BY date_added DESC LIMIT $start, $display";

ここで、ユーザーからタイプも取得する必要があります

<select name="type" class="select">

ポストで

$type = $_POST['type'];

変更例でフォームを自動送信

Javascript:

<script type="text/javascript">
    function submitform(){
        document.frmType.submit();
    }
</script>

形:

<form name="frmType" method="post" action="">
    <select name="type" class="select" onchange="submitform()">

さらなる例はここで見つけることができます

于 2013-03-05T13:43:58.180 に答える