[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
REDAXO Forum • xForm ID Aufruf
Seite 1 von 1

xForm ID Aufruf

Verfasst: 18. Dez 2015, 23:49
von ManuelSeipel
Hallo alle zusammen,

habe mir in der xForm ein Frontend Daten weiterverarbeitung gebastelt.
Einen Datensatz aufrufen und wieder speichern über:

Code: Alles auswählen

com_auth_load_user|userinfo|login,email,online,....
action|db|rex_com_user
objparams|getdata|1
objparams|main_table|rex_com_user


hidden|id|0|get_Detail|[no_db]

objparams|main_where|id=710   //ID von Hand Eingetragen

checkbox|online|Online 1. Klasse|Values(0,1)|default clicked (0/1)|[no_db]
text|firstname|Vorname:*
validate|empty|firstname|<font color="#FF0000"><strong>Bitte gebe einen Vornamen ein.</strong></font>
usw.....

submit||Speichern|no_db


action|db|rex_com_user|main_where

funzt einwandfrei

Aufrufen möchte ich das ganze aber aus einer liste mit dem Link:
.../bearbeiten.html?Detail=710 (bzw. entsprechende ID)

wie bekomme ich die entsprechende ID in die Zeile

Code: Alles auswählen

objparams|main_where|id=###id###
mit den vorhandenen Foreneinträgen komm ich irgendwie nicht weiter........

Update:
bei jedem speichern (wenn die ID mit "objparams|main_where|" fest definiert ist) wird wie in andern Foreneinträgen ein neuer Datensatz erstellt .... :-(


Vielen Dank vorab

Gruß Manuel

Re: xForm ID Aufruf

Verfasst: 19. Dez 2015, 11:13
von Xong
Hi Manuel,

beim XForm-Formbuilder musst du "Bei Submit" "Nur in Datenbank speichern oder aktualisieren wenn "main_where" gesetzt ist" auswählen.
Dann kannst du in dem unten aufpoppenden Textfeld folgendes definieren:

Code: Alles auswählen

<?php
if($id = rex_get('id', 'int'))
  $xform->setObjectparams('main_where', 'id = '.$id);
?>

Re: xForm ID Aufruf

Verfasst: 19. Dez 2015, 19:07
von ManuelSeipel
Hallo Robert,

hab ich gemacht, jetzt kommt nur ein Datensatz hinzu statt zwei.... :-(

und was mach ich beim aufrufen mit der ID verkehrt...

Hier nochmal der aktuelle Code:

Code: Alles auswählen

com_auth_load_user|userinfo|login,email,firstname,name,club,team,team2,strasse,plz,ort,transponder,newsletter,telefon,handy,eingegangener_betrag,online,online2,email,lizenz,verband,geb,last_action_time

action|db|rex_com_user|main_where
objparams|getdata|1
objparams|main_table|rex_com_user

objparams|main_where|id=935

php|name|<?php echo 'ID: '.$_GET["Detail"].''; ?>

select|online|Online 1. Klasse|Nein=0,Ja=1|[no_db]|defaultwert=nein|multiple=1|selectsize=1
select|online2|Online 2. Klasse|Nein=0,Ja=1|[no_db]|defaultwert=nein|multiple=1|selectsize=1

text|eingegangener_betrag|Eingegangener Betrag:

text|firstname|Vorname:*
validate|empty|firstname|<font color="#FF0000"><strong>Bitte gebe einen Vornamen ein.</strong></font>

text|name|Nachname:*

text|strasse|Straße:*
validate|empty|strasse|<font color="#FF0000"><strong>Bitte gebe eine Straße ein.</strong></font>

text|plz|PLZ:*
validate|empty|plz|<font color="#FF0000"><strong>Bitte gebe eine Postleitzahl ein.</strong></font>

text|ort|Wohnort:*
validate|empty|ort|<font color="#FF0000"><strong>Bitte gebe einen Wohnort ein.</strong></font>

text|email|E-Mail:*
validate|email|email|<font color="#FF0000"><strong>Bitte gebe eine E-Mailadresse ein.</strong></font>

text|club|Club:

text|telefon|Telefon:

text|handy|Handy:

select_sql|lizenz|Lizenz:|SELECT CONCAT(lizenz) as id, CONCAT(lizenz) as name FROM rex_lizenz

select_sql|verband|Verband:|SELECT CONCAT(verband) as id, CONCAT(verband) as name FROM rex_verband

date|geb|Geburtsdatum:|1920|2011|Tag:###D###-Monat:###M###-Jahr:###Y###|
validate|empty|geb|<font color="#FF0000"><strong>Bitte gebe ein Geburtsdatum ein.</strong></font>

text|transponder|AMB/MYLAPS MX Transpondernr.:

text|team|Team:

text|team2|Team für 2. Klasse:

hidden|newsletter|1||[no_db]

datestamp|last_action_time|YmdHis|[no_db]|0
submit||Speichern|no_db
Gruß Manuel

Re: xForm ID Aufruf

Verfasst: 22. Dez 2015, 17:24
von Xong
Hi,

ich werd aus deiner Fehlerbeschreibung nicht schlau?
Wieso sollten zwei Datensätze gespeichert werden?

Re: xForm ID Aufruf

Verfasst: 29. Dez 2015, 12:48
von ManuelSeipel
Ok, hab ich ein bischen doof geschrieben..
Natürlich soll nur der vorhandene Datensatz aktualisiert werden.
In der jetzigen Konfiguration kommt beim speichern der Änderung jeweils ein neuer Datentensatz mit den gleichen Inhalten hinzu.

Re: xForm ID Aufruf

Verfasst: 1. Jan 2016, 16:10
von Xong
Hi,

dann ist main_where nicht gesetzt.
Denn sobald da was drin steht, wird die update-Methode aufgerufen.
Schlimmstenfalls müsste eine Fehlermeldung kommen.
Hast du den Debugmodus aktiviert?

Re: xForm ID Aufruf

Verfasst: 1. Jan 2016, 23:11
von ManuelSeipel
Hallo Robert, ein frohes neues wünsche ich...

ja hab ich gemacht.
es wird einmal

Code: Alles auswählen

Query: UPDATE `rex_com_user` SET `online`='0',   usw...    `last_action_time`='20160101215856' WHERE id=935
und einmal

Code: Alles auswählen

Query: INSERT INTO `rex_com_user` SET `online`='0',   usw...     
ausgeführt.

in der xForm hab ich main_where wie folgt drin.

Code: Alles auswählen

action|db|rex_com_user|main_where
objparams|getdata|1
objparams|main_table|rex_com_user
objparams|form_showformafterupdate|1

objparams|main_where|id=935
Gruss Manuel

Re: xForm ID Aufruf

Verfasst: 7. Jan 2016, 06:17
von Xong
Du darfst die Action "db" nicht manuell ausführen. Das erledigt das Modul schon für dich.

Re: xForm ID Aufruf

Verfasst: 20. Okt 2016, 14:54
von ManuelSeipel
Hallo alle zusammen,

Meine Rennsaison ist zu Ende, da kann ich mich wieder diesem hier zuwenden...

Habe den code im xForm Modul mal reduziert auf:

text|name|Name:*

"Bei Submit" "nur in DB Speichern oder akt...."

rex_com_user Tabelle ausgewählt

Daten aus DB hohlen angehakt

Where Klausel wie von Xong vorgegeben:

<?php
if($id = rex_get('id', 'int'))
$xform->setObjectparams('main_where', 'id = '.$id);
?>

Der richtige Datensatz wird angezeigt.

beim erneuten abschicken bekomme ich dann aber die Meldung:

Code: Alles auswählen

Query: SELECT * from rex_com_user WHERE
Affected Rows: 0
Error Message: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
Error Code: 1064

    ErrorCode - EntryNotFound
Da bleibe ich an der Stelle hängen in welcher nähe ich suchen soll...
Die Tabellenspalte existiert.

Falls es relevant sein sollte:
Version
REDAXO: 4.5.1
PHP: 5.3.29
Datenbank
MySQL: 5.6.19

xForm Version 4.5.1

Vielen Dank für eure Hilfe.

Gruß Manuel