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