Suchfunktion in der DB

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Suchfunktion in der DB

    Hallo Leute,

    schon wieder mal ich...

    Ich habe ein Diskussionsforum programmiert und hab eine Suchfunktion durch alle Beiträge integriert. (sind in einer DB gespiechert) Wenn jetzt in einem Thread bei mehreren Posts derselbe Suchbegriff zutrifft, liefert mir die mysql Abfrage immer mehrere gleiche Treffer, wie kann ich das verhindern?

    Also bsp:

    $suchen = mysql_query("SELECT threadid, thema FROM $table2 WHERE kommentar LIKE '%$suchbegriff%'");
    $suchennum = mysql_num_rows($suchen);

    for($i = 0;$i <= $suchennum; $i++) {

    $row = mysql_fetch_array($suchen);

    echo " <tr>\n";
    echo " <td><p align=\"center\"><a href=\"showthread.php3?id=".$row[threadid]."\">".$row[thema]."</td>\n";
    echo " </tr>\n";
    }

    nehmen wir an in einem thread kommt in zwei posts das wort 'Himmel' vor. Wenn der Suchbegriff jetzt Himmel lautet bekomm ich als ergebnis zweimal den Thread geliefert, samt link darunter. Ist mir ja klar warum, weil die Abfrage eben zwei Results findet wo die LIKE bedinugng erfüllt ist. Was muss ich mahcen damit er mir jeden Thread nur maximal einmal liefert, auch wenn dort zweimal 'Himmel' vorkommt. DANKE EUCH!

    Andi

    php-Entwicklung | ebiz-consult.de
    PHP-Webhosting für PHP Entwickler | ebiz-webhosting.de
    die PHP Marktplatz-Software | ebiz-trader.de

  • #2
    Das Schlüsselwort DISTINCT sagt mysql, es soll jede Wertemenge(threadid,thema) nur einmal holen.

    SELECT <b>DISTINCT</b> threadid, thema FROM $table2 WHERE kommentar LIKE '%$suchbegriff%'


    Wenn die Themen in verschiedenen Postings eines Threads unterschiedlich sind:

    $found = array();
    <b>while ($row = mysql_fetch_array($suchen)) </b>
    // ist zwar nix anderes als die ersten 3 Zeilen nach deinem mysql_query, aber eben kürzer
    if (!$fount[$row[0]]) {
    // aussieben: jedes thread nur einmal
    $found[$row[0]]=1;
    // markieren: das thread war schon mal
    echo " <tr>\n";
    echo " <td><p align=\"center\"><a href=\"showthread.php3?id=".$row[threadid]."\">".$row[thema]."</td>\n";
    echo " </tr>\n";
    }



    -=* Titus *=-
    | php pro |
    |nerd for life|
    """""""""""""""

    the PHP resource

    Kommentar


    • #3
      Danke

      Super, wirklich ohne euch wäre ich irgendwie verloren und das wegen einem simplen Wort wie 'DISTINCT'.


      php-Entwicklung | ebiz-consult.de
      PHP-Webhosting für PHP Entwickler | ebiz-webhosting.de
      die PHP Marktplatz-Software | ebiz-trader.de

      Kommentar

      Lädt...
      X