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/
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/
Re: XForm Formular direkt per PHP bauen :)
Du nimmst die ID in der Ausgabe und holst dir per SQL den Namen und gibts denn aus
(und alles andere was du sonst noch brauchst)
(und alles andere was du sonst noch brauchst)
-
- Beiträge: 44
- Registriert: 6. Jan 2011, 14:39
Re: XForm Formular direkt per PHP bauen - select_sql
Ich verstehe noch nicht. Von hinten her gedacht brauch ich ja als Resultat sowas:
damit ich es dann im Formular so (mit einem normalen select-Feld) einbauen kann
Ich habs mit sowass versucht, aber es ist ein Desaster ))
Ich bringe die Werte nicht aus der while-Schlaufe raus, noch sind sie so formatiert wie ich es brauche. Die Datenbank liefert ein zweidimensionales Array, welches ich nicht handeln kann bisjetzt.
Code: Alles auswählen
$locations = "Stadt1,Stadt2,Stadt3";
Code: Alles auswählen
$xform->setValueField('select', array('location', $I18N->msg('schoolcinemamanager_registerform_location'), $locations));
Code: Alles auswählen
// get cities list for form select
/*
$sql = "SELECT id,name FROM rex_schoolcinemamanager_locations ORDER BY name ASC";
$data = mysql_query($sql);
while ($row = mysql_fetch_array($data)) {
$locations = $row['name'].', ';
}
-
- Beiträge: 44
- Registriert: 6. Jan 2011, 14:39
Re: XForm Formular direkt per PHP bauen :)
Im Prinzip müsste ich (nur, ohne Keys) die Values aus der untersten Ebene des zwei-dimensionalen Datenbank-Arrays haben. Finde aber nirgends ne Anleitung für sowas.
-
- Beiträge: 44
- Registriert: 6. Jan 2011, 14:39
Re: XForm Formular direkt per PHP bauen :)
Soweit komm ich mal bis jetzt
Das ergibt dann "ChurHorgenWinterthurZürich".
Bauchen würd ich "Chur,Horgen,Winterthur,Zürich" und zwar ausserhalb des for-Loops und ohne KOmma nach der letzten Stadt.
Code: Alles auswählen
// get cities list for form select
$sql = rex_sql::factory();
$sql->setQuery("SELECT name FROM rex_schoolcinemamanager_locations ORDER BY name ASC");
for($i=0; $i<$sql->getRows(); $i++) {
$locations = $sql->getValue('name');
echo $locations;
$sql->next();
}
Das ergibt dann "ChurHorgenWinterthurZürich".
Bauchen würd ich "Chur,Horgen,Winterthur,Zürich" und zwar ausserhalb des for-Loops und ohne KOmma nach der letzten Stadt.
Re: XForm Formular direkt per PHP bauen :)
Packst in ein array was du in der for schleife befüllst. dann ausserhalb per implode() http://php.net/manual/de/function.implode.php inkl. $glue angabe verbinden.
-
- Beiträge: 44
- Registriert: 6. Jan 2011, 14:39
Re: XForm Formular direkt per PHP bauen - select_sql
Und hier die Lösung
Code: Alles auswählen
// get cities list for form select
$sql = rex_sql::factory();
$sql->setQuery("SELECT name FROM rex_schoolcinemamanager_locations ORDER BY name ASC");
for($i=0; $i<$sql->getRows(); $i++) {
$locations[] = $sql->getValue('name');
$sql->next();
}
$locationlist = implode(',', $locations);
$xform = new rex_xform();
$xform->setValueField('select', array('location', 'Locations'), $locationlist));
etc.
- Thomas.Blum
- Entwickler
- Beiträge: 5063
- Registriert: 24. Aug 2004, 22:11
- Wohnort: Dresden
- Kontaktdaten: Website
Re: XForm Formular direkt per PHP bauen :)
Hej,
dein erster Ansatz sollte funktionieren.
vg Thomas
dein erster Ansatz sollte funktionieren.
Code: Alles auswählen
$xform->setValueField('select_sql', array("location","Locations","SELECT name as id, name AS name FROM rex_schoolcinemamanager_locations ORDER BY name","","","1","bitte wählen"),"0"));
-
- Beiträge: 44
- Registriert: 6. Jan 2011, 14:39
Re: XForm Formular direkt per PHP bauen - select_sql
Ne geht eben nicht, auch nicht in der Pipe. Ist eigentlich ein XForm-Klassiker, der mir schon viele Stunden geraubt hat
Und es geht übrigens auch nicht mit CONCAT() und auch nicht in Table Manager Tabellen (was ein ziemliches Problem darstellt bei Exporten dann und ich auch noch irgendwie lösen sollte...)
Und es geht übrigens auch nicht mit CONCAT() und auch nicht in Table Manager Tabellen (was ein ziemliches Problem darstellt bei Exporten dann und ich auch noch irgendwie lösen sollte...)
- Thomas.Blum
- Entwickler
- Beiträge: 5063
- Registriert: 24. Aug 2004, 22:11
- Wohnort: Dresden
- Kontaktdaten: Website
Re: XForm Formular direkt per PHP bauen :)
Hej,
also ich verwende das des öfteren und glaub mir das klappt. Die Variante mit CONCAT geht übrigens auch.
vg Thomas
also ich verwende das des öfteren und glaub mir das klappt. Die Variante mit CONCAT geht übrigens auch.
vg Thomas
-
- Beiträge: 44
- Registriert: 6. Jan 2011, 14:39
Re: XForm Formular direkt per PHP bauen :)
Du siehst,dass es mir um die "Value=" geht? Ich habe den Code direkt aus dem Quellcode kopiert. Kann ich mal Deinen Quellcode anschauen? Würd mich echt interessieren. Und ich spreche nicht vom normalen select, sondern select_sql.
Code: Alles auswählen
<select class="select " id="xform-formular-field-2" name="location" size="1">
<option value="0" selected="selected">bitte wählen</option>
<option value="3">Chur</option>
<option value="2">Horgen</option>
<option value="1">Winterthur</option>
<option value="4">Zürich</option>
</select>
- Thomas.Blum
- Entwickler
- Beiträge: 5063
- Registriert: 24. Aug 2004, 22:11
- Wohnort: Dresden
- Kontaktdaten: Website
Re: XForm Formular direkt per PHP bauen :)
Ich weiß jetzt nicht was du dir da ansehen willst
Bsp.:
Ergibt
vg Thomas
Bsp.:
Code: Alles auswählen
select_sql|label|Bezeichnung:|SELECT title AS id, title AS name FROM rex_table ORDER BY title
Code: Alles auswählen
<select class="select " name="label" size="1">
<option value="" selected="selected">bitte wählen</option>
<option value="Titel A">Titel A</option>
<option value="Titel B">Titel B</option>
<option value="Titel C">Titel C</option>
<option value="Titel D">Titel D</option>
</select>
-
- Beiträge: 44
- Registriert: 6. Jan 2011, 14:39
Re: XForm Formular direkt per PHP bauen :)
Wenn das so funktioniert, ist es genau das, was ich egsucht habe. Du hast da eine andere Syntax als die, welche ich fand. Merci.
- Thomas.Blum
- Entwickler
- Beiträge: 5063
- Registriert: 24. Aug 2004, 22:11
- Wohnort: Dresden
- Kontaktdaten: Website
Re: XForm Formular direkt per PHP bauen :)
Inwiefern eine andere Syntax?
-
- Beiträge: 44
- Registriert: 6. Jan 2011, 14:39
Re: XForm Formular direkt per PHP bauen - select_sql
Im XForm (Page Beschreibung) steht folgendes
Aus dem XForm Table Manager (Felder editieren -> Formular) entnahm ich diese
Beide führen zu Zahlen im Wert von value. Ich hatte keine Ahnung und konnte auch nicht herleiten, wie man es machen muss.
Korrekt ist also
Code: Alles auswählen
select_sql -> Beispiel: select_sql|label|Bezeichnung:|select id,name from table order by name|[defaultvalue]|[no_db]|1/0 Leeroption|Leeroptionstext|1/0 Multiple Feld|selectsize
Code: Alles auswählen
$xform->setValueField('select_sql', array("partner","Sponsoren","SELECT id, CONCAT(firma, ', ', vorname, ' ', nachname, ', ', tel_g) AS name FROM rex_crm_contacts WHERE stkh_sponsor LIKE "ja" ORDER BY firma ","","","1","bitte wählen","0"));
Korrekt ist also
Code: Alles auswählen
.... SELECT title AS id, title AS name FROM rex_table .....
- Thomas.Blum
- Entwickler
- Beiträge: 5063
- Registriert: 24. Aug 2004, 22:11
- Wohnort: Dresden
- Kontaktdaten: Website
Re: XForm Formular direkt per PHP bauen - select_sql
richtig, weil du die ID Spalte für das value angegeben hast.summselbrumm!media hat geschrieben:Beide führen zu Zahlen im Wert von value. Ich hatte keine Ahnung und konnte auch nicht herleiten, wie man es machen muss.
Richtig wäre
Code: Alles auswählen
SELECT CONCAT(firma, ', ', vorname, ' ', nachname, ', ', tel_g) AS id, CONCAT(firma, ', ', vorname, ' ', nachname, ', ', tel_g) AS name FROM rex_crm_contacts WHERE stkh_sponsor LIKE "ja" ORDER BY firma
-
- Beiträge: 44
- Registriert: 6. Jan 2011, 14:39
Re: XForm Formular direkt per PHP bauen - select_sql
Für die Addon-Entwicklung wollte ich noch wissen, wie den die Syntax von XForm in der Erstellung eines Backend-Formulars heisst. Das ist zwar nicht mehr XForm; trotzdem brauchts mans bei Erstellung eines Addons mit formularbefüllter Tabelle im Frontend, das vom Redaktor dann aber editierbar sein soll (z.B. für Kommentare, Mitgliederanmeldungen, Eventagendas etc.). Hier was ich zum Laufen gebracht habe als select_sql
Pipe:
im Frontend/Modul direkt via PHP:
im Backend, z.B. für Formular-Ausgabe in einer Addon-Page:
Bzw. mit Concat, wenn man gleich mehrere Werte braucht, um Z.B. einen Serienbrief-Export vorzubereiten oder ähnliches:
Achtung: doppelte Anführungszeichen sind entscheidend.
Hinweis: redaxo/include/classes/class.rex_form.inc.php kann Hinweise geben.
Pipe:
Code: Alles auswählen
select_sql|label|Bezeichnung:|SELECT row1 AS id, row1 AS name FROM rex_table ORDER BY row1
Code: Alles auswählen
$xform->setValueField('select_sql', array("label","Bezeichnung","SELECT row1 AS id, row1 AS name FROM rex_table ORDER BY row1","","","1","bitte wählen","0"));
Code: Alles auswählen
$field = &$form->addSelectField('label');
$field->setLabel($I18N->msg('prefix_label'));
$select = &$field->getSelect();
select->setSize(1);
$select->addOption($I18N->msg('prefix_pleasechoose'),0);
$query = 'SELECT row1 AS label, row1 as id FROM rex_table ORDER BY row1';
$select->addSqlOptions($query);
$select->setAttribute('style','width: 150px');
Code: Alles auswählen
$field = &$form->addSelectField('label');
$field->setLabel($I18N->msg('prefix_label'));
$select = &$field->getSelect();
select->setSize(1);
$select->addOption($I18N->msg('prefix_pleasechoose'),0);
$query = 'SELECT CONCAT(row1, ", ", row2) AS label, CONCAT(row1, ", ", row2) as id FROM rex_table ORDER BY row1';
$select->addSqlOptions($query);
$select->setAttribute('style','width: 150px');
Hinweis: redaxo/include/classes/class.rex_form.inc.php kann Hinweise geben.
-
- Beiträge: 44
- Registriert: 6. Jan 2011, 14:39
Re: XForm Formular direkt per PHP bauen - checkbox
Ich hoff, das führt nicht zu weit; aber die nächste Herausforderung ist eine Checkbox
Dies hier speichert nicht ab, ob checked oder nicht. Zeile 3 ist mir völlig unklar.
Alle Addon-Entwickler scheinen die eigentlich tolle form-Klasse zu umgehen und die Formulare direkt als html zu schreiben, wahrscheinlich weil radios und checkboxes nicht möglich sind? Weiss jm. Rat? Es bruacht dringend eine Dokumentation dazu, die Lernkurve hier ist viel zu steil.
Eine Möglichkeit ist auch eine checkbox mit select zu umgehen.
Dies hier speichert nicht ab, ob checked oder nicht. Zeile 3 ist mir völlig unklar.
Code: Alles auswählen
$field = &$form->addCheckboxField('label');
$field->setLabel($I18N->msg('prefix_label'));
$field->addOption('','','nein,ja');
Eine Möglichkeit ist auch eine checkbox mit select zu umgehen.
Re: XForm Formular direkt per PHP bauen :)
Hallo ich steh irgendwie grad an:
ich möchte dass bei einem Abo-Bestellformular die alternative Rechnungsadresse nur dann validiert wird wenn auch die checkbox "alternative Rechnungsadresse" angehackt ist.
Mein Aufbau sieht so aus:
Aber das funktioniert leider nicht weil das erste $formData oben leer bleibt - hat jemand eine idee wie ich da machen könnte?
danke!
ich möchte dass bei einem Abo-Bestellformular die alternative Rechnungsadresse nur dann validiert wird wenn auch die checkbox "alternative Rechnungsadresse" angehackt ist.
Mein Aufbau sieht so aus:
Code: Alles auswählen
$xform = new rex_xform();
$xform->setObjectparams('form_skin', 'default');
$xform->setObjectparams('form_showformafterupdate', 0);
$xform->setObjectparams('real_field_names', true);
$xform->setObjectparams("form_action", rex_getUrl($REX['ARTICLE_ID']));
$xform->setObjectparams('form_anchor','abo_form');
$xform->setObjectparams('form_id','abo_formular');
$xform->setObjectparams('form_name','abo_formular');
$xform->setValueField('text', array("adresse","#placeholder:Adresse, Straße, Hausnummer *"));
$xform->setValueField('checkbox', array("andere_rechnungsadresse","Andere Rechnungsadresse","nein,ja","0"));
$xform->setValueField('text', array("rechnung_adresse","#placeholder:Adresse, Straße, Hausnummer *"));
$xform->setValueField('submit', array('senden', 'Bestellen'));
$xform->setValidateField('empty', array('adresse', 'Bitte Adresse eintragen!'));
$formData = $xform->objparams['value_pool']['email'];
if ($formData['andere_rechnungsadresse'] == 'ja') {
$xform->setValidateField('empty', array('rechnung_adresse', 'Bitte Rechnungs-Adresse eintragen!'));
}
$xform->setRedaxoVars($REX['ARTICLE_ID'], $REX['CUR_CLANG']);
$xform->setValueField('hidden', array('artikel_id', $REX['ARTICLE_ID']));
if (($form = $xform->getForm()) == '') {
$formData = $xform->objparams['value_pool']['email'];
print_r($formData);
} else {
// show form
echo $form;
}
danke!
Re: XForm Formular direkt per PHP bauen :)
warum hast du 2 $formData's? normalerweise macht man nur 1 innerhalb if (($form = $xform->getForm()) == '') {.
Re: XForm Formular direkt per PHP bauen :)
ja das stimmt schon - aber wie bekomme ich sonst den wert für die
abfrage?
wenn ich vor der if abfrage $xform->objparams['value_pool']['email']; ausgebe enthält das irgendwie keine werte und ist ein leere array
Code: Alles auswählen
if ($formData['andere_rechnungsadresse'] == 'ja')
wenn ich vor der if abfrage $xform->objparams['value_pool']['email']; ausgebe enthält das irgendwie keine werte und ist ein leere array
Re: XForm Formular direkt per PHP bauen :)
habs nun mit
if (rex_request('andere_rechnungsadresse') == 'ja')
hinbekommen.
if (rex_request('andere_rechnungsadresse') == 'ja')
hinbekommen.
Code: Alles auswählen
<?php
$xform = new rex_xform();
$xform->setObjectparams('form_skin', 'default');
$xform->setObjectparams('form_showformafterupdate', 0);
$xform->setObjectparams('real_field_names', true);
$xform->setObjectparams("form_action", rex_getUrl($REX['ARTICLE_ID']));
$xform->setObjectparams('form_anchor','abo_form');
$xform->setObjectparams('form_id','abo_formular');
$xform->setObjectparams('form_name','abo_formular');
$xform->setValueField('text', array("adresse","#placeholder:Adresse, Straße, Hausnummer *"));
$xform->setValueField('checkbox', array("andere_rechnungsadresse","Andere Rechnungsadresse","nein,ja","0"));
$xform->setValueField('text', array("rechnung_adresse","#placeholder:Adresse, Straße, Hausnummer *"));
$xform->setValueField('submit', array('senden', 'Bestellen'));
$xform->setValidateField('empty', array('adresse', 'Bitte Adresse eintragen!'));
if (rex_request('andere_rechnungsadresse') == 'ja') {
$xform->setValidateField('empty', array('rechnung_adresse', 'Bitte Rechnungs-Adresse eintragen!'));
}
$xform->setRedaxoVars($REX['ARTICLE_ID'], $REX['CUR_CLANG']);
$xform->setValueField('hidden', array('artikel_id', $REX['ARTICLE_ID']));
if (($form = $xform->getForm()) == '') {
$formData = $xform->objparams['value_pool']['email'];
print_r($formData);
} else {
// show form
echo $form;
}
?>
Re: XForm Formular direkt per PHP bauen :)
jetzt hab ich noch ein anderes Problem was eher xform allgemein betreffen dürfte:
ich hab auf einer seite 2 Formulare - obwohl beide eine unterschiedliche id und namen haben springt beim ausfüllen des ersten formualrs nach absenden die seite zum zweiten unteren formular. und bei beiden formularen werden die warning messages ausgegeben obwohl eben nur das erste abgeschickt wurde. hab ich was übersehen?
form1
form2
ich hab auf einer seite 2 Formulare - obwohl beide eine unterschiedliche id und namen haben springt beim ausfüllen des ersten formualrs nach absenden die seite zum zweiten unteren formular. und bei beiden formularen werden die warning messages ausgegeben obwohl eben nur das erste abgeschickt wurde. hab ich was übersehen?
form1
Code: Alles auswählen
$xform = new rex_xform();
$xform->setObjectparams('form_skin', 'default');
$xform->setObjectparams('form_showformafterupdate', 0);
$xform->setObjectparams('real_field_names', true);
$xform->setObjectparams("form_action", rex_getUrl($REX['ARTICLE_ID']));
$xform->setObjectparams('form_anchor','aboform');
$xform->setObjectparams('form_id','aboform');
$xform->setObjectparams('form_name','abo_formular');
$xform->setRedaxoVars($REX['ARTICLE_ID'], $REX['CUR_CLANG']);
$xform->setValueField('hidden', array('artikel_id', $REX['ARTICLE_ID']));
Code: Alles auswählen
$xform = new rex_xform();
$xform->setObjectparams('form_skin', 'default');
$xform->setObjectparams('form_showformafterupdate', 0);
$xform->setObjectparams('real_field_names', true);
$xform->setObjectparams("form_action", rex_getUrl($REX['ARTICLE_ID']));
$xform->setObjectparams('form_anchor','koform');
$xform->setObjectparams('form_id','koform');
$xform->setObjectparams('form_name','kontakt_formular');
$xform->setRedaxoVars($REX['ARTICLE_ID'], $REX['CUR_CLANG']);
$xform->setValueField('hidden', array('artikel_id', $REX['ARTICLE_ID']));
Re: XForm Formular direkt per PHP bauen :)
Wenn ich das richtig sehe, wird die erste $xform-Variable vom durch das Formular überschrieben (Hat also nix mit Redaxo/xform zu tun, sondern PHP). Der Parameter form_id ist eher für die HTML-Ausgabe und Zuordnung innerhalb von xform gedacht. Versuchs mal so: (es allerdings nicht überprüft.)
form1
form2
form1
Code: Alles auswählen
$aboform = new rex_xform();
$aboform->setObjectparams('form_skin', 'default');
$aboform->setObjectparams('form_showformafterupdate', 0);
$aboform->setObjectparams('real_field_names', true);
$aboform->setObjectparams("form_action", rex_getUrl($REX['ARTICLE_ID']));
$aboform->setObjectparams('form_anchor','aboform');
$aboform->setObjectparams('form_id','aboform');
$aboform->setObjectparams('form_name','abo_formular');
$aboform->setRedaxoVars($REX['ARTICLE_ID'], $REX['CUR_CLANG']);
$aboform->setValueField('hidden', array('artikel_id', $REX['ARTICLE_ID']));
Code: Alles auswählen
$koform = new rex_xform();
$koform->setObjectparams('form_skin', 'default');
$koform->setObjectparams('form_showformafterupdate', 0);
$koform->setObjectparams('real_field_names', true);
$koform->setObjectparams("form_action", rex_getUrl($REX['ARTICLE_ID']));
$koform->setObjectparams('form_anchor','koform');
$koform->setObjectparams('form_id','koform');
$koform->setObjectparams('form_name','kontakt_formular');
$koform->setRedaxoVars($REX['ARTICLE_ID'], $REX['CUR_CLANG']);
$koform->setValueField('hidden', array('artikel_id', $REX['ARTICLE_ID']));
Re: XForm Formular direkt per PHP bauen :)
danke - das hatte ich auch schon ausprobiert bzw. gedacht - ist leider trotzdem immer noch so
Re: XForm Formular direkt per PHP bauen :)
Hi,
jemand eine Idee wie man via PHP / xForm die URL manipulieren kann...
# bei error
if(error) dann mach url: "http://meine-domain.tld/#test
# bei success
if(send) dann url: "http://meine-domain.tld/#test
um damit auf einen id-Anker im HTML zu springen.
Danke schonmal.
grz. Chris
jemand eine Idee wie man via PHP / xForm die URL manipulieren kann...
# bei error
if(error) dann mach url: "http://meine-domain.tld/#test
# bei success
if(send) dann url: "http://meine-domain.tld/#test
um damit auf einen id-Anker im HTML zu springen.
Danke schonmal.
grz. Chris