0

これは、Q&A サイトへの私の最初の投稿です。私の最も小さな間違いを指摘し、私を修正してください。PHP の学習を開始し、WAMP サーバーを使用しています。複数のレンダリングの問題があります。まず一つ紹介します。Branch、Student、Subject、Exam、Marks の 5 つのテーブルを表示する index.php ページがあります。これで、上記の各テーブルの表示ボタンを同じページに保持しました。ページを更新したくないので、ボタンの入力タイプは「送信」ではなく「ボタン」です​​。そして、ボタンがクリックされたかどうかを確認したいので、ボタンがそれぞれのテーブルの表示ボタンの名前である isset($_POST['button']) を使用しています。ボタンをクリックすると、他のテーブルが非表示になっている間だけ、その特定のテーブルのデータテーブルが表示されます。

一度に 1 つのテーブルのレンダリングの問題: [ブランチ テーブルの表示] ボタンをクリックするとブランチ テーブルが表示され、その後 [学生テーブルの表示] ボタンをクリックすると、学生テーブルが表示され、残りのテーブルが表示されます。非表示で、すべてのテーブルについても同様です。以下のコードには冗長すぎるjqueryがあり、最適化したいと考えています。また、divタグIDがbranch1で、学生の場合はstudent1などのブランチテーブルを表示するPHPコードの一部があります。ブランチの表示ボタンをクリックしても、何も起こっていません。これは、if(isset($_POST['display_branch'])) がボタンのクリックで機能していないことを意味します。また、各テーブルには div タグがあり、id は異なりますが、クラスは同じです (つまり、レンダリング) ここでどこが間違っているのか知りたいのですが、わかりません。

jQuery:

$('.render').hide();
$('#display_branch').click(function (event) {
    $('#student1').hide();
    $('#subject1').hide();
    $('#exam1').hide();
    $('#marks1').hide();
    $('#branch1').show();
});

$('#display_student').click(function (event) {
    $('#subject1').hide();
    $('#exam1').hide();
    $('#marks1').hide();
    $('#branch1').hide();
    $('#student1').show();
});
$('#display_subject').click(function (event) {
    $('#subject1').show();
    $('#exam1').hide();
    $('#marks1').hide();
    $('#branch1').hide();
    $('#student1').hide();
});
$('#display_exam').click(function (event) {
    $('#subject1').hide();
    $('#exam1').show();
    $('#marks1').hide();
    $('#branch1').hide();
    $('#student1').hide();
});
$('#display_marks').click(function (event) {
    $('#subject1').hide();
    $('#exam1').hide();
    $('#marks1').show();
    $('#branch1').hide();
    $('#student1').hide();
});

表示ボタン:

       <div id="display" style="position:absolute; top:100px;">
       <form action="" method="post">
       <input type="button" id="display_branch" name="display_branch" value="Display Branch Table" >
       <input type="button" id="display_student" name="display_student" value="Display Student Table">
       <input type="button" id="display_subject" name="display_subject" value="Display Subject Table">
       <input type="button" id="display_exam" name="display_exam" value="Display Exam Table">
       <input type="button" id="display_marks" name="display_marks" value="Display Marks Table">
       </form>
       </div>

PHP コードフラグメント:

   if(isset($_POST['display_branch']))
   {
   $result = mysql_query("SELECT * FROM branch");?>
 <div class="render" id="branch1" style="position:absolute; left:200px; top:150px;">
        <table id="datatables" class="display">
            <thead>
                <tr>
                    <th>Branch ID</th>
                    <th>Branch Name</th>
                </tr>
            </thead>
            <tbody>
                <?php
                while ($row = mysql_fetch_array($result)) {
                $branch_id= $row['branch_id'];
                $branch_name = $row['branch_name'];?>
                    <tr>
                        <td><?php echo $branch_id;?></td>
                        <td><?php echo $branch_name;?></td>                         
                    </tr>
                    <?php
                }
                ?>
            </tbody>
        </table>
    </div>}

私はたくさん検索し、多くの方法を試しましたが、完全には取得できませんでした。この議論が、他の人が同様の問題を解決するのに役立つことを願っています.

4

2 に答える 2

0
$_POST['display_branch']

これには、display_branch パラメータを指定したPOST リクエストが必要です。

このような要素を非表示/表示するには、基本的に 2 つのオプションがあります。

于 2012-12-28T09:30:31.973 に答える
0

これは問題の完全な解決策ではありませんが、jQuery コードの最適化です。あなたの問題のダミーシナリオを作成しました。このコードからいくつかの助けを借りることができます:

HTML:

<div id="tables">
    <table id="branch1">
    </table>
    <table id="subject1">
    </table>
    <table id="student1">
    </table>
    <table id="marks1">
    </table>
    <table id="exam1">
    </table>
</div>

jQuery:

$('#display_branch').click(function (event) {
    var table = $(this).attr(id).split("_");
    $("#tables").find("table").hide();
    $("#"+table[1]+"1").show();
});
于 2012-12-28T09:33:03.460 に答える