[PHP] News-Suche erstellen mit PHP

KonKorT

Lt. Commander
Registriert
Jan. 2004
Beiträge
1.590
Hallo, wie stelle ich es an das ich eine News-Suche durchführen kann.

Ich möchte also, dass man in meine News in ein Eingabefeld einen Suchbegriff reinschreiben kann und das man dann automatisch die News erhält, die dieses eingegebene Wort enthält.

Es soll dann aus jenen 12 News-Dateien herausgesucht werden. (beispielsweise (news_okt2005, news_sep2005, .... )

Würde mich über Antworten sehr freuen :)
 
Hallo.

zunächst brauchst du wohl eine Datenbasis (Datenbank - SQL / MySQL) um eine Anfrage zu stellen. Die Anfrage stellst du dann mit dem Suchstring an spezielle zu suchende Felder der Datenbank. Den Rückgabewert auswerten. Soviel zur Theorie, hast du denn PHP / MySQL schon im Einsatz?

Mfg
 
Re: AW: [PHP] News-Suche erstellen mit PHP

Vlt waere es einfacher am anfang(denke die Seite ist nicht so gross) die Google Suche zu benutzen. Nebeneffekt waere dabei, dass du fuer die Googlesuche von Google sogar geld bekommst.
 
Hallo,

sehe ich das richtig, das du im Moment in den entsprechenden HTML-Dateien nur statische Ablegst?
In diesem Fall würde ich dir, wie The Prophet angesprochen hat, zur Verwendung einer Datenbank raten.
Anderseits könntest du die Dateien auch mit fopen() öffnen und dann nach den entsprechenden Suchbegriffen dursuchen.
Anschließend müsstest du dann noch mittels regulärer Ausdrücke oder ähnlichem, die entsprechenden, zutreffenden Meldungen ausgeben.
Ich mag aber erst gar nicht wissen, wie dies performancemäßig aussieht. ;)

MfG mh1001
 
The Prophet schrieb:
Hallo.

zunächst brauchst du wohl eine Datenbasis (Datenbank - SQL / MySQL) um eine Anfrage zu stellen. Die Anfrage stellst du dann mit dem Suchstring an spezielle zu suchende Felder der Datenbank. Den Rückgabewert auswerten. Soviel zur Theorie, hast du denn PHP / MySQL schon im Einsatz?

Mfg

