Beitrag von hempelr (1976 Beiträge) am Samstag, 24.Januar.2004, 16:44.
@CB - nicht dran gedacht - Fehler oder aus bestimmtem Grund?
Hallo, Christoph,
ich bastel grad an ner kleinen Sache mit den bp-internen Formularen und Ausgaben und will ne Überprüfung der Eingaben machen.
Das geht auch richtig gut - wenn man einfach nur nach den Inhalten abfragt und dann ggf. ne Fehlermeldung generiert und $_put{_amount} killt. Da bringt er dann richtig schön die selbst gebaute Fehlermeldung und die bp-interne Fehlermeldung "Ungültige Eingabe" - a a b e r
es ist mit allen mir bekannten Mitteln nicht hinzukriegen, dass er in das sich wieder aufbauende Formular die bisher getätigten Eingaben übernimmt :-((((
(Also rein kommen sie im put-Hash, man kann sie auch umkopieren, aber sie werden dann nicht in die Formularfelder als Vorbelegung übernommen....)
Hast du mit Absicht als Values die Feldvariablen nicht bei der Generierung des Eingabeforms beachtet oder es nur vergessen oder ganz anders - hab ich nur keinen Plan?
Bei eigenen Formularen mach ich ja auch nur ein Formular für Ändern und Neuanlagen und gebe dann immer die Feld-Variable als Vorbelegung an, wenn die leer ist (bspw. bei Erstaufruf für Neuanlage) ist das Feld dann leer, bei Fehlerhafter Eingabe kopier ich die vorhandenen %_put-Werte einfach in die gleichnamigen %_get-Werte (bzw. in die Variablen mit Namen des put-Keys) und damit sind die Werte dann elektrisch im Eingabeformular....
Gut, bei Option-Feldern und Radio-Feldern etwas aufwändiger, aber auch einfach über ne universelle Sub machbar - Abfrage über die db.fields auf die entsprechenden Typen, dann die Werte holen und mit dem reingekommen vergleichen und ggf. auf selected setzen)
Danke für nen Tipp
Ruben
Antworten
Beitrag von Pouraga (1396 Beiträge) am Sonntag, 25.Januar.2004, 22:11.
Re: @CB - nicht dran gedacht - Fehler oder aus bestimmtem Grund?
Funktioniert leider nicht was du vor hast.
Die Formulare die duch do_all erzeigt werden, lassen sich (noch?) nicht von "aussen perl" vorbelegen.
Antworten
Beitrag von hempelr (1976 Beiträge) am Dienstag, 27.Januar.2004, 07:11.
OT Danke Pourage - hab ich mir schon gedacht - war: Re: @CB - nicht dran....
Antworten
Beitrag von Christoph Bergmann (8110 Beiträge) am Dienstag, 27.Januar.2004, 07:40.
Re: hab ich mir schon gedacht - ja? ;-)
Also ich hab das jetzt nich zu Ende gedacht, aber bei "Ändern" wird das do-all-Formular ja sehr vorbelegt und zwar mit den Werten des zu ändernden Datensatzes... Mit a bisserl Trickserei könnte man da vielleicht was drehen, eigene Eingaben unterzuschieben... Habs aber nich durchdacht (mhh, den Datensatz tatsächlich ändenr wär n bisschen hart)... ;-)
Antworten
Beitrag von Pouraga (1396 Beiträge) am Mittwoch, 28.Januar.2004, 15:01.
Re: hab ich mir schon gedacht - ja? ;-)
>Also ich hab das jetzt nich zu Ende gedacht
Ich aber! *g*
Die Werte werden innerhalb von Baseportal sowohl beim Andern wie auch beim Neu Formular überschrieben (halt mit den aus der DB oder den aus Fields). (da kann man aber bestimmt was gegen machen ;))
Hab da vor einiger Zeit noch was ganz wildes versucht. Für Text Felder lassen sich ja auch vorbelegungen bei der Felddefinition angeben. Aus dem Template habe ich auf .fields zugegriffen und ebend diese ständig geändert. Hat auch halbwegs gut funktioniert solange man keine Änderungen mehr an der DB gemacht hat. Wenn man z.B. ein Feld hinzugefügt hat, ist die ganze Felddefinition durcheinander geraten und man hatte nurnoch Datensalat.
Hab für mich die Begründung zusammengelegt (reine Spekulation), dass wohl die Indexdatei von .fields nicht mitgeändert wird und das es daher bei Änderung an der DB es zu sowas kommt. (aber da weiss der Cristoph bestimmt besser warum)
@Cristoph: Wenn man .fields ändern könnte ohne das es zwangsläufig irgendwann zu nem Crash kommt, dann würde do_all wohl zu nem weitaus vielseitigerem Werkzeug als du selbst geplant hast. ;)
Antworten
Beitrag von Christoph Bergmann (8110 Beiträge) am Mittwoch, 28.Januar.2004, 17:04.
Re: hab ich mir schon gedacht - ja? ;-)
Deine Spekulation ist völlig richtig ;-) Allerdings kann man den .fields-Index einfach wieder aufbauen, indem man ein Feld hinzufügt und dann wieder löscht.
Ja, ich bin selber überrascht, wie weit das do_all trägt, grade wenn man ein bisschen Code davor dazu macht.....
Mmh, statt über .fields zu gehen würde ich es aber für besser halten, das Zeugs nur im Speicher zu ändern. Moment, ich schau mal nach obs da vielleicht schon ne Möglichkeit gibt.... (raschel)
mhhh... geht wohl nich... man müsste an die feld-internas von %$_db ran. muss ich mal freigeben, allerdings muss ich vorher ein bisschen aufräumen, die namen sind noch unglücklich gewählt...
Antworten