Warning: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php on line 58 Datenbankinhalt für Suchmaschinen aufbereiten PHP Tutorials nicht nur für Anfänger php-resource.de
Sie haben eine Datenbankanwendung geschrieben und keiner weiß, welche Daten bei Ihnen zu finden sind. Suchmaschinen gehen natürlich nicht so weit, daß sie Abfragen an die Datenbank senden. Somit bleibt der Inhalt Ihrer Tabelle für Suchmaschinen unsichtbar.
Folgendes Script kann dieses Problem in vielen Fällen lösen. Der Inhalt einer Abfrage wird einfach in eine HTML-Datei ausgegeben, die dann von Suchmaschinen durchsucht werden kann.
<?php
// HTML Tags definieren
$kopf="<HTML><HEAD><TITLE></TITLE></HEAD><BODY>";
// Datenbank abfragen
$result=mysql_query("select * from TABELLE order by XY");
// Verbindung zur HTML Datei herstellen bzw. Datei erzeugen
$fp=fopen("inhalt.html","w");
// Kopfdaten
fputs($fp,$kopf);
while($row = mysql_fetch_array($result)) {
// Abfrageergebnis zu einer Textzeile formen
$data=$row["FELD1"].", ".$row["FELD2"].", ".$row["..."]."<BR>";
// Textzeile
fputs($fp,$data);
}
Mit fopen("inhalt.html","w") wird die Datei inhalt.html geöffnet bzw. erzeugt, falls sie nicht vorhanden ist. Zuerst muß das HTML-Gerüst in die Datei geschrieben werden. Das geschieht mit fputs($fp,$kopf).
In der while-Schleife wird das Ergebnis der Datenbankabfrage zu einer Textzeile ungeformt und ebenfalls in die HTML-Datei geschrieben. Sind alle Datensätze abgearbeitet, wird die Schleife beendet und der HTML-Code durch $ende abgeschlossen. Datei schließen - fertig.
Wenn man Frames benützt, kann man im NOFRAME-Bereich einen Link zur Datei inhalt.html legen, dem die Suchmaschinen problemlos folgen können.
Das Script läßt sich noch dahingehend erweitern, daß man für jeden Datensatz eine eigene HTML-Datei erzeugt.
<?php
// Kopf der HTML Datei definieren
// Text festlegen, der angezeigt werden soll.
$kopf="<html><head><title>Inhalt</title>
<meta name="robots" content="index"></head><body>n
<a href="http://www.URL_Homepage.de/index.html">Startseite</a>n
Bei <a href="http://www.URL_Homepage.de">www.URL_Homepage.de</a>
finden Sie .... ";
include("connect.php3");
$result=mysql_query("select * from TABELLE order by XY where ...");
// Erzeugt die Datei "inhalt.html" in "subdir"
$fp=fopen("subdir/inhalt.html","w");
// HTML-Kopf
fputs($fp,$kopf);
while($row=mysql_fetch_array($result)) {
$ID=$row["ID"];
// Erzeuge einen Dateinamen aus der ID mit der Erweiterung HTML
$datei=$ID.".html";
$pfad="subdir/$ID".".html";
// Erzeugt eine Zeile mit Daten aus der Tabelle
$data="<a href="$datei">$row["feld1"].", ".$row["feld2"]</a><BR>";
// Schreibt die Zeile als Link in die Datei
fputs($fp,$data);
// erzeugt eine weitere HTML-Datei
$fp1=fopen($pfad,"w");
$kopf1="<html><head><title></title>
<meta name="robots" content="index">
</head><body>n";
fputs($fp1,$kopf1);
// Erzeugt den Text, der angezeigt werden soll
$data1="<a href="http://www.URL_Homepage.de/index.html">
Zur Startseite</a>nn
Bei <a href="http://www.URL_Homepage.de">www.URL_Homepage.de</a>
finden Sie ...nn".$row["feld1"].", ".$row["feld2"]."<br>";
// schreibt die Daten in die Datei
fputs($fp1,$data1);
fclose($fp1);
}
// Wenn alle Zeilen abgearbeitet wurden, wird das Dateiende erzeugt ...
$ende="<br>Copyright ...<a href="mailto:blabla@nirgends.com">BlaBla</a>
</body></html>";
fputs($fp,$ende);
// ... und die Datei geschlossen
fclose($fp);
// Damit man sieht, wann das Script fertig ist:
echo "Fertig";
?>
Damit haben Suchmaschinen reichlich Futter und finden viele Dateien und Links, die sie indexieren können.
Die freie MySQL-Alternative MariaDB wurde in der stabilen Version 5.5.23 veröffentlicht und soll einige Verbesserungen gegenüber Oracles Communityversion von MySQL mitbringen.