Ja, ich habe eine Datenbank, für`s Forum. Habe aber keine Ahnung wie ich das machen soll mit einer Datenbank. Habe mich bisher nur auf HTML spezialisiert und die Dateien haben eine PHP Endung, da ich die Rändern includen wollte/musste.

@ flexius

Merkwürdigerweise werde ich in Google zumindest nur zum Teil aufgenommen. Das wundert mich und ärgert mich auch, denn bei allen anderen Suchmaschinen ala Altavista, Lycoos, Yahoo, MSN ... bin ich komplett zu finden ...
 
Zuletzt bearbeitet:
Hier findest du ein kleines Einsteiger-Tutorial zu dieser Thematik.
Mit ein bisschen Anpassung dürfte dieses schon für deine Zwecke ausreichen.
Auch ist ein datanbankgestütztes System auch viel leichter zu Administrieren, als jedes mal in den PHP-Files herumzuschreiben. ;)

[...]Merkwürdigerweise werde ich in Google zumindest nur zum Teil aufgenommen. Das wundert mich und ärgert mich auch, denn bei allen anderen Suchmaschinen ala Altavista, Lycoos, Yahoo, MSN ... bin ich komplett zu finden ...
Woran dies genau liegt lässt sich nicht genau sagen.
Allerdings legt Google unter anderem auch auf die meta-Tags wert. Wenn da in jedem description-Element das selbe steht kann es schnell passieren, dass Google die Unterseiten als Duplikate betrachtet.
Ein Seitenlayout mittels CSS wäre dabei auch nicht von Nachteil.
Im Moment besteht etwa nur 20% des Quellcodes aus Content, wobei es bei dem Rest HTML-Tags handelt.
Ein besserers Verhätnis zwischen Content und Seitenquelltext würden dir die Suchmaschinen sicher auch nicht übel nehmen. ;)

MfG mh1001
 
Zuletzt bearbeitet:
Ich soll also für jede einzelne Datei auch eigene Meta-Names haben?

Ich habe mir jetzt mal das Tutuorial durchgelesen, sehr interessant. Habe den Anweisungen auch gefolgt und kann nun dynamisch eine News schreiben, wenn ich jedoch dann auf "Speichern" gehe kommt die Meldung:

"No Database selected"

Das ganze ist zwar ganz schön, löst aber nicht wirklich mein Problem, denn ich möchte ja nur nach News suchen können ;)
 
Ich soll also für jede einzelne Datei auch eigene Meta-Names haben?
Ja, dies wäre das optimale. Solange du diese aber nicht auch dynamisch generierst ist dies aber auch sicher mit einigem an Arbeit verbunden. ;)
Ansonsten kannst du diese Angaben bei genügend Content auf Untersiten auch einfach ganz weglassen, da moderne Suchmaschinen dann in der Regel einfach den eigentlichen Content heranziehen.

Bezüglich deines Probelms mit dem Newsscript:
Hast du denn auch eine Datenbank und die entsprechende Tabelle in dieser erstellt sowie diese Angaben auch im Script eingetragen?

Bezüglich der Suchfunktion weis ich jetzt nicht genau wie es mit deinen bisherigen Kenntnissen aussieht.
Eigentlich reicht es den Abfrage-Query in soweit anzupassen, dass du am Ende noch ein "WHERE gewuenschte_tabellenzelle LIKE '%$suchbegriff%" hinzufügst, wobei hier die Variable "$suchbegriff" zum Beispiel über ein Formular übergeben werden kann.
Wenn magic_quotes auf deinem Server nicht aktiviert ist solltest du dann noch die Funktion addslashes() auf diese anwenden, um entsprechende Steuerzeichen zu maskieren.
Dazu kannst du dir am besten auch einmal die entsprechenden kleinen Kapitel auf Schattenbaum.net anschauen.

MfG mh1001
 
Zuletzt bearbeitet:
Also eine Datenbank habe ich und ich habe dann eben die Ordner admin, inc und tpl angelegt und in "inc/opendb.inc.php" habe ich auch meine Zugangsdaten aufgerufen ...

Und mit "admin/index.php" verfasse ich eben die News und das geht auch bis zum letzten Schritt, bis ich eben auf "Speichern" gehe ...


Es ist es also sogar vielleicht besser, wenn ich die Meta-Keywords und description herausnehme für die Suchmaschine?
 
Zuletzt bearbeitet:
"No Database selected"
Dieser Fehler deutet eigentlich darauf hin, dass die Variable $con_db nicht definiert wurde oder inhaltslos ist.
Überprüfe noch einmal, ob der Datenbankname in der Konfigurationsdatei auch wirklich ordnungsgemäß zugewiesen wurde. Anders idt der Fehler eigentlich nicht zu erklären.

Bezüglich der meta-Angaben:
Bevor du auf allen Seiten die gleichen Angaben in den meta-Tags verwendest ist es auf jeden Fall besser diese wegzulassen.
Eine jeweilige seperate Definition für jede Unterseite wäre natürlich das Optimum. ;)

MfG mh1001
 
Das Problem hat sich nicht geändert, habe auch die Daten nochmal überprüft.

Aber ich soll nur die "Meta-Keywords" herausnehmen oder jede einzelne Meta-Name Angabe?

Ohne die Keywords sehen meine Meta-Names dann so aus:

  • <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
  • <meta http-equiv="Language" content="de" />
  • <meta name="title" content="Hardware-Infos" />
  • <meta name="author" content="Hardware-Infos" />
  • <meta name="publisher" content="Hardware-Infos" />
  • <meta name="copyright" content="Copyright © 2004-2005 Hardware-Infos" />
  • <meta name="description" content="Hardware-Infos setzt sich hauptsächlich mit den Kernstücken in jedem Computer auseinander, dem Prozessor und der Grafikkarte. Desweiteren bietet Ihnen Hardware-Infos Downloads, Berichte und Tests an" />
  • <meta name="audience" content="Alle" />
  • <meta name="robots" content="index,follow" />
  • <meta name="robots" content="noarchive" />
  • <meta name="page-topic" content="Hardware, Software, Internet" />
  • <meta name="revisit-after" content="7 days" />
 
[...] Aber ich soll nur die "Meta-Keywords" herausnehmen oder jede einzelne Meta-Name Angabe? [...]
Prinzipiell geht es nur um die Keywords und die Description. Die anderen meta-Angaben kannst du ruhig drinnen lassen. ;)

Btw noch ein Tipp am Rande:
Du solltest dich bei deinen HTML-Dokumenten auch auf einen Doctype festlegen.
Im Moment benutzt du teilweise ansätze von XHTML und schließt Tags, wie zum Beispiel die meta- und link-Tags, anderseits schließt du zum Beispiel andere Tags wieder nicht und verwendest Attribute in Großbuchstaben, was zum Beispiel wieder nicht zum XHTML-Standard gehört. ;)

Zu dem Datenbankproblem:

Lege einmal eine PHP-Datei mit folgendem Inhalt an:
PHP:
<?php
error_reporting(E_ALL);

$server = "localhost";
$user = "username";
$pass = "passwort";
$datenbank = "datenbankname";

$mysql_verbindung = mysql_connect($server, $user, $pass);
mysql_select_db($datenbank, $mysql_verbindung);

mysql_error();
?>
Die obigen Variablen musst du natürlich entsprechend anpassen.
Sollte das Problem wirklich mit dem Verbindungsaufbau zur Datenbank zusammenhängen, so sollte es so eindeutig lokalisierbar sein.

MfG mh1001
 
Zurück
Oben