X-Form: Variable übergeben

Alles über die Anwendung und Entwicklung von AddOns.

X-Form: Variable übergeben

Beitragvon benny0903 » 30. Jun 2008, 14:07

Das Formularaddon X-Form ist wirklich unglaublich mächtig.

Ich habe folgendenes Problem:
Es gibt eine Infoseite auf der ein Angebot vorgestellt wird. Dort befindet sich ein Link über den ein Formular aufgerufen wird. An den Link sind zwei Variablen des Angebots angehängt per
Code: Alles auswählen
URL&a=wert1&b=wert2


Diese lese ich in der Formularseite per
Code: Alles auswählen
$variable = $_GET['a']
aus.

Doch leider gelingt es mir nicht, die Variable in das X-Form zu übergeben. Gibt ja an sich die Zeile
Code: Alles auswählen
php|<?php ... ?>
Das funktioniert hierfür aber anscheinend nicht.

Gibt es eine Lösung und eine bessere Lösungsidee. Es soll halt ein dynamisches Formular rauskommen, dass mit Informationen des Produktes gefüllt wird. Damit der Mail-Empfänger weiß worauf sich bezogen wird.
Zuletzt geändert von benny0903 am 5. Jul 2008, 08:52, insgesamt 3-mal geändert.
benny0903
 
Beiträge: 17
Registriert: 5. Jun 2006, 21:20

So soll es funktionieren:

Beitragvon benny0903 » 1. Jul 2008, 11:43

Um mein Problem noch einmal zu verdeutlichen - so soll das Formular aussehen:
Bild


Die drei mit GET gekennzeichneten Informationen sollen in Formular intergriert werden und auch später versendet werden.

Auch eine Info ob es überhaupt mit den zur Verfügung stehenden Mitteln möglich ist wäre sehr nett.
benny0903
 
Beiträge: 17
Registriert: 5. Jun 2006, 21:20

Übertragung

Beitragvon benny0903 » 1. Jul 2008, 22:08

Ok. Aufgegeben bekomme ich meine Daten an der gewünschten Stellen im Formular jetzt:
Code: Alles auswählen
php|<?php  echo $_GET['a']; ?>



Doch wie bekomme ich es nun noch an die E-Mail übergeben?

Direkt angelegen geht wohl nicht, da ich keine PHP-Variable zuweisen kann. Hatte mir jetzt überlegt mit den von x-Form bereit gestellten Möglichkeiten ein Hidden-Feld zu puzzeln:
Code: Alles auswählen
html|<input type="hidden" name="wert1" value="
php|<?php  echo $_GET['a']; ?>
html|" />


Im Formualar wird das Hidden-Feld auch eingefügt, z.B.:
Code: Alles auswählen
<input type="hidden" name="wert1" value="Villa Vineta, W203" />


Doch wie schaffe ich nun noch den finalen Schritt und versende den Wert per E-Mail. Ist das machbar?

Bitte gebt mir einen Tipp oder Lösungsansatz!
Zuletzt geändert von benny0903 am 5. Jul 2008, 08:54, insgesamt 1-mal geändert.
benny0903
 
Beiträge: 17
Registriert: 5. Jun 2006, 21:20

Beitragvon Markus.Staab » 2. Jul 2008, 10:32

Hi benny,

Die X-Form sind Jans Baby. Der ist leider im Urlaub, daher musst du wohl auf die Hilfe der anderen Forenbesucher hofffen ;)

Gruß,
Markus
Benutzeravatar
Markus.Staab
Entwickler
 
Beiträge: 9781
Registriert: 29. Jan 2005, 14:50
Wohnort: Aschaffenburg/Germany

Lösung

Beitragvon benny0903 » 5. Jul 2008, 08:33

Wäre schon schön wenn jemand eine Lösung fände.

Bzw. wenn Jan sich der noch einmal annehmen könnte, wenn er aus seinem wohlverdienten Urlaub kommt. Sind unter Umständen ja nur ein, zwei Kniffe nötig.

