0

ユーザーが最初のページとは異なるオプションを選択したときに、テーブルに異なるデータを表示しようとしました...そして、javascriptを使用してソート機能を提供しようとしました..しかし、ユーザーが別のオプションを選択しても、表示されるデータは同じです...

これは私のメインページのコードです

test.html

 <form action="index2.php" method="post">
    <table border="0">
    <tr>
        <th colspan="3">test</th>
    </tr>
    <tr>
        <td>Select Foreign Agent Country</td>
        <td></td>
        <td>
        <select name="country">
        <option value="US">United States</option>
        <option value="NZ">New Zealand</option>
        <option value="JP">Japan</option>
        </select> 
        </td>
      </tr>
        <td colspan="3">
        <input type="submit" name="formSubmit" value-"Submit">
        </td>
    </table>
    </form>

これは、私のjavascriptに接続されているデータベースからデータを取得するための私のコードです

index2.php

 <script language="JavaScript" type="text/javascript" src="js/select-all.js"></script>
</head>
<body>

<!--id class -->
<div id="contentHolder">

    <?php
    $connect = mysql_connect("localhost", "root", "");

    //connect to database
    //select the database
    mysql_select_db("fak_databases");
    //submit button
    if($_POST['formSubmit'] == "Submit")
    {
        $country = $_POST['country'];
    }

    if(isset($_GET['orderby'])){
        $order = $_GET['orderby']; 
        $sort = $_GET['sort'];

        if($country == 'US') {  
        // query to get all US records
            if($order != 'wipo_applicant1_city' && $order != 'applicant1_addr1' && $order != 'wipo_applicant1_state')$order = "wipo_applicant1_city";
                if($sort != 'asc' && $sort != 'desc')$sort = "asc";
                    $sql = "SELECT `wipo_applicant1_city`, `applicant1_addr1`, `wipo_applicant1_state`, `invention-title` FROM `auip_wipo_sample` WHERE applicant1_country='US' ORDER BY ".mysql_real_escape_string($order)." ".$sort; 

                    //here we reverse the sort variable
                    if($sort == "asc"){
                        $sort = "desc";
                    }
                else{
                    $sort = "asc";
                }

        }
        else if($country == 'NZ') {  
        // query to get all US records  
        //$query = mysql_query("SELECT * FROM auip_wipo_sample WHERE applicant1_country='US'");   
            if($order != 'wipo_applicant1_city' && $order != 'applicant1_addr1' && $order != 'wipo_applicant1_state')$order = "wipo_applicant1_city";
                if($sort != 'asc' && $sort != 'desc')$sort = "asc";
                    $sql = "SELECT `wipo_applicant1_city`, `applicant1_addr1`, `wipo_applicant1_state`, `invention-title` FROM `auip_wipo_sample` WHERE applicant1_country='NZ' ORDER BY ".mysql_real_escape_string($order)." ".$sort; 

                    //here we reverse the sort variable
                    if($sort == "asc"){
                        $sort = "desc";
                    }
                else{
                    $sort = "asc";
                }

        }
        else if($country == 'JP') {  
        // query to get all US records  
        //$query = mysql_query("SELECT * FROM auip_wipo_sample WHERE applicant1_country='US'");   
            if($order != 'wipo_applicant1_city' && $order != 'applicant1_addr1' && $order != 'wipo_applicant1_state')$order = "wipo_applicant1_city";
                if($sort != 'asc' && $sort != 'desc')$sort = "asc";
                    $sql = "SELECT `wipo_applicant1_city`, `applicant1_addr1`, `wipo_applicant1_state`, `invention-title` FROM `auip_wipo_sample` WHERE applicant1_country='JP' ORDER BY ".mysql_real_escape_string($order)." ".$sort; 

                    //here we reverse the sort variable
                    if($sort == "asc"){
                        $sort = "desc";
                    }
                else{
                    $sort = "asc";
                }

        }
    }else {
        $order = "";
        $sort = "asc"; 
        $sql = "SELECT `wipo_applicant1_city`, `applicant1_addr1`, `wipo_applicant1_state`, `invention-title` FROM `auip_wipo_sample`";
    }
    $result = mysql_query($sql);
    $num_rows = mysql_num_rows($result);
    $row_counter = 0; 

    $icon = "";
    echo "<table  border=\"1\" cellspacing=\"0\">\n";
    echo "<tr>\n"; 

    // first column
    echo "<th>";
    $icon = "";
    if($order == "wipo_applicant1_city"){
        if($sort == "asc"){
            $icon = "<img src=\"images/up.png\" class=\"arrowSpace\"/>";
        }
        if($sort == "desc"){
            $icon = "<img src=\"images/down.png\" class=\"arrowSpace\"/>";
        }
    }

    //print the result
    echo "<a href='index2.php?orderby=wipo_applicant1_city&sort=".$sort."'>City</a>".$icon;
    echo "</th>\n";


    // second column
    echo "<th>";
    $icon = "";
    if($order == "applicant1_addr1"){
        if($sort == "asc"){
            $icon = "<img src=\"images/up.png\" class=\"arrowSpace\"/>";
        }
        if($sort == "desc"){
            $icon = "<img src=\"images/down.png\" class=\"arrowSpace\"/>";
        }
    }
    echo "<a href='index2.php?orderby=applicant1_addr1&sort=".$sort."'>Address</a>".$icon;
    echo "</th>\n";


    // third column
    echo "<th>";
    $icon = "";
    if($order == "wipo_applicant1_state"){
        if($sort == "asc"){
            $icon = "<img src=\"images/up.png\" class=\"arrowSpace\"/>";
        }
        if($sort == "desc"){
            $icon = "<img src=\"images/down.png\" class=\"arrowSpace\"/>";
        }
    }
    echo "<a href='index2.php?orderby=wipo_applicant1_state&sort=".$sort."'>State</a>".$icon;
    echo "</th>\n";
    echo "</tr>";

    //fetch the result
    while($row = mysql_fetch_array($result)){

        //give a different color for row
        if($row_counter % 2){
            $row_color="bgcolor='#FFFFFF'";
        }else{
            $row_color="bgcolor='#F3F6F8'";
        }
        echo "<tr class=\"TrColor\" ".$row_color.">";
        echo "<td>" . $row['wipo_applicant1_city'] . "</td>\n";
        echo "<td>" . $row['applicant1_addr1'] . "</td>\n";
        echo "<td>" . $row['wipo_applicant1_state'] . "</td>\n";
        echo "</tr>";
        $row_counter++;
    }
    echo "</table>";
    ?>
