Ich habe mal ein einfaches Script geschrieben, das eine Tabelle f�llt.
Aus dieser k�nnen dann next- und prev-Verweise f�r <link> geholt werden.
Da gibt's aber sicher noch Verbesserungsm�glichkeiten - habt ihr da
Vorschl�ge? Hier das Script:
<?php
require('../../mysql/login');
connect ($host,$user,$passwort,$datenbank);
# config (include)
# zu durchsuchende Ordner hier eintragen
$ordner = array('ordner1', 'ordner1/unterordner1', 'ordner2', 'ordner3');
# MySQL-Tabellenname
$tabellenname = 'seitenliste';
# Name der Datei, die der Webserver per Default ausgibt
$startseite = 'index.html';
/*
# MySQL Tabelle erstellen
create table seitenliste (
cwd char(255),
basename char(255),
lfdnr smallint,
id int not null auto_increment,
primary key(id)
);
*/
# Ende config
$titel = "Update der Seitenlisten-Datenbank";
print "<html><head><title>$titel</title></head><body>";
$self = & $_SERVER['PHP_SELF'];
$erfolg = null;
// laufende Nummer
$lfdnr = 1;
$extract = explode ('.', $startseite);
$defaultfilename = $extract[0];
$defaultfileending = $extract[1];
print <<<HTML
<h1>Dateiliste updaten</h1>
<form action="$self" method="post">
<fieldset>
<legend>
Update von Tabelle $tabellenname
</legend>
<table>
<tr><td><input type="radio" name="ja" value="ja">Ja</td></tr>
<tr><td><input type="submit" value=" $tabellenname updaten "></td></tr>
</table>
<input type="hidden" name="abgeschickt" value="1">
HTML;
// Formular verarbeiten
if (isset($_POST['abgeschickt']) && $_POST['abgeschickt'] == 1)
{
$dir_read = '../';
$dir_write = '/';
$info = array();
$info = dateiliste($dir_read, $startseite, $defaultfileending);
if (isset($info)) sort($info);
// den alten Inhalt l�schen
mysql_query ("delete from $tabellenname");
// einmal root-Adresse eintragen
$rooteintragen = "insert into $tabellenname (cwd, basename, lfdnr)
values ('/', '', 1)";
mysql_query ($rooteintragen);
$lfdnr = insertliste($dir_write, $info, $tabellenname, $lfdnr);
// runter in die jeweiligen Ordner und dort die Dateien eintragen
$max = count($ordner);
for ($i = 0; $i < $max; $i++)
{
$dir_read = '../' . $ordner[$i];
$dir_write = '/' . $ordner[$i];
$info = dateiliste($dir_read, $startseite, $defaultfileending);
sort($info);
$lfdnr = insertliste($dir_write, $info, $tabellenname, $lfdnr);
}
$erfolg = 1;
}
// Seite zeigen
zeigedenrest();
if ($erfolg == 1)
{
print "<p>Die Tabelle $tabellenname wurde gel�scht und neu
erstellt.</p>\n\n";
$zeit = strftime('%d. %B %Y, %H:%M:%S');
print "<h2>Jetzt ($zeit) in der Tabelle $tabellenname vorhandenen
Eintr�ge</h2>\n\n";
status($tabellenname);
}
function zeigedenrest ()
{
print <<<HTML
</fieldset>
</form>
HTML;
}
function status ($tabellenname)
{
print '<table class="$tabellenname">';
$query = mysql_query("select lfdnr, cwd, basename from $tabellenname
order by lfdnr, basename");
while ($liste = mysql_fetch_array($query, MYSQL_NUM))
{
print "<tr>\n";
foreach ($liste as $wert)
{
print "\t<td>$wert</td>\n";
}
print "</tr>\n";
}
print '</table>';
}
function dateiliste($dir_read, $startseite, $defaultfileending)
{
$dirhandle = opendir($dir_read);
while ($file = readdir($dirhandle))
{
switch($defaultfileending)
{
// schlie�t $startseite aus
// sucht Dateien mit $defaultfileending
// schlie�t google[a-z0-9]+ (Google Authorization file) aus
case ('htm'):
if (preg_match ('/.+\.htm$/', $file)
&& $startseite != $file
&& !preg_match ('/google[0-9a-z]+\.htm$/',$file)) $info[] = $file;
break;
case ('html'):
if (preg_match ('/.+\.html$/', $file)
&& $startseite != $file
&& !preg_match ('/google[0-9a-z]+\.html$/',$file)) $info[] = $file;
break;
case ('php'):
if (preg_match ('/.+\.php$/', $file)
&& $startseite != $file
&& !preg_match ('/google[0-9a-z]+\.php$/',$file)) $info[] = $file;
break;
}
}
if (isset($info)) return $info;
}
function insertliste ($dir_write,$info,$tabellenname,$lfdnr)
{
$max = count($info);
for ($i = 0; $i < $max; $i++)
{
$lfdnr++;
$mysql_anweisung = "insert into $tabellenname (cwd, basename, lfdnr)
values ('$dir_write', '$info[$i]', '$lfdnr')";
mysql_query($mysql_anweisung);
}
return $lfdnr;
}
# (include)
function connect ($host,$user,$passwort,$datenbank)
{
$link = mysql_connect("$host", "$user", "$passwort");
if (!$link)
{
die("<p>Keine Verbindung m�glich.</p>");
}
$select = mysql_select_db("$datenbank");
if (!$select)
{
die("<p>Auswahl der Datenbank fehlgeschlagen.</p>");
}
}
# In jedes Web-Dokument kommt
$pfad = dirname ($_SERVER['PHP_SELF']);
# index.html (index.htm, index.php, start.html usw...) bekommt diesen
Eintrag:
# $seite = '';
# alle anderen Seiten bekommen diesen Eintrag:
$seite = basename ($_SERVER['PHP_SELF']);
# Include f�r die Web-Dokumente
$next = naechste ($seite, $pfad);
$prev = vorige ($seite, $pfad);
function vorige ($seite, $pfad)
{
$abfrage = "select lfdnr from seitenliste where basename = '$seite' AND
cwd = '$pfad'";
$query = mysql_query("$abfrage");
$row = mysql_fetch_assoc($query);
$lfdnr = $row['lfdnr'];
$abfrage = "select basename, cwd from seitenliste where lfdnr =
'$lfdnr' - 1";
$query = mysql_query("$abfrage");
if ($query)
{
$row = mysql_fetch_assoc($query);
$pfad = $row['cwd'];
$seite = $row['basename'];
$prev = $pfad . '/' . $seite;
$prev = str_replace('//', '/', $prev);
}
if (isset ($prev))
{
return $prev;
} else {
print 'Fehler prev';
}
}
function naechste ($seite, $pfad)
{
$abfrage = "select lfdnr from seitenliste where basename = '$seite' AND
cwd = '$pfad'";
$query = mysql_query("$abfrage");
$row = mysql_fetch_assoc($query);
$lfdnr = $row['lfdnr'];
$abfrage = "select basename, cwd from seitenliste where lfdnr =
'$lfdnr' + 1";
$query = mysql_query("$abfrage");
if ($query)
{
$row = mysql_fetch_assoc($query);
$pfad = $row['cwd'];
$seite = $row['basename'];
$next = $pfad . '/' . $seite;
$next = str_replace('//', '/', $next);
}
if (isset ($next))
{
return $next;
} else {
print 'Fehler next';
}
}
# Ende include-Datei f�r die Web-Dokumente
?>