2017-04-23 2 views
1

Ich machte 2 bestückte Auswahlmenüs, um Abfragen an meine SQL-Datenbank zu machen. Die ersten Options-Tags aller ausgewählten Menüs haben einen Wert = "" Jetzt funktioniert alles gut, wenn ich die Optionen aller 2 Auswahlmenüs auswähle. Aber wenn ich 1 oder mehrere Optionen nicht auswähle, funktioniert die Abfrage nicht.

Eines der Auswahlmenü:

<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(); 

Antwort

1

Sie Check für das hinzufügen:

$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

leider funktioniert es nicht. Ich frage mich, ob value = "" das Problem ist. Vielleicht wird es nicht als leerer Wert interpretiert, sondern als Anführungszeichen (Strings) interpretiert? – xcx

+0

@xcx Ich habe meine Antwort aktualisiert, überprüfen Sie es und sagen Sie mir, was Sie erhalten –

+0

Ergebnis zeigt alle Datensätze in meiner Datenbank, so dass die else {... -Anweisung ausgeführt wird. Aber das ist nicht was ich brauche: Wenn ich einen 'Titel' (sagen wir 'Harry Potter') auswähle und ich keine Version auswähle, müssen alle Harry Potter Bücher sein. Nicht meine ganze Bibliothek. – xcx