Beitrag von Bernd (213 Beiträge) am Donnerstag, 7.März.2002, 09:03.
Datenbank abfragen
Hallo
Ich möchte ein Feld namens "Titel" in meiner Datenbank mit dem Namen "RJI" abfragen und diese Daten in eine andere Datenbank namens "Artist" in das ebenso genannte Feld "Titel" speichern. Jeder Eintrag soll in der neuen Datenbank(Artist) nur einmal stehen, also bei erneutem Aufruf muß verglichen werden, ob der "Titel" schon vorliegt!
(Die Datenbanken "RJI" und "Artist" liegen im selben Verzeichnis)
Ich habe folgendes gemacht:
<perl>
get "Titel==*", "RJI";
while(get_next("RJI"))
{
put ["Titel", "$Titel", "RJI"], "Artist";
}
</perl>
Würdet Ihr mir bitte helfen, den Code ins Rechte Lot zu rücken?
Vielen Dank!
Bernd
PS.: Falls Ihr mir darauf antwortet, ersuche ich um wenig Fachjargon, da ich auf dem Gebeit ein "Neuling" bin.
Antworten
Beitrag von Oliver ;-) (439 Beiträge) am Donnerstag, 7.März.2002, 09:44.
Re: Datenbank abfragen
Hallo Bernd,
ich würd's mal so versuchen:
<perl>
get "Titel==*", "RJI";
while(get_next("RJI"))
{
get "Titel==$Titel","Artist";
if ($_amount_query == 0)
{
put ["Titel", "$Titel"], "Artist";
}
}
</perl>
Grüße
Oliver ;-)
Antworten
Beitrag von Bernd (213 Beiträge) am Donnerstag, 7.März.2002, 10:01.
Re: Datenbank abfragen
Hallo Oliver!
Vielen Dank für Deine Hilfe. Leider werden die Einträge in der neuen Datenbank "Artist" mehrfach eingetragen. Also bei jedem "laden" kommen ein und dieselben Einträge dazu.
Trotzdem vielen Dank für Deine Hilfe!
Grüße
Bernd
Antworten
Beitrag von Oliver ;-) (500 Beiträge) am Donnerstag, 7.März.2002, 10:34.
Re: Datenbank abfragen
Hallo Bernd,
ich habe es mir mal nachgebaut:
get "Name==*","test";
while (get_next("test"))
{
get "Name==$Name","test_Kopie";
if ($_amount_query == 0)
{
put ["Name",$Name],"test_Kopie";
out "<br>$Name eingetragen";
}else
{
out "<br><font color=#990000>$Name bereits vorhanden</font>";
}
}
Ich habe hier nur andere Feldnamen verwendet. Außerdem wird im put die Variable nicht in "" gelegt. Aber so funktioniert es...
Oliver ;-)
Antworten
Beitrag von Bernd (213 Beiträge) am Donnerstag, 7.März.2002, 11:46.
Re: Datenbank abfragen
Hallo Oliver,
nochmals vielen Dank für Deine Unterstützung. Diesmal kommen wir der Sache schon näher. Folgendes Phänomen: Beim ersten Aufruf der Seite werden die Daten vollständig in die neue Datenbank gespeichert. Bei erneutem Aktualisieren wird eigenartigerweise der 1. und 3. Datenbankeintrag nicht mehr dazugeschrieben aber die restlichen, werden einfach nochmals hinzugefügt. (Ich habe in meiner Datenbank, welche ich Abfrage für Testzwecke nur 5 Einträge - also Eintrag 2 - 4 - 5 werden bei jedem Aktualisieren immer wieder in die neue DB erneut hinzugefügt)
Dank Deiner Idee mit den "Hinweismeldungen" ist dieser Vorgang auch gut nachzuvollziehen.
Auf jeden Fall nochmals vielen Dank, immerhin klappt es ja mal bei 2 Einträgen. Falls Du noch einen Vorschlag hast, ersuche ich Dich wieder um Unterstützung.
Grüße
Bernd
Antworten
Beitrag von Oliver ;-) (500 Beiträge) am Donnerstag, 7.März.2002, 12:14.
Re: Datenbank abfragen
wie sieht denn dein code genau aus?
Oliver ;-)
Antworten
Beitrag von Bernd (213 Beiträge) am Donnerstag, 7.März.2002, 12:40.
Re: Datenbank abfragen
Ok, das ist mein Code:
<perl>
get "Titel==*","RJI";
while (get_next("RJI"))
{
get "Titel==$Titel","Artist";
if ($_amount_query == 0)
{
put ["Titel",$Titel],"Artist";
out "<br>$Titel eingetragen";
}else
{
out "<br><font color=#990000>$Titel bereits vorhanden</font>";
}
}
</perl>
Grüße
Bernd
Antworten
Beitrag von Oliver ;-) (500 Beiträge) am Donnerstag, 7.März.2002, 12:49.
Re: Datenbank abfragen
Kann ich mir jetzt nicht erklären... Bei mir funktioniert das einwandfrei...
Hast du irgendwo im Template noch einen vergessenen Codeschnipsel?
Hast du mal einen Link?
Oliver ;-)
Antworten
Beitrag von Bernd (213 Beiträge) am Donnerstag, 7.März.2002, 13:00.
Re: Datenbank abfragen
Hier der Link:
http://www.baseportal.de/cgi-bin/baseportal.pl?htx=/rjilge/Video/Artist
Ich habe die Datenbank komplett gelehrt, damit Du siehst was passiert, wenn Du beim Browser Aktualisieren anklickst.
Und hier mal mein gesamter Code:
<html><head><title></title></head>
<body bgcolor=white text=black link=ffffff vlink=ffffff alink=ffffff
background="#000000">
<font face="verdana" size=2>
<style type="text/css">
<!--
A:hover {text-decoration:overline;color:black}
{font:9pt/10pt }.
//-->
</style>
<table width=95%><tr><td>
<font face="verdana" size=2>
<do action=all databack=#6666FF headback=#000099 gridcolor=#000099 border=0 dataface=verdana datacolor=black headcolor=ffffff datasize=2 headalign=middle headbold=1 language=en spacing=1 gridcolor=000000 border=0 sort^=Titel range^=0,10 pagebrowse=bottom buttonbrowse=no listtype=list listfields=Titel,Typ,Genre,Anzahl,Rohling,Besitzer input=top>
<perl>
get "Titel==*","RJI";
while (get_next("RJI"))
{
get "Titel==$Titel","Artist";
if ($_amount_query == 0)
{
put ["Titel",$Titel],"Artist";
out "<br>$Titel eingetragen";
}else
{
out "<br><font color=#990000>$Titel bereits vorhanden</font>";
}
}
</perl>
<center>
</center>
<font size=0>
<font face=verdana
<font color=ffffff>
</body></html>
</table>
Vielen Dank!
Bernd
Antworten
Beitrag von Oliver ;-) (500 Beiträge) am Donnerstag, 7.März.2002, 20:56.
Re: Datenbank abfragen
Hallo Bernd,
ich konnte es jetzt nicht nachvollziehen, da die DB mittlerweile wieder gefüllt war. Aber es sind ein paar doppelte drin.
Ich verstehe nur nicht, warum du die Datenübertragung unterhalb der Ausgabe der Artist-db vornimmst. Wenn überhaupt, würde ich es unter die RJI-Ausgabe einsetzen.
Probier es doch mal mit der Übertragung ohne einen weiteren "do action"-code im Template.
Grüße
Oliver ;-)
Antworten
Beitrag von Bernd (213 Beiträge) am Freitag, 8.März.2002, 15:00.
Re: Datenbank abfragen
Hallo Oliver,
danke für den Tipp, ich hab´s jetzt geschafft!
Antworten
Beitrag von Stefan Krupop (311 Beiträge) am Donnerstag, 7.März.2002, 22:51.
Re: Datenbank abfragen
Hi!
Ich misch mich jetzt hier einfach mal ein, denn bei dem get gruselt's mir n bisserl vor der Serverbelastung. Wenn man nach einem Feld abfragt werden gleiche Inhalte direkt nacheinander gelifert, deswegen sollte auch folgendes hinhauen:
<perl>
get "Titel==*", "RJI";
while(get_next("RJI")) {
if ($Titel ne $OldTitel) {
$OldTitel=$Titel;
put ["Titel", "$Titel"], "Artist";
}
}
</perl>
Stefan
Antworten
Beitrag von Oliver ;-) (500 Beiträge) am Donnerstag, 7.März.2002, 23:42.
Re: Datenbank abfragen
Du darfst dich ruhig einmischen... ist ja keine Privatveranstaltung ;-)
Aber ich denke, dass dein Vorschlag nicht funktioniert, da so nicht überprüft wird, ob der Titel bereits in der DB "Artist" vorhanden ist. Nach deinem Vorschlag werden ja "nur" die doppelten in der DB "RJI" ausgefiltert... oder?
Oliver ;-)
Antworten