Trouble with s-verfj:
Dierk Hoeppner
HO at buch.biblio.etc.tu-bs.de
Mi Apr 16 11:25:26 CEST 1997
Hallo Herr Tomlin,
da Herr Veltkamp fuer den Rest der Woche in Urlaub ist (es liegt nicht an
Ihnen ;-) , antworte ich.
In den HTML-Seiten wird fuer jede Datenbank, die man anbindet, nur ein
symbolische Name benutzt. Der Einfachheit halber, um die wahren
Verhaeltnisse zu verstecken und um moeglichst wenig Optionen hin- und
herflitzen zu lassen. Sie entscheiden sich z.B. fuer zwei
Datenbanken. Eine soll mit 'foo' in den Seiten angesprochen werden, die
andere mit 'bar'. Frage: Wie sollen die Scripte wissen, welche reale
Datenbank auf Ihrem Server hinter foo und bar stecken? Antwort: Das ist
nicht so einfach. Erster Hinweis steht in acwww25.pl. Das ist die Datei,
die jedes Script zunaechst einlesen MUSS. Im Feld %dbscripte findet das
Programm unter dem symbolischen Namen 'foo' den Hinweis auf ein
Verzeichnis: 'fooeinstellungen'. Alle weiteren Einstellungen zur
angesprochenen Datenbank 'foo' (Pfad, Konfiguration, etc.) findet das
Programm in diesem Verzeichnis. 'fooeinstellungen' ist ein
Unterverzeichnis der CGI-Scripte fuer die Schnittstelle. So habe ich es mir
mal ausgedacht. z.B. in .../cgi-bin/acwww25 sind alle Scripte fuer die
allegro-WWW-Schnittstelle angesiedelt. Darunter ordne ich die
Parameterdateien, dbinfo.pl etc. fuer jede Datenbank in einem eigenen
Verzeichnis an. Das ist nicht das Verzeichnis, wo die eigentliche
Datenbank liegt. Also fuer die Datenbank 'foo' gibt es ein Verzeichnis
.../cgi-bin/acwww25/fooeinstellungen.
Nachdem das Script acwww25 eingelesen hat, muss es die
konkreten Einstellungen fuer die Datenbank 'foo' einlesen. Wo findet es
die? Die Zeile
$scriptpfad = $dbscripte{ $in{'db'} };
weist der Variablen $scriptpfad den Wert 'fooeinstellungen' zu. In
require $scriptpfad . "${pt}dbinfo.pl";
wird die zu 'foo' gehoerige dbinfo.pl eingelesen. Beim Abarbeiten dieser
Zeile ersetzt Perl die Variablen durch die wahren Werte so als ob da stuende
require 'fooeinstellungen/dbinfo.pl';
Damit weiss das Programm, mit welcher Datenbank es konkret arbeiten soll.
Warum so kompliziert? Es ist flexibler. Ich kann beliebig viele
Datenbanken anbinden, ohne fuer jede einen eigenen Satz Scripte vorhalten
zu muessen. Ich kann meinen Rechner neuorganisieren, z.B. Datenbanken
verlagern, ohne die Schnittstelle gross umprogrammieren zu muessen. Ich kann
Parameterdateien fuer diese Datenbank hinzufuegen oder wegnehmen, ohne die
Scripte zu aendern etc. etc. Fuer den WWW-Surfer bleibt alles gleich. Er
spricht nur die Datenbank 'foo' an, ohne dass er etwas von den AEnderungen
im Hintergrund weiss. Er weiss damit auch nichts ueber die wahren
Verhaeltnisse auf meinem Rechner, und das soll so sein.
Ich hoffe, diese Erlaeuterungen helfen Ihnen bei der Loesung Ihres Problems.
Viele Gruesse
Dierk Hoeppner
> Ich komme durcheinander mit dem Begriff "Datenbank".
> Bei der Demo Datenbank habe ich ein Verzeichnis "opac", in dem verschiedene
> Parameterdateien und ein dbinfo.pl liegen - dies wird als Datenbank
> bezeichnet:
>
> > "Sie muessen fuer JEDE Datenbank ein Verzeichnis unterhalb von ACWWW25
> > anlegen, die alle Parameterdateien enthaelt (also auch s-verfj.apr)
> > und das script "dbinfo.pl" mit den Einstellungen zur
> > jeweiligen Datenbank."
>
> Ausserdem habe ich ein Verzeichnis usr/allegro/demo, in dem die
> *tatsaechliche* Datenbank liegt, und auf die die Datei dbinfo.pl zeigt:
>
> $DBPfad = "/usr/allegro/demo"; # Pfad der Datenbank
> $DBName = 'cat'; # Namen der Datenbank
>
> Die Verwendung des Wortes "Datenbank" in beiden Faellen kommt mir
> etwas ungluecklich vor....
> Was muss denn im Eintrag "db=" stehen?
> db=demo ???
> db=cat ???
> db=opac ???
>
> > Wichtig ist, dass in der Datei ACWWW25.pl der Eintrag
> > %dbscripte = (
> > # Datenbankkuerzel rel. Pfad
> > "visual3", "visual3",
> > "demo", "opac",
> > ... );
> > gefunden wird
>
> - Ich haette hier eher "opac" "opac" eingegeben.
>
> Bei der eigenen Datenbank habe ich Paramaterdateien in
> /local/www/cgi-bin/acwww25/visual3
>
> $cfg = 'v';
> $DBPfad = "/usr/allegro/probe"; # Pfad der Datenbank
> $DBName = 'beta';
>
> Also, was sollte im Eintrag "db=" stehen?
Universitaetsbibliothek
Pockelsstr. 13
D-38106 Braunschweig
Germany
Tel: +49-531-391-5066 Fax: -5836
E-Mail: d.hoeppner at tu-bs.de
Mehr Informationen über die Mailingliste Allegro