adrinator: SatzTEILE suchen mit PHP suchen?

Ich habe jetzt eine Suchfunktion mit PHP auf meine Homepage eingebaut. Das sieht bisher ungefähr so aus:

------------------------Code-Anfang---------------------
$abfrage = "SELECT * FROM daten ORDER BY name";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
if ($row->name == $_POST["swort"])
{
Hier wird das zu suchende Objekt ausgegeben
}
------------------------Code-Ende-----------------------

Aber hier wird leider nur das angezeigt, was GENAU dem Suchwort entspricht. Ich würde aber auch gerne, wenn ich mehrere Wörte eingebe, dass beim "Ergebnis" auch die einzelnen Wörter gesucht werden.
Beispiel:

Bisher war es so:

Suche nach: Anno
Gefunden: 0

Suche nach: Anno 1602
Gefunden: 1

So soll es sein:

Suche nach Anno:
Gefunden: 1

Suche nach: Anno 1602
Gefunden: 1

Kennt jemand die Antwort. Ich glaube es gibt dafür auch ein Zeichen, anstatt == oder so. Bitte helft mir danke. Gesucht habe ich schon --> nix gefunden

adrian

  1. ------------------------Code-Anfang---------------------
    $abfrage = "SELECT * FROM daten ORDER BY name";
    $ergebnis = mysql_query($abfrage);
    while($row = mysql_fetch_object($ergebnis))
    {
    if ($row->name == $_POST["swort"])
    {
    Hier wird das zu suchende Objekt ausgegeben
    }
    ------------------------Code-Ende-----------------------

    Lass das doch direkt MySQL machen, etwa so
    $abfrage ="SELECT bestimmte, Datenfelde, nicht, alles FROM daten WHERE name LIKE '".$_POST["swort"]."' ODER BY name";

    --
    sh:( fo:| ch:? rl:( br:& n4:& ie:{ mo:} va:) de:µ_de:] zu:) fl:( ss:| ls:[ js:(
    1. echo $begrüßung;

      Lass das doch direkt MySQL machen, etwa so
      $abfrage ="SELECT bestimmte, Datenfelde, nicht, alles FROM daten WHERE name LIKE '".$_POST["swort"]."' ODER BY name";

      Bitte die kontextgerechte Behandlung von Werten nicht vergessen, sonst gibt es wie in diesem Beispiel eine SQL-Injection-Lücke oder zumindest Fehler bei eingegebenen Suchwörtern wie O'Brien.
      Und dann wolltest du ja eine Mustersuche vorschlagen, also must du auch ein Muster in die Suchanfrage einbauen.

      $abfrage = sprintf("SELECT bestimmte, Datenfelder, nicht, alles FROM daten WHERE name LIKE '%s%%' ORDER BY name",
        mysql_real_escape_string($_POST["swort"]));

      Das %s%% ist so zu lesen: %s ist ein Platzhalter, an dem der behandelte Wert eingesetzt wird. Das %% steht für das LIKE-Jokerzeichen % von MySQL, das gemäß der sprintf()-Syntax verdoppelt werden muss.

      echo "$verabschiedung $name";

      1. Also danke erstmal für die schnellen und hilfreichen Antworten!
        Ein Problem habe ich jetzt noch, hier das Beispiel zum Problem:

        Eintrag in der Datenbank: Anno 1602

        Suche Nach: Anno
        Gefunden: Anno 1602

        Suche nach 1602
        Gefunden: ---

        Also er findet immer nur das erste Wort. Ist bei allen Begriffen so...

        Woran könnte es liegen, hier mal ein ausfürhlicherer Code, also original:

        $abfrage = sprintf("SELECT * FROM daten WHERE name LIKE '%s%%' ORDER BY name",
          mysql_real_escape_string($_POST["swort"]));
        $ergebnis = mysql_query($abfrage);
        while($row = mysql_fetch_object($ergebnis))
        {

        ------------Code-Anfang----------
        echo "<b>",$row->name,"</b>";
        echo " (";
        echo $row->datum;
        echo " - ";
        echo $row->typ;
        echo ")<br>";
        if ($row->text != "")
        {
        echo $row->text;
        }
        else
        {
        echo "<a href='upload/";
        echo $row->url;
        echo "'>";
        echo $row->url;
        echo "</a>";

        echo "<br><br><img src='images/trenn.gif'><br><br>";

        }
        }

        ------------Code-Ende------------
        Danke schonmal für Antworten.

        1. So gehört es:

          Also danke erstmal für die schnellen und hilfreichen Antworten!
          Ein Problem habe ich jetzt noch, hier das Beispiel zum Problem:

          Eintrag in der Datenbank: Anno 1602

          Suche Nach: Anno
          Gefunden: Anno 1602

          Suche nach 1602
          Gefunden: ---

          Also er findet immer nur das erste Wort. Ist bei allen Begriffen so...

          Woran könnte es liegen, hier mal ein ausfürhlicherer Code, also original:

          ------------Code-Anfang----------
          $abfrage = sprintf("SELECT * FROM daten WHERE name LIKE '%s%%' ORDER BY name",
            mysql_real_escape_string($_POST["swort"]));
          $ergebnis = mysql_query($abfrage);
          while($row = mysql_fetch_object($ergebnis))
          {
          echo "<b>",$row->name,"</b>";
          echo " (";
          echo $row->datum;
          echo " - ";
          echo $row->typ;
          echo ")<br>";
          if ($row->text != "")
          {
          echo $row->text;
          }
          else
          {
          echo "<a href='upload/";
          echo $row->url;
          echo "'>";
          echo $row->url;
          echo "</a>";

          echo "<br><br><img src='images/trenn.gif'><br><br>";

          }
          }

          ------------Code-Ende------------
          Danke schonmal für Antworten.

          1. ------------Code-Anfang----------
            $abfrage = sprintf("SELECT * FROM daten WHERE name LIKE '%s%%' ORDER BY name",

            Ohne Garantie: Probuiere mal %%%s%%, sonst sucht er nur Wörtern, die von Anfang an mit der Suchphrase übereinstimmen.