• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Problem mit Schleife?

Gimli

Mitglied
Ich bin gerade dabei eine suchen klasse zu schreiben. Soweit funktioniert es auch, aber wenn ich mehr als eine Spalte durchsuchen will kriege ich als query folgendes:

Code:
Suchergebnisse zu: Hi, dies ist ein Test
Query: SELECT * FROM test WHERE  OR name LIKE '%Hi,%dies%ist%ein%Test%' OR beschreibung LIKE '%Hi,%dies%ist%ein%Test%'
wie kriege ich das erste OR weg?

Hier mal der Code:

PHP:
class search {
    private $table;
    private $s_string;
    private $standard;
    private $maxlength = 2;
    private $spalten;
    private $order;
    private $desc;
    
    public function __construct($table, $s_string, $standard, $spalten, $order, $desc) {
        $this->table     = $table;
        $this->s_string = $s_string;
        $this->standard = $standard;
        $this->spalten    = $spalten;
        $this->order     = $order;
        $this->desc        = $desc;
    }
    
    public function find() {
        
        if($this->s_string == $standard || empty($this->s_string)) {
            return "Sie müssen etwas zum suchen eingeben!";
        }
        
        elseif(strlen($this->s_string) <= $this->maxlength) {
            return "Der Suchbegriff \"".$this->s_string."\" ist zu kurz!";
        }
        
        else {
            $suche = str_replace(" ", "%", trim($this->s_string, " "));
            $query = "SELECT * FROM ".$this->table." WHERE ";
            if(count($this->spalten) == 1) {
                $query = $query.$this->spalten[0]." LIKE '%".$suche."%'";
            }
            else {
                foreach($this->spalten as $spalte) {
                    $query = $query." OR ".$spalte." LIKE '%".$suche."%'";
                }
            }
            if(isset($this->order)){
                $query = $query."ORDER BY ".$this->order;
                if($this->desc) {
                    $query = $query." DESC";
                }
            }
            //$result = mysql_query($query) or die(mysql_error());
            return "Suchergebnisse zu: ".$this->s_string."<br>Query: ".$query;
        }
    }
}


$suche = new search("test", "Hi, dies ist ein Test", "Suche...", array("name", "beschreibung"), "id", true);
echo $suche->find();
 
hat sich erledigt^^ hatte ne blockade :P

habs wie folgt gelöst:

PHP:
<?php
class search {
    private $table;
    private $s_string;
    private $standard;
    private $maxlength = 2;
    private $spalten;
    private $order;
    private $desc;
    
    public function __construct($table, $s_string, $standard, $spalten, $order, $desc) {
        $this->table     = $table;
        $this->s_string = $s_string;
        $this->standard = $standard;
        $this->spalten    = $spalten;
        $this->order     = $order;
        $this->desc        = $desc;
    }
    
    public function find() {
        
        if($this->s_string == $standard || empty($this->s_string)) {
            return "Sie m&uuml;ssen etwas zum suchen eingeben!";
        }
        
        elseif(strlen($this->s_string) <= $this->maxlength) {
            return "Der Suchbegriff \"".$this->s_string."\" ist zu kurz!";
        }
        
        else {
            $suche = str_replace(" ", "%", trim($this->s_string, " "));
            $query = "SELECT * FROM ".$this->table." WHERE ";
            if(count($this->spalten) == 1) {
                $query = $query.$this->spalten[0]." LIKE '%".$suche."%'";
            }
            else {
                $i = 0;
                foreach($this->spalten as $spalte) {
                    if($i == 0) {
                        $query = $query." ".$spalte." LIKE '%".$suche."%'";
                    }
                    else {
                        $query = $query." OR ".$spalte." LIKE '%".$suche."%'";
                    }
                    $i++;
                }
            }
            if(isset($this->order)){
                $query = $query." ORDER BY ".$this->order;
                if($this->desc) {
                    $query = $query." DESC";
                }
            }
            //$result = mysql_query($query) or die(mysql_error());
            return "Suchergebnisse zu: ".$this->s_string."<br>Query: ".$query;
        }
    }
}


$suche = new search("test", "Hi, dies ist ein Test", "Suche...", array("name", "id"), "id", true);
echo $suche->find();

?>
 
Hallo,

dokumentiere mal eine klasse, du wirst merken, dass man einiges besser machen kann....

wenn du möchtest kann ich dir ein paar hinweise geben :)
 
Zurück
Oben