2011-12-06 14 views
2

私はMySQLデータベースの旅行製品に関するデータを表示するサイトを持っています。上記のラジオボタンは、昇順または降順の順序で結果を表示するかどうかをユーザーが選択できるようにしています。価格順にデータベースを並べ替えるラジオボタンが突然動作を停止しました

これは、テーブルに入れてページ上でより綺麗に見せるまで、うまく機能していました。また、ユーザーが昇順と降順の両方のオプションを選択できず、クエリーがうまくいかないように、両方が同じになるように 'name'タグを変更する必要がありました。私はこれらのうちの1つがそれを乱すことに貢献したと思います。

これは、適切なラジオボタンをクリックしたときに価格を完全に並べ替えるために使用され、次にその隣にある検索ボタンです。しかし、今は何もしません。誰かが助けてくれたら大変感謝しています。おそらく単純なエラーです。

HTML:

<form action="ayia-napa-holidays.php" method="get"> 
      <table width="280" height="25" > 

       <tr><td width="61"><p>Sort by:</p></td> 
       <td width="72" height="24"><p>Lowest price</p></td> 
       <td width="28"><input name="priceorder" type="radio" value="priceorderasc" /></td> 

       <td width="75" height="24"><p>Highest price</p></td> 
       <td width="20"><input name="priceorder" type="radio" value="priceorderdesc" /></td> 

      </tr></table> 
      <input name="searchform1" type="submit" value="Search" class="moreinfobutton" /> 
      </form> 

PHP:

<?php 

      //connect 
       include ("db.connect.php"); 

       $pages_query = mysql_query("SELECT COUNT('id') FROM `holidaytable` WHERE brandname = 'Cyprus'"); 
       $count = mysql_result($pages_query, 0); 


       echo '<p>There are '.$count.' holidays<hr></p>';      
       //construct query and insert values 

       $sql = "SELECT * FROM holidaytable WHERE brandname = 'Cyprus'"; 


       if (isset($_GET['priceorderasc'])) $sql .= " ORDER BY buynow ASC"; 
       if (isset($_GET['priceorderdesc'])) $sql .= " ORDER BY buynow DESC"; 


       $query = mysql_query($sql) or die(mysql_error()); 

      include("dbresults.php"); 

     ?> 

答えて

1

取得名前は$_GET['priceorder']である(だから、あなたはこのようなものが必要になりますあなたはラジオのため<from>GET方法を使用して言って、。現在のコードを使用:

if(isset($_GET['priceorder']) && !empty($_GET['priceorder'])) 
{ 
    if ($_GET['priceorder'] == 'priceorderasc') $sql .= " ORDER BY buynow ASC"; 
    if ($_GET['priceorder'] == 'priceorderdesc') $sql .= " ORDER BY buynow DESC"; 
} 

ちょうどそれが2回設定されている場合は、空のチェックは単なるバックアップとオプションです。

+0

ありがとうございます。それは最高です! – Dannyd86

2

実際には単純なエラーです。

要素名を変更する前に、それらはpriceorderascpriceorderdescという名前だったようです。今度はその名前をpriceorderに変更しましたが、PHPが照会をビルドする際にチェックする変数は変更しませんでした。

if ($_GET['priceorder'] == 'priceorderasc') $sql .= " ORDER BY buynow ASC"; 
if ($_GET['priceorder'] == 'priceorderdesc') $sql .= " ORDER BY buynow DESC"; 

PHPが新しい要素名の値をチェックするようにします。

+0

あなたの返事をありがとう、私はそれを試みたと私はそれらの行に未定義のインデックスのエラーで終わった。私は以下の他の答えを試してみました。あなたの応答のために+1。 :) – Dannyd86

関連する問題