1

PHPで生成されたフォームを価格で並べ替えようとしています。「通知:未定義のインデックス:PriceDesc/Asc」というエラーメッセージが表示されます。エラーメッセージはわかりましたが、検索しても関連情報が見つからないので、聞いてみようと思いました。私はPHPを初めて使用しますが、これまでのところ、これは私が持っているコードです。

<!DOCTYPE html>
<html lang="en">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <!--[if IE]>
  <link href="blueprint/ie.css" type="text/css" rel="stylesheet">
  <![endif]-->
  <link href="blueprint/screen.css" type="text/css" rel="stylesheet">
  <link href="style.css" type="text/css" rel="stylesheet">

  <title>Enygma Peripherals</title>
</head>

<body>
<div id="wrapper" class="container">
    <div id="top" class="span-24">
        <div id="logo" class="span-5">
            <a href="index.php"><img src="images/logo.png" alt="Enygma"></a>
        </div>
        <div id="nav" class="span-11 last">
            <ul>
                <li><a href="index.php">HOME</a></li>
                <li><a href="products.php">PRODUCTS</a></li>
                <li><a href="about.php">ABOUT</a></li>
                <li><a href="contact.php">CONTACT</a></li>
            </ul>
        </div>

    </div>
    <div id="mainContent" class="span-24">
        <h2>Products</h2>
        <div id="left" class="span-8">
        </div>
        <div id="right" class="span-15 last">
            <form method="get" name="sort">
                <select name="sort" id="sort">
                    <option value="">--Select--</option>
                    <option value='PriceAsc'>Price: Highest First</option>
                    <option value='PriceDesc'>Price: Lowest First</option> 
                </select>
                <input type="submit" value="Sort"/>
            </form>
            <?php
                include("connection.php");

                $data = mysql_query("SELECT * FROM products");
                IF ($_GET['PriceAsc']){
                    $orderby=" ORDER BY price ASC";
                } 
                IF ($_GET['PriceDesc']){
                    $orderby=" ORDER BY price DESC";
                }
                Print "<table border cellpadding=10>"; 
                while($info = mysql_fetch_array( $data )) 
                { 
                Print "<tr>"; 
                Print "<th>Product Number:</th> <td>".$info['product_no'] . "</td> "; 
                Print "<th>Product:</th> <td>".$info['product_name'] . "</td> "; 
                Print "<th>Type:</th> <td>".$info['type'] . "</td> "; 
                Print "<th>Price:</th> <td>".$info['price'] . "</td> "; 
                Print "<th>Availability:</th> <td>".$info['availability'] . " </td></tr>"; 
                } 
                Print "</table>"; 
                ?>
        </div>      
    </div>
    <div id="footer" class="span-24">
        <a href="acknowledgements.html">Acknowledgments</a>
    </div>
</div>

記録として、バックエンドのd / bにPhpMyAdminを使用しており、最初のテーブル化されたデータは正常に機能します。

4

3 に答える 3

0

交換

$data = mysql_query("SELECT * FROM products");
            IF ($_GET['PriceAsc']){
                $orderby =" ORDER BY price ASC";
            } 
            IF ($_GET['PriceDesc']){
                $orderby =" ORDER BY price DESC";
            }

if ( !empty($_GET['sort']) && $_GET['sort'] == 'PriceAsc' ) {
    $orderby=" ORDER BY price ASC";
} 
if ( !empty($_GET['sort']) && $_GET['sort'] == 'PriceDesc' ) {
    $orderby=" ORDER BY price DESC";
}

$data = mysql_query("SELECT * FROM products".$orderby);

変更点に注意してください。フォームが送信されたかどうかを確認し、その値を確認するには、empty()を使用する必要があります。そして、SQLに追加された順序で一度クエリを実行します。

于 2012-10-23T23:54:19.410 に答える
0

はい上記のように$sortを$dataに追加します

これらのクエリ文字列がURLに正しく含まれている必要があります

http://www/mypage.php?PriceAsc=true

正しく比較する必要があります

 if ($_GET['PriceAsc']=='true'){
于 2012-10-23T23:55:58.507 に答える
0

$orderby変数をクエリに添付したことはありません。これを試して:

            $data1 ="SELECT * FROM products";
            IF ($_GET['PriceAsc']){
                $data1 .=" ORDER BY price ASC";
            } 
            IF ($_GET['PriceDesc']){
                $data1 .=" ORDER BY price DESC";
            $data = mysql_query($data1);

.=、文字列を末尾に追加します$data

未定義のインデックスエラーが発生する理由は、利用可能なものがないためPriceAscです! $_GETあなたは存在しない何かをしようとしています。

あなたがする必要があるのは:

 IF ($_GET['sort'] == 'Price: Highest First'){
                    $data1 .=" ORDER BY price ASC";
                } else { 
                    $data1 .=" ORDER BY price DESC";
}
于 2012-10-23T23:49:16.450 に答える