2012-05-11 8 views
0

このコードの問題に直面しているので、ユーザーが選択ドロップメニューから「すべて表示」を選択した場合、テーブル行からすべてのデータを取得したいだけです。where節のすべての値を取得する

ここはセレクトメニューです!

ので、この表から、このメニューグラブデータが、彼はすべてを選択した場合、オプションの値の間でエコーに適したコードは何です:)

<b>speciality:</b> <select id="main_mav" name="speciality"> 
<option value="none">Select speciality:</option> 
<option value=""> All specialities </option> 
<?php 

     $result = mysql_query('SELECT speciality FROM visits') or die(mysql_error()); 
     while ($row = mysql_fetch_assoc($result)) { 
       echo '<option value="'.$row['speciality'].'">'.$row['speciality'].'</option>'; 
     } 
?> 
</select><br /> 

送信フォームです!

if ($region=="All regions"){ 


       $region=$_POST['""']; 
      } 
      else ($region=$_POST['region']); 

      $date1 =$_POST['from_date']; 
      $date2 = $_POST['to_date']; 
      $product=$_POST['product']; 
      $speciality=$_POST['speciality']; 
      $type=$_POST['visit_type']; 

sql="SELECT id, customer_name, seller_1_name, seller_2_name FROM visits Where (speciality ='$speciality') AND (visit_type ='$type') AND (product ='$product') AND (region ='$region') AND (visit_date BETWEEN '$date1' AND '$date2')"; 
$result=mysql_query($sql); ## This line is new. 
$num=mysql_numrows($result); 
$row = mysql_fetch_array($result); 

「すべてをドロップメニューで表示」を選択した場合、入力する正しいコードは何ですか?

+1

**あなたのコードはSQL用に評価されないパラメータとして変数を渡す準備済みの文を使用する必要があります。私が何を話しているのか、それを修正する方法がわからない場合は、[Bobby Tables](http://bobby-tables.com)の記事を読んでください。 – eggyal

答えて

2

あなたの入力は、少なくともmysql_real_escape_stringで消毒する必要があります。

あなたの実際の質問には:$specialityが空であるかどうかをチェックし、(speciality ='$speciality')の条件を使わないで別のクエリを生成してください。

+0

mysql_real_escape_stringは非推奨で、PDOを使用するか、少なくともmysqli_ *関数 – AlanFoster

+1

を使用します。しかし、OPコード全体をPDOを使用するように変更する方法については、質問の範囲をはるかに超えています。それが私が「少なくとも」と言った理由です。 – bfavaretto

+0

+1は非常に速い条件を見つけるためのものです。 :)また、OPとして見られる@AlanFosterは、廃止予定の 'mysql_'コマンドも使用していますが、問題はありません。彼はまだ基本的な質問であるので、彼はまだ学んでいるように見えるので、セキュリティは最高の優先事項ではないと思います。 =] –

0

あなたのHTMLが '専門分野'とPHP参照 '地域'を参照しているので、私は '地域'に固執するつもりですが、ここにその考えがあります。

if ($region=="All regions"){ 
     $sql = 'SELECT id, customer_name, seller_1_name, seller_2_name, FROM visits'; 
    } else { 
     $region  = mysql_real_escape_string($_POST['region']); 
     $date1  = mysql_real_escape_string($_POST['from_date']); 
     $date2  = mysql_real_escape_string($_POST['to_date']); 
     $product = mysql_real_escape_string($_POST['product']); 
     $speciality = mysql_real_escape_string($_POST['speciality']); 
     $type  = mysql_real_escape_string($_POST['visit_type']); 
     $sql  = "SELECT id, customer_name, seller_1_name, seller_2_name FROM visits Where (speciality ='$speciality') AND (visit_type ='$type') AND (product ='$product') AND (region ='$region') AND (visit_date BETWEEN '$date1' AND '$date2')"; 
    } 

$result = mysql_query($sql); ## This line is new. 
$num = mysql_numrows($result); 
$row = mysql_fetch_array($result);