</div>

</body>

show-all.js

function SelectAll(btn) {
    var blnVal = false;
    if (btn.value == "Select All") {
        btn.value = "Unselect All";
        blnVal = true;
    }else {
        btn.value = "Select All";
        blnVal = false;
    }
    var d = document.forms["auip_wipo_sample"];
    if(d["auip_wipo_sample[]"] == null)
    {}
    else if (d["auip_wipo_sample[]"].length == null) {
        d["auip_wipo_sample[]"].checked = blnVal;
    }
    else {
        for (var i = 0; i < d["auip_wipo_sample[]"].length; i++) {
            d["auip_wipo_sample[]"][i].checked = blnVal;
        }
    }
}

コードの実行時にエラーはありませんが、結果は常に同じです

誰かが私のコードで何が間違っているか知っていますか?

4

1 に答える 1

0

国固有のコードはすべて orderby が設定されている場合にのみチェックされるため、else ステートメントにヒットしています。したがって、設定されていない場合は、else が実行されます。これは毎回同じコードになります。

また、クリーンアップするコードが多すぎますが、そのコードをおそらく 75% クリーンアップするためにできることのリストを作成します

  1. OWN ifステートメントにordered byが設定されているかどうかを確認します
  2. OWN ifステートメントにソートが設定されているかどうかを確認します
  3. フォームで選択された国を調べる
  4. たとえば、これらすべてのオプションを使用してクエリを作成します。

    $sql = "SELECT column1, column2, etc FROM auip_wipo_sample $countryWhereStatement $sort $orederedby ";

ロジックを正しく実行すると、$country 変数にはキーワード WHERE country = 'US' が含まれ、$sort 変数には ASC または DESC が含まれ、order by にはキーワード ORDER BY columnname が含まれます。

これにより、スペースを節約し、読みやすく、さらに動的にすることができます。

また、絶対に必要な場合を除き、バッククォートを使用しないようにしてください。これらは、MySQL の非常に古いバージョン (つまり、非常に古い) で、フィールドまたはテーブル名が MySQL キーワードと同じである場合に必要です。そうでなければ、それらは必要ありません。

于 2013-04-27T08:55:37.493 に答える