Das wäre natürlich für viele Formularanwendungen ein riesiger Fortschritt, wenn XForm diese Funktionalität auch noch bieten würde!
benny0903
 
Beiträge: 17
Registriert: 5. Jun 2006, 21:20

Beitragvon marry » 14. Jul 2008, 16:39

gibts für dieses Problem schon eine Lösung?
marry
 
Beiträge: 42
Registriert: 17. Mai 2008, 18:15

Beitragvon benny0903 » 15. Jul 2008, 07:03

Leider noch nicht. Hoffe Jan kann nach seinem wohlverdienten Urlaub einen Kommentar/Tipp geben.
benny0903
 
Beiträge: 17
Registriert: 5. Jun 2006, 21:20

Beitragvon Peter.Bickel » 15. Jul 2008, 07:52

Vielleicht mal ein Denkansatz in ganz anderer Richtung: Du könntest die Werte im ersten Schritt auch in die Datenbank speichern und im zweiten Schritt wieder auslesen. Ich glaube, das Xform ist eher für diese Art der Weiterverarbeitung konzipiert.

Peter.
Benutzeravatar
Peter.Bickel
 
Beiträge: 1642
Registriert: 25. Jan 2005, 20:17
Wohnort: Schleswig-Holstein

Beitragvon benny0903 » 18. Jul 2008, 08:41

Hallo Peter,

auch ein interessanter Ansatz denke ich. Allerdings muss ich zugeben, dass mir der Einstieg in deine Lösungidee etwas schwer fällt. Ich muss den Wert schließlich zunächst in die Datenbank übergeben. Das ist mir noch nicht ganz klar, wie das am schlausten anstelle.


Ansonsten noch einmal zurück zu meinem ursprünglichen Ansatz. Da ich ja gerne eine Variable im Formular mitgeben will, habe ich überlegt, wie ich auf PHP zugreifen kann. Dabei ist mir aufgefallen, dass ich einen Wert auch über folgende Definition mitgeben kann:

Code: Alles auswählen
$email_elements["feldname"] = "feldwert";


Ansprechbar im Mail-Template dann über ###feldname###.
Leider gelingt es jedoch weiterhin nicht hierbei einen variablen Wert zu verwenden, z.B. so:

Code: Alles auswählen
php|<?php $email_elements["wohnung"] = $_GET['w']; ?>


Der Platzhalter im Mailtemplate bleibt leer.
Ich muss noch einen Denkfehler haben.
benny0903
 
Beiträge: 17
Registriert: 5. Jun 2006, 21:20

Beitragvon Peter.Bickel » 18. Jul 2008, 08:49

Meine Idee mit dem Eintragen in die DB kam mir nur deshalb, weil ich mit Thomas gerade an einer Website baue, wo wir einen relativ komplexen mehrstufigen Bezahlvorgang machen und uns entzschlossen haben, die Parameter auf diese Weise zu übergeben. Ich denke, dass das Xform auch eher dafür konzipiert ist.

Aber zu Deinem Weg: Du kannst ein Hidden Field ja auch folgendermaßen definieren:
hidden|irgendeine_id|default_value|REQUEST|[no_db]
Hast Du das mal probiert? Vielleichtr ist sie dann auch mittels Email auszuwerten.

Grüße,
Peter.
Benutzeravatar
Peter.Bickel
 
Beiträge: 1642
Registriert: 25. Jan 2005, 20:17
Wohnort: Schleswig-Holstein

Beitragvon benny0903 » 18. Jul 2008, 09:51

Habe mir die Funktion noch einmal angeschaut.
Gute Idee!

Das Formular wird über folgenden Beispeillink aufgerufen:
/index.php?article_id=200&zeit=10.05.2008-18.05.2008

Folgende Zeile schreibe ich ins Formular:
hidden|zeit|nicht festgelegt|REQUEST|[no_db]

Und in den Mail-Body:
###zeit###

