[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Xform Werte aus Datenbank holen - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
tombaer
Beiträge: 154
Registriert: 30. Mär 2008, 00:41
Kontaktdaten: ICQ

Xform Werte aus Datenbank holen

13. Nov 2014, 16:59

Hallo,

ich möchte die Werte für die Formularfelder aus der DB holen und habe es schon probiert mit

$xform->setObjectparams('main_table', 'anfragen');
$xform->setObjectparams('main_where', 'index=1');

als auch im Formular mit

action|db_query|select * from anfragen where index=1|Fehlermeldung

Beides funktioniert nicht, bekomme auch keine Fehlermeldung...

Jemand ne Idee?

Tom
------------------------------------------------
rotzek - Werbung, Hosting und IT
www.rotzek.de
------------------------------------------------

Benutzeravatar
Peter.Bickel
Beiträge: 1856
Registriert: 25. Jan 2005, 21:17
Wohnort: Schleswig-Holstein
Kontaktdaten: Website

Re: Xform Werte aus Datenbank holen

14. Nov 2014, 10:34

Hallo Tom,

sollte so gehen, Code in der "Where Klausel":

Code: Alles auswählen

<?php
$id = rex_request('id', 'int', '0');
$xform->setRedaxoVars($this->article_id, $this->clang, array( 'id' => $id ) );
$xform->setObjectparams("main_where","id = $id");
?>
Das rex_request ist nicht zwingend, aber empfehlenswert, es "säubert" die Variable.
Das setRedaxoVars ist auch nicht zwingend, es hängt Dir nach dem Abschicken die ID wieder an die URL an (falls benötigt).

Du musst natürlich auch die Tabelle im Selectfeld gewählt haben und ein Häkchen bei "Daten initial aus DB holen".

Lg, Peter.

tombaer
Beiträge: 154
Registriert: 30. Mär 2008, 00:41
Kontaktdaten: ICQ

Re: Xform Werte aus Datenbank holen

14. Nov 2014, 11:17

Hallo Peter,

damit habe ich es hinbekommen, danke. Nur habe ich jetzt das Problem, dass ich die Daten nur initial aus der DB holen möchte, wenn ein bestimmter Datensatz vorhanden ist, ansonsten soll das Formular mit
den Default-Werten geladen werden.

Sprich, das "initial aus DB holen" sollte ich nicht über die checkbox in der xform setzen müssen, sondern über php - geht das?

Liebe Grüsse

Tom
------------------------------------------------
rotzek - Werbung, Hosting und IT
www.rotzek.de
------------------------------------------------

Benutzeravatar
Peter.Bickel
Beiträge: 1856
Registriert: 25. Jan 2005, 21:17
Wohnort: Schleswig-Holstein
Kontaktdaten: Website

Re: Xform Werte aus Datenbank holen

14. Nov 2014, 11:29

Nur schnell aus der Hüfte geschossen, ich hab's nicht selbst ausprobiert:
Probier mal, die Felder mit Deinen Defaultwerten zu füllen. Für jeden Feldtyp hat man ja die Möglichkeit, einen Defaultwert zu definieren. Klappt das?

Ansonsten sollte es auch möglich sein, diesen Befehl selbst auszuführen unter bestimmten Bedingungen, wenn Du Deinen Xform-Code selbst aufbaust ohne das Xform-Modul.
Die Passage hierfür hast Du sicher schon selbst gefunden im Xform-Modul-Output:

Code: Alles auswählen

$xform->setObjectparams("getdata",TRUE);
$xform->setActionField("db", array(
      "anfragen",
      $xform->objparams["main_where"],
     )
);

tombaer
Beiträge: 154
Registriert: 30. Mär 2008, 00:41
Kontaktdaten: ICQ

Re: Xform Werte aus Datenbank holen

14. Nov 2014, 11:46

Hallo Peter,

ja, prima, ich bin auf dem richtigen Weg. Hasdt Du mir vielleicht noch einen anderen Tipp?
Ich nutze die action redirect, action|redirect|2|request/label|field
und bekomme es aber nicht hin damit, dass ein Wert an die entsprechende Seite weitergegeben wird.
------------------------------------------------
rotzek - Werbung, Hosting und IT
www.rotzek.de
------------------------------------------------

Benutzeravatar
Peter.Bickel
Beiträge: 1856
Registriert: 25. Jan 2005, 21:17
Wohnort: Schleswig-Holstein
Kontaktdaten: Website

Re: Xform Werte aus Datenbank holen

14. Nov 2014, 12:00

Naja, Du musst natürlich nur "request" ODER "label" setzen.
Sprich, Du musst Dich entscheiden, ob Du hier einen Wert verwenden willst, der über request kommt oder aus einem Feld. Am Ende dann der Feldname.

Jedes Feld (und Validatierung und Aktion) ist ein eine eigene Datei im Xform-Ordner classes.
Schau einfach mal rein, man kann im Normalfall recht schnell erkennen, welcher Parameter in der Syntax wie weiter verarbeitet wird.
Dementsprechend leicht könnte man selbst eigene Klassen erstellen durch Kopieren einer bestehenden und Abändern.

tombaer
Beiträge: 154
Registriert: 30. Mär 2008, 00:41
Kontaktdaten: ICQ

Re: Xform Werte aus Datenbank holen

14. Nov 2014, 12:23

Das habe ich schon verstanden, dass es nur ein wert sein kann.
Habe es versucht einen wert eines textfeldes zu übergeben, der kommt aber auf der redirect seite nicht an: action|redirect|2|label|vorname

wie kann ich übrigens der xform sagen, dass sie keinen insert macht beim speichern in die Datenbank,
sonden ein UPDATE? Wenn ich mir die Daten initial aus der db hole, will ich den Eintrag nicht als neuen
Eintrag speichern, sondern den vorhandenen aktualisieren...
------------------------------------------------
rotzek - Werbung, Hosting und IT
www.rotzek.de
------------------------------------------------

Benutzeravatar
Thomas.Blum
Entwickler
Beiträge: 5063
Registriert: 24. Aug 2004, 22:11
Wohnort: Dresden
Kontaktdaten: Website

Re: Xform Werte aus Datenbank holen

21. Nov 2014, 18:53

Hej,
tombaer hat geschrieben:wie kann ich übrigens der xform sagen, dass sie keinen insert macht beim speichern in die Datenbank, sonden ein UPDATE? Wenn ich mir die Daten initial aus der db hole, will ich den Eintrag nicht als neuen Eintrag speichern, sondern den vorhandenen aktualisieren...
du müsstest main_where setzen

Code: Alles auswählen

$xform->setObjectparams("main_where", 'id=12');
vg Thomas

tombaer
Beiträge: 154
Registriert: 30. Mär 2008, 00:41
Kontaktdaten: ICQ

Re: Xform Werte aus Datenbank holen

22. Nov 2014, 12:35

Hallo Thomas,

danke für die Antwort. Leider klappt es so nicht. Ich habe main_where bereits gesetzt, um den Eintrag aus der DB zu holen, beim Absenden wird dieser dann aber neu gespeichert und nicht aktualisiert.

Zum besseren Verständnis: Ich habe ein Formular, wenn dieses abgesendet wird, wird mit redirect eine Seite aufgerufen, wo die Formularwerte verarbeitet werden und als Bestellübersicht angezeigt werden.
Möchte jemand diese Daten ändern, kann er auf zurück klicken und gelangt wieder zum Formular. Mittels einer übergebenen ID mit main_where wird der aktuelle Datensatz aus der DB geholt und damit die Form gefüllt.

Damit nun der Datensatz nicht doppelt erzeugt wird, habe ich mir mit einer Abfrage beholfen, die prüft, ob jemand "zurück" geklickt hat und lösche dann den bestehenden Eintrag aus der DB. Beim erneuten Absenden des FOrmulars wird dann eine neuer Datensatz gespeichert und gut. Funktioniert soweit, nur hätte ich es gerne über ein Update gelöst.

LG

Tom
------------------------------------------------
rotzek - Werbung, Hosting und IT
www.rotzek.de
------------------------------------------------

Zurück zu „Allgemeines [R4]“