Beitrag von Rainer (49 Beiträge) am Dienstag, 6.Mai.2008, 23:00.
Datenübergabe mit $_Session in kolo-bp
Hallo,
ich bräuchte mal wieder Unterstützung.
Irgendwie klappt das bei mir nicht. Und die Beispiele in der Doku sind für mich nicht richig nachvollziehbar.
Daher mein Hilferuf:
Die Aufgabe:
Datenbank A:
Projekte mit Umsatzvolumen, etc.
Datenbank B:
Auftragseingang-Datum und -EUR-Betrag
und ein Feld, das auf das zugehörige Projekt aus A verweist
(Auf einer sep. Seite möchte ich dann die Daten aus A + B zusammenführen und ausgeben)
Lösungssuche:
Wie weise ich in der A-Seite einer Sessionvariablen (z.B. AktuellesProjekt_Id) den gewünschten Wert zu? $_session{AktuellesProjekt_Id}=$Id; ??
Wie gestalte ich die Übergabe per URL?
...und wie lese ich den Parameter auf der B-Seite wieder aus?
Da ich auf der B-Seite mehrere Daten nacheinander eingeben möchte, soll die übergebene Id solange gültig sein, bis die Seite geschlossen wird.
Meine Versuche mit der Übergabe (ohne $_session) führten dazu, dass die Übergabe zwar klappt, aber sobald ich "Ändern" aufrufe, verliere ich den Wert der Variablen.
Somit kann ich die Projekt-Id nicht mehr in die B-Datenbank schreiben.
Bin für Hilfe sehr dankbar.
Antworten
Beitrag von Sander (8133 Beiträge) am Dienstag, 6.Mai.2008, 23:22.
Re: Datenübergabe mit $_Session in kolo-bp
Antworten
Beitrag von Rainer (49 Beiträge) am Donnerstag, 8.Mai.2008, 08:07.
Re: Re: Datenübergabe mit $_Session in kolo-bp
Hallo Sander,
ja so habe ich mir das auch gedacht...
Aber es klappt nicht.
Hier mein Code in der Zielseite (Datenbank B):
--------------------------------
<html><head></head><body>
<do db=AE_Termine action=all range^=0,0 searchfields=AE_Monat listfields=AE_EUR,AE_Monat,Anmerkung,Projekt_Id allfields=AE_EUR,Projekt_Id,AE_Monat,Anmerkung formfields=AE_EUR,AE_Monat,Anmerkung showamount=all,sel selectbrowse=top buttonbrowse=top pagebrowse=top indexbrowse=top listtype=list language=de detail=link search=no input=top>
<perl>
out "<br>In Perl die Projekt_ID: $_session{AktuellesProjekt_Id}<br>";
</perl>
</body></html>
--------------------------------
Nach Aufruf der Seite wird die Projekt_ID korrekt angezeigt. Aber sobald ich einen Datensatz neu anlege ist diese verschwunden! -> Also flüchtig. Wenn ich das mit den Sessions richtig verstanden habe, sollten die session-Variablen doch permanent verfügbar sein, oder?
Gruß Rainer
P.S. Die eigentliche Funktion, die ich auf der Seite nutze, habe ich zu Testzwecken raus genommen. Dort schreibe ich nämlich in den zuletzt eingefügten Datensatz die Projekt_Id hinein. Was aber nicht funktioniert, da die Variable dann leer ist:
if ($cmd eq "add")
{
mod "Projekt_Id==_", ["Projekt_Id", $_session{AktuellesProjekt_Id}], "AE_Termine";
}
Antworten
Beitrag von richard (1187 Beiträge) am Freitag, 9.Mai.2008, 08:26. WWW: posaunenchor-rhoden.de
Re: Re: Datenübergabe mit $_Session in kolo-bp
Grundsätzlich muß die Session (und zwar dieselbe) auch jedesmal initialisiert werden.Haben beide Datenbanken eine Nutzerdatenbank - verschiedene oder dieselbe?Was heißt die Variable wird korrekt angezeigt und ist dann leer? Ist doch dieselbe wie bei der Anzeige - oder?Wie wäre es denn, daß Feld mit dem Verweis in B ausdrücklich alsRelationsfeld anzulegen?Du könntest dann die Daten von B aus mit Unterstützung durch das System eintragen - ohne irgendwelche Sessionvariablen.Btw: Die Darstellung deines Projektes ist scheinbar ziemlich unvollständig und ist auch kaum nachzuvollziehen, was sinnvolle Hinweise schwer macht. Die paar Brocken die Du da hinwirfst stellen nur Deine aktuelle Sicht desProblems dar - die funktioniert aber nicht.
Antworten
Beitrag von Rainer (49 Beiträge) am Freitag, 9.Mai.2008, 09:17.
Re: Re: Re: Datenübergabe mit $_Session in kolo-bp
löblich ist Dein Versuch mir zu helfen, aber ich kann nicht nachvollziehen, was Du schreibt:
1. Der Code den ich angab, ist der vollständige Code der Datenbank-Seite B!
Wenn Du nicht nachvollziehen kannst, was der mod-Befehl macht: Das ist vorerst nicht wichtig. Meine Testausgabe des übergebenen Parameters klappt ja schon nicht - hier benötige ich Unterstützung, den Rest krieg ich dann schon hin.
2. Die Datenbank B ist eine eigenständige Datenbank mit den Auftragseingangsdaten für alle Projekte, die in DB A erfasst wurden - die vorhandenen Felder sind in der <do-Anweisung zu sehen.
3. Der Aufruf der Datenbank-B-Seite erfolgt von der Datenbank-A-Seite aus.
4. Als Verbindung übergebe ich über $_session einen Parameter, der später bei den noch folgenden Auswertungen einen Bezug zum Projekt zulässt.
5. Diesen Parameter habe ich testweise anzeigen lassen. Beim ersten Aufruf der Seite wird dieser auch korrekt angezeigt.
6. Sobald ich jedoch "Ändern" oder "Neu" benutze (also Daten in der Eingabemaske eingeben möchte), wird der Parameter nicht mehr angezeigt - geht also verloren.
7. Nutzerdatenbank gibts derzeit nur bei Datenbank A (das ist die Hauptdatenbank)
Daraus resultieren die Fragen:
A) Was mache ich bei der Nutzung der session-Variablen falsch - und wie mache ich es richtig?
B) Oder funktioniert das mit den session-variablen in der kostenfreien bp-Version nicht?
C) Wenn eine Relation das gleiche besser erfüllen kann: Wie gehe ich genau vor? denn die Doku konnte mir hierbei nicht richtig helfen. Gibts ein passendes Beispiel?
Vielleicht noch wichtig fürs Verständnis: Die Datenbank B wird erst ab einem bestimmten Projektstand genutzt. Ab einer Projektwahrscheinlichkeit von 60% sollen die voraussichtlichen Umsätze mit Auftragseingangsdatum und Auftragssumme erfasst werden. Bei einem Rahmenauftrag kann sich die gesammte Projektsumme auf mehrere einzelne Abrufe verteilen, so dass ich zu einem Projekt beispielsweise 12 Datensätze in DB B erfassen muss.
Und richard, verzeih, ich werfe niemandem ein paar Brocken hin, sondern ich gebe hier nach bestem Wissen und Gewissen alle Informationen bekannt, die mir relevant erscheinen. Dass das vielleicht für den Einen oder Anderen zu wenig ist, kann und darf sein - ein Anderer kann mit meinen Angaben vielleicht klarkommen... für Dich war es offensichtlich zu wenig an Hintergrundinfo. Ich hoffe ich konnte das ausbügeln.
Antworten
Beitrag von richard (1187 Beiträge) am Freitag, 9.Mai.2008, 10:54. WWW: posaunenchor-rhoden.de
Re: Re: Re: Re: Datenübergabe mit $_Session in kolo-bp
Auch wenn Du mich scheinbar nicht ganz ernst nimmst und Deine Probleme selber genau kennst, abschließend noch einmal folgendes:
3. Der Aufruf der Datenbank-B-Seite erfolgt von der Datenbank-A-Seite aus.
Die vollständige URL würde in jedem Fall interessieren.
6. Sobald ich jedoch "Ändern" oder "Neu" benutze (also Daten in der Eingabemaske eingeben möchte), wird der Parameter nicht mehr angezeigt - geht also verloren.
Du arbeitest nun mit der Datenbank B. Warum sollte bp jetzt eine Session (aus Datenbank A) kennen und eventuelle Inhalte daraus zur Verfügung stellen?
7. Nutzerdatenbank gibts derzeit nur bei Datenbank A (das ist die Hauptdatenbank)
Verbinde Datenbank B mit derselben Nutzerdatenbank.
C) Wenn eine Relation das gleiche besser erfüllen kann: Wie gehe ich genau vor? denn die Doku konnte mir hierbei nicht richtig helfen. Gibts ein passendes Beispiel?
Soweit erkennbar, handelt es sich bei Deinem Vorhaben um den klassischen Fall einer 1:n Beziehung verknüpfter Daten. Von der Sache her machst Du ja auch genau das mit der Projekt_Id.
Das Feld mit der Projekt_Id in Datenbank B kann innerhalb der Datenbankdefinition von bp als Relation definiert werden. Als Datenbank mußt Du dann A angeben, als Schlüsselfeld (grundsätzlich beliebig) dasjenige, dessen Inhalt in den Formularen der Datenbank angezeigt werden soll (den Datensatz aus A am sinnvollsten identifiziert). bp wird dann die Verknüpfung über die Id des Datensatzes herstellen und den Inhalt des bei Schlüsselfeld angegebenen Feldes darstellen.
Daneben kann dann von B aus auf alle Felder des verknüpften Datensatzes von A zugegriffen werden (allerdings nicht mit den automatisch erstellten Formularen).
Wie das geht steht in der Doku. In der gibt es auch das eine oder andere Beispiel zu Relationen. Wenn ich es richtig in Erinnerung habe unter anderem im Abschnitt über get_next.
Antworten
Beitrag von Claus (4645 Beiträge) am Freitag, 9.Mai.2008, 11:58.
Re: Re: Re: Re: Datenübergabe mit $_Session in kolo-bp
Antworten
Beitrag von Rainer (49 Beiträge) am Freitag, 9.Mai.2008, 12:28.
Re: Re: Re: Re: Re: Datenübergabe mit $_Session in kolo-bp
erstmal: Super Danke - Dein Tipp hat zur Lösung geführt. Die Übergabe des Parameters hat ja geklappt (wie beschrieben) - nur blieb mir der Wert nicht erhalten. Mit Einfügen von "$sid=$_session" klappt nun alles wie gewünscht und ich kann von A die Seite B aufrufen und dort wird in Bezug auf den aktuellen Datensatz bei A ein Datensatz in B angelegt. Perfekt!
Danke für den erneuten Versuch. Scheinbar habe ich es nicht geschafft, Dir den Fall klar darzulegen. Verzeih auch, dass ich offensichtlich Deine Gefühle verletzt habe. Aber wenn Du mir Brocken unterjubelst, solltest Du nicht aus allzu weichem Holz geschnitzt sein. Der Ton hier im Forum ist aber leider oft unter der Gürtellinie. Diesem Niveau möchte ich mich jedoch nicht anschliessen. Und Dich nicht ernst nehmen ist für mich eine heftige Unterstellung - ich nehme jeden ernst!!
bitte vergesst bei Euren Hinweisen auf vollständige Angaben und mehr Infos nicht, dass alles subjektiv zu betrachten ist.
Nach meiner Subjektivität habe ich alles Wichtige zur Verfügung gestellt.
Daher meine Meinung, mein Eindruck (der vielleicht nicht Eurer Wahrheit entspricht):
- Claus, Du hast Dich auf meine Fragen konzentriert und Deine Hilfe war wieder einmal effektiv. Auch wenn Du überlesen hast, dass die Übergabe schon funktionierte... Vielen Dank!
- richard, Du wolltest mir unbedingt die Relation "verkaufen". Aber aufgrund dessen dass von B der Bezug schwierig mit einem Feld in A (1 Firma, mehrere Projekte) zu verbinden ist und ich von A aus den Aufruf mit dem aktuellen Projektdatensatz gestalten wollte (benutzerfreundlich) musste ich die aktuelle Datensatz-Id irgendwie von A nach B übergeben.
Klar kann ich z.B. die Id als Relation nutzen (Deine Beschreibung hat mir hier geholfen das zu testen), aber ich sehe dann als Benutzer noch nicht, ob ich das richtige Projekt erwischt habe. Denn die Id hat der Benutzer nicht im Kopf - wohl aber Firmenname und Projektbezeichnung... Danke für Dein Engagement.
Antworten
Beitrag von Sander (8133 Beiträge) am Freitag, 9.Mai.2008, 12:59.
Re: Re: Re: Re: Re: Re: Datenübergabe mit $_Session in kolo-bp
ich muß Richard zustimmen, sobald die db an der gleichen nutzerdb angeschlossen ist, sollte auch die sid innerhalb von do action=all mit übertragen werden.
Antworten
Beitrag von Rainer (49 Beiträge) am Freitag, 9.Mai.2008, 13:06.
Re: Re: Re: Re: Re: Re: Re: Datenübergabe mit $_Session in kolo-bp - erledigt!
Antworten
Beitrag von Sander (8133 Beiträge) am Freitag, 9.Mai.2008, 14:08.
Re: Re: Re: Re: Re: Re: Re: Re: Datenübergabe mit $_Session in kolo-bp - erledigt!
da hatte ich das nicht beachtet oder nicht dran gedacht... wie auch immer, sorry ;)
Antworten
Beitrag von richard (1187 Beiträge) am Freitag, 9.Mai.2008, 14:30. WWW: posaunenchor-rhoden.de
Re: Re: Re: Re: Re: Re: Re: Re: Re: Datenübergabe mit $_Session in kolo-bp - erl
Antworten
Beitrag von Rainer (49 Beiträge) am Freitag, 9.Mai.2008, 14:52.
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Datenübergabe mit $_Session in kolo-bp -
Zum Thema Glaskugel:
Damit hat das absolut nichts zu tun.
Die erste Info war gut, aber dieses eine Detail hat gefehlt und das war eben auch in der Doku nicht zu finden.
Auch der Begriff initialisieren ist schön und auch richtig, aber das WIE hat eben gefehlt... ich war der Meinungmit der URL-Übergabe hab ich das gemacht... aber Denken ist eben oft ein Synonym für Nicht-Wissen.
Vielleicht nehmt Ihr meine Anmerkungen sportlich und betrachtet es als konstruktive Kritik. Denn nicht jeder hat die Terminologie der Befehle stets parat - ich arbeite z.B. nicht ständig mit bp - mein Hauptberuf ist Vertrieb und die Datenbank mache ich nebenher. Und da fällt es mir leichter, wenn ich auf klaren Befehlscode zurück greifen kann.
Und nun Bitte: Lasst es gut sein. "Nette" Kommentare helfen nun mal leider nicht die Sachlichkeit zu bewahren.
Antworten
Beitrag von Sander (8133 Beiträge) am Freitag, 9.Mai.2008, 15:45.
Re^1256,43: Datenübergabe mit $_Session in kolo-bp -
Ich glaub, du nimmst das gerade viel zu Ernst.
sieh das bitte hier nicht als Kritik, sondern als Tipp für dich und andere beim nächsten mal. Das meinte Richard mit fehlenden Infos - im ersten Teil ist ja nirgends zu lesen, das es sich um <do action... handelt.
Aber schön, das es nun funktioniert ;)
Antworten
Beitrag von Claus (4645 Beiträge) am Samstag, 10.Mai.2008, 08:41.
Re: Re^1256,43: Datenübergabe mit $_Session in kolo-bp -
Antworten
Beitrag von Sander (8133 Beiträge) am Samstag, 10.Mai.2008, 10:56.
Re: Re: Re^1256,43: Datenübergabe mit $_Session in kolo-bp -
jaja, du mußt schwätzen... ;)
genau dieser satz machte die frage etwas konfus
Antworten
Beitrag von Rainer (49 Beiträge) am Freitag, 9.Mai.2008, 14:55.
Re: Re: Re: Re: Re: Re: Re: Re: Re: Datenübergabe mit $_Session in kolo-bp - erl
passt ja nun - soweit klappt alles - nun kann ich an die Feinarbeit ran...
Danke nochmal.
richard-Glaskugel-Return von mir: Hatte Deinen letzten Beitrag noch nicht gelesen.
Antworten