2017-04-23 10 views
1

私は2つのpopulated selectmenuを使用してSQLデータベースにクエリを行いました。すべての選択メニューの最初のオプションタグはvalue = ""です。すべての2つの選択メニューのオプションを選択すると、すべて正常に動作します。しかし、1つ以上のオプションを選択しないと、クエリは機能しません。

選択メニューのの

ワン:あなたはそのためのチェックを追加することができます

<select name="titel" id="titel" value=""> 
    <option value="">Selecteer</option> 
    <?php 
    if($rowCount > 0){ 
     while($row = $query->fetch_assoc()){ 
      echo '<option value="'.$row['titel'].'">'.$row['titel'].'</option>'; 
     } 
    }else{ 
     echo '<option value="">Language not available</option>'; 
    } 
    ?> 
</select> 

2nd page (search.php): 

<?php 
//load database connection 
$host = "localhost"; 
$user = "..."; 
$password = "..."; 
$database_name = "..."; 
$pdo = new PDO("mysql:host=$host;dbname=$database_name", $user, $password, array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION 
)); 
// Search from MySQL database table 

$titel=$_POST['titel']; 
$version=$_POST['version']; 

$query = $pdo->prepare("SELECT DISTINCT * FROM Library where titel = ? AND version = ?"); 

$query->bindValue(1, $titel, PDO::PARAM_STR); 
$query->bindValue(2, $version, PDO::PARAM_STR); 
$query->execute(); 

答えて

1

$sql = "SELECT DISTINCT * FROM Library"; 

if((isset($_POST['titel']) && $_POST['titel'] != '')) {  
    $sql .= " where titel =:titel"; 

    if ((isset($_POST['version']) && $_POST['version'] != '')) {  
    $sql .= " AND version =:version"; 
    }  
} 

if ((isset($_POST['version']) && $_POST['version'] != '') && ! (isset($_POST['titel']) && $_POST['titel'] != '')) {  
    $sql .= " where version =:version"; 
} 

$query = $pdo->prepare($sql);  

if((isset($_POST['titel']) && $_POST['titel'] != '')) { 
    $query->bindParam(':titel', $_POST['titel']); 
} 

if((isset($_POST['version']) && $_POST['version'] != '')) { 
    $query->bindParam(':version', $_POST['version']); 
} 

$query->execute(); 
+0

残念ながら、それは動作しません。私はvalue = ""が問題なのか疑問に思います。多分それは空の値として解釈されませんが、引用符(文字列)として解釈されますか? – xcx

+0

@xcx私は自分の答えを更新し、それを確認して何を得るのかを教えてください –

+0

結果は私のデータベースのすべてのレコードを表示するので、else {...文が実行されます。しかし、それは私が必要とするものではありません。私が「タイトル」(「ハリー・ポッター」と言う)を選択し、バージョンを選択しないと、結果はすべてのハリー・ポッターの本でなければなりません。私のライブラリ全体ではありません。 – xcx