Problem mit Schleife?

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%‘

[/CODE]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();

[/PHP]

hat sich erledigt^^ hatte ne blockade :stuck_out_tongue:

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ü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."
Query: ".$query; } } } $suche = new search("test", "Hi, dies ist ein Test", "Suche...", array("name", "id"), "id", true); echo $suche->find(); ?>

[/PHP]

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 :slight_smile: