Seite 1 von 2

[1.2.x]Suchmod

Verfasst: 8. Oktober 2009, 00:54
von daniel
Erlaubt die Suche auf textseiten. Allerdings nur die, die jeder Gast sehen kann.

Danke an matze93, der mich darauf hingewiesen hat, dass im Lexikon ein Suchscript ja vorhanden ist und dieses für die Textseiten genauso nützlich ist.

Re: Suchemod

Verfasst: 8. Oktober 2009, 18:56
von matze93
Fehlermeldung:

Code: Alles auswählen

Etwas stimmte mit dem Query nicht: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE level=5' at line 7

Re: Suchemod

Verfasst: 8. Oktober 2009, 19:27
von daniel
hab den Fehler berichtigt.
hoff ich jedenfalls.

Re: Suchemod

Verfasst: 8. Oktober 2009, 19:36
von matze93
Nun ja, ich hab einfach

Code: Alles auswählen

WHERE level=5
entfernt und es hat funktioniert. So sind zwar versteckte oder Seiten für Mods in der Suche auffindbar, aber User können diese nicht sehen. Außerdem habe ich solche Seiten nicht. Also hat sich für mich schon alles geklärt.

Re: Suchemod

Verfasst: 8. Oktober 2009, 19:41
von daniel
ja. es lag dadran, dass

Code: Alles auswählen

	WHERE `level`=5
und

Code: Alles auswählen

	ORDER BY `title` ASC
in der falschen reinfolge waren.

Re: Suchmod

Verfasst: 8. Oktober 2009, 20:08
von matze93
Ja, ich habs auch verbessert. Aber du hast bei der ausgabe der Seiten .php geschrieben. Das sollte eigentlich sites.php sein, sonst öffnet er die seite nicht, da er sie nicht findet.

Re: Suchmod

Verfasst: 8. Oktober 2009, 21:58
von daniel
ok.
danke.
Bin jetzt am Leptop. Werde mich drum kümmern, wenn ich wieder an meinem Desktop-PC bin.

Re: Suchmod

Verfasst: 13. Oktober 2009, 17:23
von matze93
Und dann würde ich noch

Code: Alles auswählen

search();
mit

Code: Alles auswählen

if( isset( $_POST["search"] ) && !empty( $_POST["search"] ) )
{
  search();
}  
ersetzen. Dann sieht man die Ausgabe nur, wenn wirklich etwas eingegeben wird.

Und dann kann man natürlich noch ein paar Spielerreihen machen:

Code: Alles auswählen

print "<input size='30' maxlength='50' type='text' name ='search' />
mit

Code: Alles auswählen

print "<input size='30' maxlength='50' value='Suchbegriff hier eingeben' type='text' name ='search' />
ersetzen

Re: Suchmod

Verfasst: 27. Oktober 2009, 10:24
von matze93
Bei mir würde dann die fertige Suche so aussehen:

Code: Alles auswählen

<?php
define("IN_EASYHP", true);

include "includes/mysql.php";
include "common.php";
include "includes/website.php";

echo make_message(SITE_IMG, "Suche", "Diese Homepage durchsuchen", '', '');

echo "<div id='content'><form action='search.php?action=search' method='POST'>";
echo "<input size='30' maxlength='50' value='Suchbegriff hier eingeben' type='text' name ='search' /><br>";
echo "<input type='submit' name='absenden' value='Suchen'class='button' />";
echo "</form><br /><br />";

function search()
{
    echo "<table>";
    $search = mysql_real_escape_string($_POST['search']);
    $table = SEARCH_TABLE;
    $ergebnisse = array();
    $sql = 'SELECT
        id,
        title,
        text
    FROM
        '.SITES_TABLE.'
    WHERE `level`=5
    ORDER BY `title` ASC';

    $result = mysql_query($sql);
    if (!$result) {
        die ('Etwas stimmte mit dem Query nicht: '.mysql_error());
    }
    
    while ($row = mysql_fetch_assoc($result))
    {
        $seitenid = $row['id'];

        $pos = stripos($row['title'], $search);
        if ($pos !== false)
        {
            echo "<tr><td>";
            echo "<font size='4'><a href='sites.php?id=".$seitenid."'>".$row['title']."</a></font>";
            $gefunden = 1;
            $ergebnisse[] = $row['id'];
        }
    }
    if (!$gefunden)
        echo "<tr><td>Keine Seiten gefunden die '$search' im namen enthalten</td></tr>";
    $gefunden = "";
    echo "<tr><td><br /><font size='4'>'$search' kommt auf folgenden Seiten vor:</font></td></tr>";
    $result = mysql_query($sql);
    if (!$result) {
        die ('Etwas stimmte mit dem Query nicht: '.mysql_error());
    }
    while ($row = mysql_fetch_assoc($result))
    {
        $pos = stripos($row['text'], $search);
        if ($pos !== false)
        {
            if(!in_array($row['id'],$ergebnisse))
            {
                echo "<tr><td>";
                echo "<font size='4'><a href='sites.php?id=".$row['id']."'>".$row['title']."</a></font>";
                echo "</td></tr>";
                $gefunden = 1;
            }
        }
    }
    if (!$gefunden)
        echo "<tr><td>keine Suchergebnisse</td></tr>";
    echo "</table>";
}

if( isset( $_POST["search"] ) && !empty( $_POST["search"] ) )
{
  search();
}  

echo "</div>";

footer(0);

?>
Ich bedanke mich dann mal für deine Vorlage Daniel.

Re: Suchmod

Verfasst: 27. Oktober 2009, 11:45
von daniel
fetife Suche?