Hoi allemaal. Met mn script (zie onder) krijg ik resultaten te zien. Ik kan zowel Audi als Opel aanklikken en krijg dan alle Audi's en Opels. Alleen als ik dan bij kleuren blauw aanklik, dan krijg ik ipv alle blauwe Audi's en Opels, krijg ik alls Audi's en Opels (alle blauwe, rode en zwarte etc) . Verander ik AND in OR (op lijn 31) dan krijg ik het bericht Geen auto's gevonden voldoen aan uw zoekopdracht"" terwijl ik die autos wel in mn database heb zitten. Weet iemand de oplossing?
(PS in mn script hieronder staan 2 variabelen, merk en kleur. In de volledige versie staan 20 variabelen, maar heb er 2 in dit script opgenomen om het overzichtelijk te houden op het forum)



<?php
    $merken = array("audi","bmw","opel");
    $kleuren = array("blauw","groen","rood",);
  
    if($_SERVER['REQUEST_METHOD'] == 'POST' ) {
        $where = array();
        
        if (isset($_POST["merk"]))
{
  foreach($_POST["merk"] as $merk)
  {
    if (in_array($merk, $merken))
    {
      $where[] = "MERK='$merk'";
    }
  }
}
       if (isset($_POST["kleur"]))
{
  foreach($_POST["kleur"] as $kleur)
  {
    if (in_array($kleur, $kleuren))
    {
      $where[] = "KLEUR='$kleur'";
    }
  }
}
        if (count($where)==0) {
            echo "Geen zoektermen bekend. Opdracht geannuleerd.";
        } else {
            $query = "select ID, MERK, KLEUR from catalog_tabel WHERE ".implode(" AND ",$where);
            if ($result = mysql_query($query)) { 
                if (mysql_num_rows($result)<>0) { 
                    while ( $row = mysql_fetch_assoc ( $result ) ) { 
                        echo $row["MERK"]." - ".$row["KLEUR"]."<br />"; 
                        $beschrijvingquery = "select BESCHRIJVING from beschrijving where Catalog_ID=".$row["ID"]; 
                        if ($beschrijvingresult = mysql_query($beschrijvingquery)) { 
                            if (mysql_num_rows($beschrijvingresult)<>0) { 
                                while ( $beschrijvingrow = mysql_fetch_assoc ( $beschrijvingresult ) ) { 
                                    echo $beschrijvingrow["BESCHRIJVING"]."<br />"; 
                                } 
                            } else { 
                                echo "geen beschrijving<br />"; 
                            } 
                        } 
                        $fotoquery = "select FOTO from foto where Catalog_ID=".$row["ID"]; 
                        if ($fotoresult = mysql_query($fotoquery)) { 
                            if (mysql_num_rows($fotoresult)<>0) { 
                                while ( $fotorow = mysql_fetch_assoc ( $fotoresult ) ) { 
                                    echo '<a title="' . $row['FOTO'] . '" href"images/big/' . $row['FOTObig'] . "' rel="lightbox"><img src="images/thumbs/' . $fotorow['FOTOthumb']."' alt='".$row["MERK"]." - ".$row["KLEUR"]." - ".$row["BOUWJAAR"]."' /><br />"; 
                                } 
                            } else { 
                                echo "<img src='geenfoto.jpg' alt='geen foto' /><br />"; 
                            } 
                        } 
                    } 
                } else { 
                    echo "Geen auto's gevonden voldoen aan uw zoekopdracht."; 
                } 
            } 

        }
}
 
?>
<hr />
<form method="post" action="results.php">
    <select name="merk[]" size="3" multiple>
        <option selected="selected">Merk</option>
        <option><?php echo implode("</option><option>",$merken); ?></option>
    </select>
    <select name="kleur[]" size="3"multiple>
        <option selected="selected">Kleur</option>
        <option><?php echo implode("</option><option>",$kleuren); ?></option>
    </select>    
    <input type="submit" value="zoeken" />
</form>
je hebt iets fout staan met je quotes:

echo "<img src='geenfoto.jpg' alt='geen foto' /><br />"; 

kan beter:

echo '<img src="geenfoto.jpg" alt="geen foto" /><br />';

zijn. en zo bij alle delen...
Regel 50

' . $fotorow['FOTOthumb']."' Moet zijn

' . $fotorow['FOTOthumb'].'"
en je vergelijking in je foreach loops klopt niet helemaal:

  foreach($_POST["merk"] as $merk)
  {
    if (in_array($merk, $merken))
    {
      $where[] = "MERK='$merk'";
    }
  }
}
       if (isset($_POST["kleur"]))
{
  foreach($_POST["kleur"] as $kleur)
  {
    if (in_array($kleur, $kleuren))
    {
      $where[] = "KLEUR='$kleur'";
    }
  }

hoofdlettergebruik bijv.
en je quotes gebruik...

edit:
sorry verkeerd gezien.
Waar zie jij een 'vergelijking' ?

Hij stopt vars in een array, hij vergelijkt niets.

Reageren