Gibt es keine Variable "zeit" so wird kein Hidden-Feld in Formular geschrieben und in der E-Mail steht anschließt der der Standard-Wert "nicht festgelegt". So soll es ja auch sein.
Gibt es die "zeit" so steht steht sie auch als Hidden-Feld im Quelltext des Formulars. Das ist prima. Aber warum wird der Platzhalter im Mail-Body nicht ersetzt. Es steht dort dann halt nur "###zeit###". Ein Bug? Wir stehen kurz vor dem Ziel. Meine ganzen anderen Überlegungen mit PHP sind eigentlich hinfällig, weil es diese value-Funktion lösen sollte. Wenn es nur in der Mail stehen würde.

Ich tippe auf einen Fehler in der class.xform.hidden.inc:

Code: Alles auswählen
function enterObject(&$email_elements,&$sql_elements,&$warning,&$form_output,$send = 0)
   {
      if (isset($this->elements[3]) && $this->elements[3]=="REQUEST" && isset($_REQUEST[$this->elements[1]]))
      {
         $this->value = $_REQUEST[$this->elements[1]];
         $form_output[] = '<input type="hidden" name="'.$this->elements[1].'" value="'.$this->value.'" />';
      }else
      {
         $this->value = $this->elements[2];
         $email_elements[$this->elements[1]] = $this->value;
         if (!isset($this->elements[4]) || $this->elements[4] != "no_db") $sql_elements[$this->elements[1]] = $this->value;
      }


Fehlt in der "Request-Schleife" nicht schlicht weg die folgende Festlegung:
$email_elements[$this->elements[1]] = $this->value;
benny0903
 
Beiträge: 17
Registriert: 5. Jun 2006, 21:20

Beitragvon Peter.Bickel » 18. Jul 2008, 10:03

Probier's doch einfach mal aus, was dann passiert? ;-)
Benutzeravatar
Peter.Bickel
 
Beiträge: 1642
Registriert: 25. Jan 2005, 20:17
Wohnort: Schleswig-Holstein

LÖSUNG

Beitragvon benny0903 » 18. Jul 2008, 10:42

Ja. War ein Bug.
Eigentlich eine einfache Lösung.
Meine ganzen Umwege hätte ich mir uch sparen können.

Einfach die Schleife gegen diese austauschen:
Code: Alles auswählen
if (isset($this->elements[3]) && $this->elements[3]=="REQUEST" && isset($_REQUEST[$this->elements[1]]))
      {
         $this->value = $_REQUEST[$this->elements[1]];
         $form_output[] = '<input type="hidden" name="'.$this->elements[1].'" value="'.$this->value.'" />';
         $email_elements[$this->elements[1]] = $this->value;
      }


Ab jetzt wissen alle bescheid wie es geht!
benny0903
 
Beiträge: 17
Registriert: 5. Jun 2006, 21:20

Beitragvon Dios87 » 29. Jul 2008, 12:52

Hallo benny0903,

Jedesmal wenn ich ein X-Form erstelle und versuche eine Variable über
Code: Alles auswählen
php|<?php  echo $_GET['a']; ?>
auszugeben bekomm ich eine Fehlermeldung nach dem speichern des Formulars. Kannst du mal beschreiben wie du's gemacht hast?

EDIT: Hat sich erledigt.
Dios87
 
Beiträge: 50
Registriert: 14. Mär 2008, 16:04

Beitragvon darwin » 31. Jul 2008, 16:30

Hi,
... danke@benny hat schon was geholfen...

nur steh ich grad wieder aufm Schlauch.
Wie könnte man dem
Code: Alles auswählen
article|article_id

nun den Wert aus dem hiddenField
Code: Alles auswählen
hidden|kaufid|default_value|REQUEST|[no_db]

geben?

bzw. einen Artikel der email mitgeben?

article|18 .. so kann man sich ja eine Artikel anzeigen lassen...
den wert(id) würde ich der URL mitgeben (&kaufid=18)
und per HiddenField ins Formular einbauen.. nur wie?

Jemand eine Idee.
Danke schonmal. gruß Chris
Benutzeravatar
darwin
 
Beiträge: 1261
Registriert: 2. Jan 2007, 16:10
Wohnort: LA

Nächste

Zurück zu AddOns [R4]

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste

cron