Suche

beassy

Grünschnabel
Hi,
ich bin der Verzweifelung nahe.
Es geht um eine Suchmaske einer Tauschbörse in der es
Angebot-Anzeigen, Such-Anzeigen und Kategorien gibt. Der User
hat mehrere Möglichkeiten zu suchen.

1. nur durch Eingabe eines Suchbegriffs (das geht)
2. Suchbegriff und Katerorie (geht auch)
3. Suchberiff und Status (Such-oder Angebot) geht auch

wenn aber der Suchbegriff und der Status und die Kategorie gewählt
worden ist gehts nicht mehr, das heisst das Suchergebnis stimmt nicht.
Ich finde den Fehler einfach nicht.
Hoffentlich könnt ihr mir helfen.

im Voraus Danke Danke Danke
Gruss Indra

Hier mal das Script
PHP:
<? 
if (isset($_POST['anf_senden'])|| isset($_GET['limit'])){ 
    if (isset($_POST['anf_senden'])) 
    { 
        $Anzeige1=$_POST ['Anzeige']; 
        $such_biet=$_POST['such_biet']; 
        $Kategorie=$_POST['Kategorie']; 
        $limit=$_POST['limit']; 
    } 
    if (isset($_GET['limit'])) 
    { 
        $Anzeige1=$_GET ['search']; 
        $such_biet=$_GET['such_biet']; 
        $kat_id=$_GET['id']; 
        $limit=$_GET['limit']; 
    } 
    $kat_id=$Kategorie; 
    $Anzeige="%".$Anzeige1."%"; 
    //vielleicht der Fehler beim dritten or
    if(($kat_id!=0)OR($such_biet==b)OR($such_biet==s)OR(($kat_id!=0) 
    AND($such_biet==b)OR($such_biet==s))) 
    { 
        $sql="SELECT * FROM anzeigen where ((kat_id='$kat_id' AND Anzeige 
        LIKE '$Anzeige')OR(such_biet='$such_biet' AND Anzeige LIKE '$Anzeige') 
        OR($kat_id='$kat_id' AND $such_biet='$such_biet' AND Anzeige LIKE '$Anzeige'))"; 
    } 
    else 
    { 
        $sql="SELECT * FROM anzeigen where Anzeige LIKE '$Anzeige'"; 
    } 
    $result=mysql_db_query($db_name,$sql,$connect); 
    $anzahl=mysql_num_rows($result); 
    if($anzahl==0) 
        echo "Es konnten leider keine Übereinstimmungen gefunden werden!"; 
    $anzahlseiten=$anzahl/$anzeigenaufseite; 
    $seiten=ceil($anzahlseiten); 
    if($limit=="") 
        $limit=0; 
    $start=$limit*$anzeigenaufseite; 
    if(($kat_id!=0)OR($such_biet==b)OR($such_biet==s)OR(($kat_id!=0) 
    AND($such_biet==b)OR($such_biet==s))) 
    { 
        $sql2="SELECT * from anzeigen where ((kat_id='$kat_id' AND Anzeige 
        LIKE '$Anzeige')OR(such_biet='$such_biet' AND Anzeige LIKE '$Anzeige') 
        OR ($kat_id='$kat_id' AND $such_biet='$such_biet' AND Anzeige 
        LIKE '$Anzeige')) LIMIT ".$start.",$anzeigenaufseite"; 
    } 
    else 
    { 
        $sql2="SELECT * from anzeigen where Anzeige LIKE '$Anzeige' LIMIT ".$start.",$anzeigenaufseite"; 
    } 
    $result2=mysql_db_query($db_name,$sql2,$connect); 
    while($anz=mysql_fetch_array($result2)) { 
?>
Mod: Ich habe den Quellcode mal eingerückt.
 
Lass Dir einfach mal den endgültigen sql-String ausgeben und dann siehste vielleicht, wo der Haken iss.
 
Hi,

mir kommt es so vor als ob er das dritte or gar nicht nimmt und ich habe keine Ahnung warum

Gruss Indra
 
Hi,

mach mal nach dem du den sql-string zusammen gesetzt hast ein:

PHP:
echo "<p>".$sql."</p>\n";

und schau dir diese Ausgabe mal genau an. Dann wirst du sehr schnell sehen wo der fehler liegt.

Gruß
 
Hi,
erst einmal danke für eure Hilfe.
Ein Fehler habe ich gefunden (lol was bin ich blind),
aber leider geht es immer noch nicht.
Ich habe auch mal ein echo vor gesetzt und als Test mal den Suchberiff
auto eingegeben, Status Biete (b) gewählt und Kategorie 2. Die Suche dürfte
keine Übereinstimmung geben, da der Status Suche (s) sein müsste um
gefunden zu werden. Aber er zeigt es mir trotzdem an.
wenn ich alles separat suchen lasse dann gehts

viele viele Dank
Gruss Indra

Ich poste mal das Ergebnis des Sqls
PHP:
SELECT * FROM anzeigen where ((kat_id='2' AND Anzeige LIKE '%auto%')OR(such_biet='b' AND Anzeige LIKE '%auto%')OR(kat_id='2' AND such_biet='b' AND Anzeige LIKE '%auto%'))


Ich poste auch nochmal das verbesserte (*schäm*) Script
PHP:
<? 
if (isset($_POST['anf_senden'])|| isset($_GET['limit'])){ 
    if (isset($_POST['anf_senden'])) 
    { 
        $Anzeige1=$_POST ['Anzeige']; 
        $such_biet=$_POST['such_biet']; 
        $Kategorie=$_POST['Kategorie']; 
        $limit=$_POST['limit']; 
    } 
    if (isset($_GET['limit'])) 
    { 
        $Anzeige1=$_GET ['search']; 
        $such_biet=$_GET['such_biet']; 
        $kat_id=$_GET['id']; 
        $limit=$_GET['limit']; 
    } 
    $kat_id=$Kategorie; 
    $Anzeige="%".$Anzeige1."%"; 
    //vielleicht der Fehler beim dritten or ?
    if(($kat_id!=0)OR($such_biet==b)OR($such_biet==s)OR(($kat_id!=0) 
    AND($such_biet==b)OR($such_biet==s))) 
    { 
        $sql="SELECT * FROM anzeigen where ((kat_id='$kat_id' AND Anzeige 
        LIKE '$Anzeige')OR(such_biet='$such_biet' AND Anzeige LIKE '$Anzeige') 
        OR(kat_id='$kat_id' AND such_biet='$such_biet' AND Anzeige LIKE '$Anzeige'))"; 
    } 
    else 
    { 
        $sql="SELECT * FROM anzeigen where Anzeige LIKE '$Anzeige'"; 
    } 
    $result=mysql_db_query($db_name,$sql,$connect); 
    $anzahl=mysql_num_rows($result); 
    if($anzahl==0) 
        echo "Es konnten leider keine Übereinstimmungen gefunden werden!"; 
    $anzahlseiten=$anzahl/$anzeigenaufseite; 
    $seiten=ceil($anzahlseiten); 
    if($limit=="") 
        $limit=0; 
    $start=$limit*$anzeigenaufseite; 
    if(($kat_id!=0)OR($such_biet==b)OR($such_biet==s)OR(($kat_id!=0) 
    AND($such_biet==b)OR($such_biet==s))) 
    { 
        $sql2="SELECT * from anzeigen where ((kat_id='$kat_id' AND Anzeige 
        LIKE '$Anzeige')OR(such_biet='$such_biet' AND Anzeige LIKE '$Anzeige') 
        OR (kat_id='$kat_id' AND such_biet='$such_biet' AND Anzeige 
        LIKE '$Anzeige')) LIMIT ".$start.",$anzeigenaufseite"; 
    } 
    else 
    { 
        $sql2="SELECT * from anzeigen where Anzeige LIKE '$Anzeige' LIMIT ".$start.",$anzeigenaufseite"; 
    } 
    $result2=mysql_db_query($db_name,$sql2,$connect); 
    while($anz=mysql_fetch_array($result2)) { 
?>
 
Zurück