Beitrag von Ernst (6 Beiträge) am Montag, 9.Dezember.2002, 18:49.
Datenbankausgabe: Kurzbenennund duch ausführliche Benennung ersetzen
Hallo,
ich habe folgendes Problem: Ich möchte eine Datenbank "Titel" aufbauen, in der neben den Feldern Autor, Buchtitel, auch eine Fachbezeichnung erfasst werden soll. Diese soll aber nicht ausgeschrieben erfasst werden, sondern als Kürzel, z.B. bell 1 (für Belletristik: allgemein), bell 2 (für Belletristik: Krimis), gesch 1 (für Geschichte: Deutsche Geschichte) etc.
Diese Fachbezeichnungen - stell ich mir mal so vor - würde ich gerne in einer eigenen Datenbank - Name "Fach" - verwalten, die eigentlich nur aus den beiden Feldern "Fachgebiet" und "Fachkuerzel" bestehen sollte.
Datensätze in dieser Datenbank sähen dann z.B. so aus:
---------
Fachgebiet: Belletristik allgemein
Fachkuerzel: bell 1
----------
Fachgebiet: Belletristik Krimis
Fachkuerzel: bell 2
----------
Fachgebiet: Geschichte: Deutsche Geschichte
Fachkuerzel: gesch 1
----------
Frage: Wie kann ich jetzt erreichen, dass bei der Datenbankausgabe eines Datensatzes aus der Titeldatenbank anstelle des Fachkürzels das Fachgebiet angezeigt wird? Geht das überhaupt?
Vielen Dank & Grüße
Ernst
Antworten
Beitrag von Friesecke (245 Beiträge) am Montag, 9.Dezember.2002, 19:39.
Re: Datenbankausgabe: Kurzbenennund duch ausführliche Benennung ersetzen
Hallo Ernst,
geht. Steht in der Doku unter verschachtelten get`s irgendwo.
Mußt mal schauen.
Gruß
Fri
Antworten
Beitrag von Michael (450 Beiträge) am Mittwoch, 11.Dezember.2002, 08:31.
Re: Datenbankausgabe: Kurzbenennund duch ausführliche Benennung ersetzen
Antworten
Beitrag von Ernst (14 Beiträge) am Freitag, 13.Dezember.2002, 14:55.
Re: Datenbankausgabe: Kurzbenennund duch ausführliche Benennung ersetzen
Hallo Michael etc.,
vielen Dank fuer Eure Hilfe. Habe jetzt ein Template gebastelt, das auch prinzipiell funktioniert:
--------
<perl>
get "Id==*", "titel";
out "<a href=http://baseportal.de/cgi-bin/baseportal.pl?htx=/xyz/detail&Id=$_id>$Autor:</a><br>";
out "$Buchtitel<br>";
get "Kuerzel==$Fachkuerzel", "fach";
out "$Fachgebiet<p>";
</perl>
---------
Ich erhalte so aber nur den ersten Datensatz der Datenbank "titel". Kann mir vielleicht jemand
kurz sagen, wie ich *alle" Datensätze erhalte?
Danke, Grüße & ein schönes Wochenende
Ernst
Antworten
Beitrag von Ernst (14 Beiträge) am Montag, 16.Dezember.2002, 09:42.
Re: Datenbankausgabe: Kurzbenennund duch ausführliche Benennung ersetzen
Hallo,
ich nochmal. Könnte mir vielleicht jemand n Tipp geben!
- Das u.g. Template, das ich gebastelt habe, funktioniert prinzipiell.
--------
<perl>
get "Id==*", "titel";
out "<a href=http://baseportal.de/cgi-bin/baseportal.pl?htx=/xyz/detail&Id=$_id>$Autor:</a>
";
out "$Buchtitel<br>";
get "Kuerzel==$Fachkuerzel", "fach";
out "$Fachgebiet<p>";
</perl>
---------
Ich erhalte so aber *nur den ersten* Datensatz der Datenbank "titel". Kann mir vielleicht jemand
kurz sagen, wie ich *alle" Datensätze erhalte?
Vielen Dank& Grüße
Ernst
Antworten
Beitrag von Friesecke (245 Beiträge) am Montag, 16.Dezember.2002, 10:03.
Re: Datenbankausgabe: Kurzbenennund duch ausführliche Benennung ersetzen
Hallo Ernst,
mit get_next - s. Doku
Gruß
Fri
Antworten
Beitrag von Ernst (14 Beiträge) am Montag, 16.Dezember.2002, 13:41.
Re: Datenbankausgabe: Kurzbenennund duch ausführliche Benennung ersetzen
Hi,
erst Mal vielen Dank fuer Deinen Hinweis. Habe den Code jetzt ff. korrigiert:
----
<perl>
get "Id==*", "titel";
while(get_next("titel"))
{
out "<a href=
http://baseportal.de/cgi-bin/baseportal.pl?htx=/test/detail_titel&Id=$_id>$Autor:</a><br>";
out "$Buchtitel<br>";
out "Fachgebiet: $Kuerzel = ";
get "Kuerzel==$Fachkuerzel", "fach";
out "$Fachgebiet<p>";
}
</perl>
------------------
Heraus kommt jetzt:
-----------
Mann, Golo:
Deutsche Geschichte seit 1945
Fachgebiet: gesch 8 = Geschichte. Deutschland. 1945 -
Maier, Gerd:
Lehrbuch der chemischen Technik
Fachgebiet: chet 4 =
[ Fehler: Feld (Kuerzel) in nicht vorhanden
Ursache: Das Feld Kuerzel wurde in der Datenbank nicht definiert. Vielleicht haben Sie sich bei der Abfrage auch nur verschrieben?
Lösungen: 1. Korrigieren Sie Ihre Abfrage. 2. Gehen Sie in Ihren privaten Bereich (Anmelden), wählen Sie die entsprechende Datenbank aus, klicken Sie auf 'Felder' und fügen Sie das gewünschte Feld hinzu. ]
Geschichte. Deutschland. 1945 -
---------
Kann mir jemand nochmal n Tipp geben, wie ich diesen letzten Fehler behebe, dass also auch bei den Sätzen 2,3 etc. nach dem Kürzle das fachgebiet ausgegebn wird.
Danke fuer die Hilfe und sorry wenn ich nerve - ist aber wichtig für mich ...
Ernst
Antworten
Beitrag von Friesecke (245 Beiträge) am Montag, 16.Dezember.2002, 16:23.
Re: Datenbankausgabe: Kurzbenennund duch ausführliche Benennung ersetzen
Antworten
Beitrag von Ernst (14 Beiträge) am Montag, 16.Dezember.2002, 16:56.
Re: Datenbankausgabe: Kurzbenennund duch ausführliche Benennung ersetzen
Hi,
uch denke, dass die vorletzte Zeile eigentlich schon okay ist, denn beim ersten Titel bewirkt sie ja die Anzeige so, wie ich sie möchte:
---------
Mann, Golo:
Deutsche Geschichte seit 1945
Fachgebiet: gesch 8 = Geschichte. Deutschland. 1945
---------
Wenn ich den Code ändere in:
---------
<perl>
get "Id==*", "titel";
while(get_next("titel"))
{
out "<a href=http://baseportal.de/cgi-bin/baseportal.pl?htx=/test/detail_titel&Id=$_id>$Autor:</a><br>";
out "$Buchtitel<br>";
out "Fachgebiet: $Kuerzel = ";
get "Fachkuerzel==$Kuerzel", "fach";
out "$Fachgebiet<p>";
}
</perl>
---------
erhalt ich wieder ne Anzeige ohne das Fachgebiet:
Mann, Golo:
Deutsche Geschichte seit 1945
Fachgebiet: gesch 8 =
Maier, Gerd:
Lehrbuch der chemischen Technik
Fachgebiet: chet 4 =
---
Mein Problem ist, dass er die Umsetzung nur beim ersten
Satz richtig vornimmt.
Viele Grüße
Ernst
Antworten
Beitrag von Friesecke (245 Beiträge) am Montag, 16.Dezember.2002, 17:10.
Re: Datenbankausgabe: Kurzbenennund duch ausführliche Benennung ersetzen
Hallo Ernst,
Du weißt doch, wie das Datenbankfeld in fach heißt:
Kuerzel oder Fachkuerzel ?
Wenn Fachkuerzel : dann scheinbar o.k., aber Fachgebiet nicht gefunden.
Wenn Kuerzel, wo wird dann $Fachkuerzel definiert ??
Klär erst mal das.
Es kann noch ein Problem der doppelten Verwendung des Felds Kuerzel sein.
Gruß
Fri
Antworten
Beitrag von Ernst (14 Beiträge) am Dienstag, 17.Dezember.2002, 14:40.
HELP!! Re: Datenbankausgabe: Kurzbenennund duch ausführliche Benennung ersetzen
Hi,
das Datenbankfeld in fach heisst Fachkuerzel.
- Aber ich glaub ich geb's auf!! Hab jetzt alles mögliche ausprobiert und entweder hab ich nur die Kurzbezeichnung (Kuerzel = Fachkuerzel) angezeigt bekommen oder beim ersten ausgegeben Datensatz alles (also Kurzbezeichnung + Fachgebiet)so wies sein sollte aber bei den restlichen Datensätzen anstelle des Fachgebiets nur Fehlermeldungen. Kann einer der CRACKs sich mal erbarmen !!!!
Gruesse
Ernst
Antworten
Beitrag von Friesecke (245 Beiträge) am Dienstag, 17.Dezember.2002, 17:02.
Re: HELP!! Re: Datenbankausgabe: Kurzbenennund duch ausführliche Benennung ersetzen
Antworten
Beitrag von Sander (8133 Beiträge) am Dienstag, 17.Dezember.2002, 17:33.
Re: HELP!! Re: Datenbankausgabe: Kurzbenennund duch ausführliche Benennung ersetzen
>>Dann mußt Du auch Fachgebiet ausgeben, also out "$Fachgebiet <br>"; und nicht out "$Fachgebiet<p>";. Fachgebiet<p> ist nicht definiert.
wenn $Fachgebiet in der db drin ist wird es auch mit
out "$Fachgebiet<p>"; ausgegeben
perl merkt schon, wo eine Var zu ende ist, da braucht es kein leerzeichen. ;-) Probleme gibts nur, wenn ein weiteres Wort ohne leerzeichen dranhängt.
Aber warum nach dem ersten loop die anzeige versagt, bzw ein error kommt, kann ich auch nicht sagen...
Am besten postest du mal deine komplette struktur der dbs mit einem beispiel
Sander
Antworten
Beitrag von Friesecke (245 Beiträge) am Dienstag, 17.Dezember.2002, 18:24.
Re: HELP!! Re: Datenbankausgabe: Kurzbenennund duch ausführliche Benennung ersetzen
Hallo Sander,
da hast Du recht. Sorry. Ich bin mir lieber immer bewußt, daß leer = Trennzeichen ist bzw. sein kann.
Und letztlich liegt da wohl doch der casus belli.
Er hat Fachkürzel mit Leerzeichen wie "gesch 8", etc.
Wenn $var = "gesch 8"; ist,
dann findet
nicht den Satz.
Wegen des Leerzeichens.
Er muß dann eben "gesch8" nehmen.
Gruß
Fri
Antworten
Beitrag von Sander (32 Beiträge) am Dienstag, 17.Dezember.2002, 19:39.
Re: HELP!! Re: Datenbankausgabe: Kurzbenennund duch ausführliche Benennung ersetzen
Antworten
Beitrag von Ernst (14 Beiträge) am Mittwoch, 18.Dezember.2002, 11:22.
Re: HELP!! Re: Datenbankausgabe: Kurzbenennund duch ausführliche Benennung erse
Vielen Dank Euch allen für Eure Hilfe!!!
Das Skript funktioniert jetzt soweit und
liefert mir auch zu jedem Titel das zugehörige Fachkürzel und Fachgebiet - super!
<perl>
get "Id==*", "titel";
while(get_next("titel"))
{
out "$Autor:<br>";
out "$Buchtitel<br>";
out "Fachgebiet: $Kuerzel = ";
get "Fachkuerzel==$Kuerzel", "fach";
out "$Fachgebiet<p>";
}
</perl>
Eine Bitte - trau mich ja schon fast nicht mehr zu fragen :-( - hätt ich allerdings noch. Sander, könntest Du mir konkret sagen, wo/wie ich Dein Codschnipsel
$var=~s/ /\\ /g;
get "feld==$var"....
in den oben aufgefuehrten Code einbaue, dass auch z.B. gesch 8 funktioniert? Dann wär's perfekt!!
Vielen, vielen Dank
Ernst
Antworten
Beitrag von Friesecke (245 Beiträge) am Mittwoch, 18.Dezember.2002, 11:48.
Re: HELP!! Re: Datenbankausgabe: Kurzbenennund duch ausführliche Benennung erse
Hallo Ernst,
Dein Kuerzel ist eingetragen mit gesch 8, etc.
zwischen out "Fachgebiet $Kuerzel ...
und dem get mußt Du einfügen
Aber das ist jedesmal suchen+ersetzen. Das vermeidest Du mit gesch8 ohne Leerzeichen.
Gruß
Fri
Antworten