Ihre Webseite wird mit der Zeit immer größer, auf verschiedenen Seiten befinden
sich Links zu ein und derselben Seite und Sie wollen all Ihre Links nocheinmal auf einer
Übersichtsseite zusammenfassen. Was hindert Sie daran? Zu viel Tipparbeit? Was ist,
wenn sich ein Link ändert? Sicherlich haben Sie genauso wenig Lust dazu, alle Seiten
nach zu ändernden Links zu durchsuchen, wie ich.
Zu diesem Zweck habe ich mir eine kleine, aber sehr nützliche Funktion gebaut, die
mir den gewünschten Link aus einer MySQL-Datenbank holt und den fertigen HTML-Code
in den Text einbaut.
Als erstes legen Sie die benötigten Tabellen, Listing 1 und 2, in Ihrer Datenbank an:
CREATE TABLE gruppe (
id int(3) DEFAULT \'0\' NOT NULL auto_increment,
g_name varchar(30),
sort int(2) DEFAULT \'0\' NOT NULL,
PRIMARY KEY (id)
);
|
|
Listing 1: Tabellenstruktur für Tabelle gruppe
|
Die Tabelle gruppe dient zur Gruppierung der Links in der Übersichtsseite.
Wenn Sie die SQL-Befehle 1:1 übernehmen, können Sie maximal 999 Gruppen anlegen
(id int(3)) und Gruppennamen von 30 Zeichen Länge vergeben (g_name varchar(30)). Sie
sehen, die Zahl in der Klammer gibt die Feldlänge an. Das Feld sort wird in der
Übersichtsseite gebraucht, wenn Sie eine feste Reihenfolge der Gruppen wünschen.
So könnte der Inhalt der Tabelle gruppe aussehen:
id : 1
g_name : Kids
sort : 3
CREATE TABLE links (
id int(4) DEFAULT \'0\' NOT NULL auto_increment,
gruppe int(3),
url varchar(255),
text varchar(255),
target varchar(10),
sort int(2) DEFAULT \'0\' NOT NULL,
bemerkung tinytext,
PRIMARY KEY (id)
);
|
|
Listing 2: Tabellenstruktur für Tabelle links
|
In der Tabelle links werden, wie sollte es anders sein, die Links gespeichert.
Über das Feld gruppe werden später die tabellen links und gruppe
verknüpft. Das Feld text beinhaltet den Text, der in Ihrer Homepage als Link
markiert ist, target den Namen des Frames, in der der Link geöffnet wird, und
bemerkung wird wieder für die Übersichtsseite gebraucht.
So könnte der Inhalt der Tabelle links aussehen:
id : 9
gruppe : 3
url : http://www.derkleineeisbaer.de/
text : Der kleine Eisbär
target : _blank
sort : 0
bemerkung : Ein klasse Film, nicht nur für die Kleinen.
Die PHP-Funktion aus Listing 3 speichern Sie der Übersicht halber in einer
extra Datei ab. Diese wird später per include() in das HTML-Dokument eingebunden.
<?php
function insert_link($id) {
$database = "links"; // Name Ihrer Datenbank
$server = "localhost"; // Name des Datenbankservers (meist localhost)
$user = "www"; // Ihr User
$passwd = ""; // Passwort des Users
// die Abfrage der Datenbank selbst
$result = mysql_connect($server,$user,$passwd);
$query = "SELECT url, text, target FROM links WHERE id=$id;";
$result = mysql_db_query($database,$query);
// Das Abfrageergebnis wird in Variablen gespeichert
list($url, $text, $target) = mysql_fetch_array($result);
// Der HTML-Code wird erzeugt und ...
$link = "<a href=\"$url\" target=\"$target\">$text</a>\n";
// ... an der Stelle eingebunden, von der die Funktion aufgerufen wurde
return $link;
}
?>
|
|
Listing 3: fnc_insert_link.php
|
Und so könnte Ihre HTML-Datei aussehen (Listing 4). Wenn Sie mit dem include()
Probleme haben sollten, packen Sie an dessen Stelle einfach den Quelltext der
kompletten Funktion (Listing 3).
<?php
include("fnc_insert_link.php");
?>
<html>
<head>
</head>
<body>
Wenn auch Sie in den Film <?php echo insert_link(9); ?> gehen wollen, werden sich
Ihre Kinder sicherlich freuen.
</body>
</html>
|
|
Listing 4: Ihre HTML-Datei
|
Und? Haben Sie es ausprobiert?
Wenn alles läuft, können wir uns ja jetzt der Link-Übersicht (Listing 5)
widmen. Vielleicht schauen Sie sich das Script erst einmal an. Es handelt sich nur um
die Tabelle mit der Linkübersicht, die in eine vorhandene HTML-Seite einzubinden ist.
|
<table border="0" width="100%" cellspacing="0" cellpadding="5">
<?php
$database = "links";
$server = "localhost";
$user = "www";
$passwd = "";
$result = mysql_connect($server,$user,$passwd);
$query = "SELECT id, g_name FROM gruppe ORDER BY g_name;";
$result_gruppe = mysql_db_query($database,$query);
while ($row_gruppe = mysql_fetch_array($result_gruppe)) {
echo "<tr>\n";
echo "<th class=\"beige\" colspan=\"2\">$row_gruppe[g_name]</th>\n";
echo "</tr>\n";
$query = "SELECT url, text, target, bemerkung FROM links WHERE gruppe=$row_gruppe[id] ORDER BY text;";
$result_link = mysql_db_query($database,$query);
while ($row_link = mysql_fetch_array($result_link)) {
echo "<tr>\n";
echo "<td valign=\"top\"><a href=\"$row_link[url]\" target=\"$row_link[target]\">$row_link[text]</a></td>\n";
echo "<td>$row_link[bemerkung]</td>\n";
echo "</tr>\n";
}
echo "<tr><td colspan=\"2\"> </td></tr>\n";
}
?>
</table>
|
|
Listing 5: Übersichtsseite aller Links
|
Was passiert? Als erstes kommt die Abfrage der Tabelle gruppe. So, wie der Select-Befehl
geschrieben ist, sortiert MySQL die Daten nach dem Gruppennamen (ORDER BY g_name). Sie
erinnern sich, wir haben in dieser Tabelle auch ein Feld sort, womit eine andere
Sortierung festgelegt werden kann. Möchten Sie diese verwenden, anstatt nach
dem Gruppennamen zu sortieren, tauschen Sie g_name einfach gegen sort aus. Gleiches
gilt natürlich auch für den zweiten Select-Befehl, der die zur jeweiligen
Gruppe gehörigen Links aus der Tabelle links holt. Die While-Schleife wird sooft
durchlaufen, bis alle Links für die entsprechende Gruppe gefunden sind. Dann ist
die nächste Gruppe an der Reihe usw.
© 2002 by Andreas Bender - www.bender.li'
Die hier dargestellte Funktion darf frei verwendet und geändert werden, der Artikel nicht.
|