WAA und arrays [erledigt]

Vom Front-End bis SOAP.

Moderator: Moderatoren

Antworten
Ewald
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 475
Registriert: Sa, 08. Apr 2006 14:07
Wohnort: Datteln
Danksagung erhalten: 3 Mal
Kontaktdaten:

WAA und arrays [erledigt]

Beitrag von Ewald »

Ich versuche mich in dieses Thema einzuarbeiten, komme aber an einer Stelle nicht weiter. Wahrscheinlich habe ich mich da total verrannt und es fehlen mir entscheidene Grundlagenkenntnisse.
Ich möchte im Browser ein Fenster ausgeben, in dem ich mit ohtml:put den Inhalt eines arrays ausgeben. Das funktioniert mit einer Schleife problemlos.
Nun würde ich gerne im gleichen Fenster die Möglichkeit haben, Daten einzugeben, die ich diesen Arrayelementen in der weiteren Abarbeitung zuordnen kann. Das versuche ich mit einem zweiten Array.
Der etwas sinnentleerte Code zeigt wohl, was ich da vorhabe.
Die Vornamen werden angezeigt, dahinter erscheinen Eingabefelder für die Nachnamen. Das funktioniert soweit gut.
Allerdings werden Eingaben in diese Felder nicht (wie ich es erwartet hatte) den arrayelementen nachname zugewiesen. Sie versickern wohin auch immer.
Das weiter Ziel sollte es sein, nach dem Absenden die Daten beider Arrays in eine weiteren Funktion zu übergeben und dort dann anzuzeigen oder in eine DBF zu schreiben, die aus den Feldern Vorname und Nachname besteht. Auch da gelingt es mir nicht, die Arrays zu übergeben. Das habe ich in anderen Versuchen nur mit Variablen und ohtm:getvar hinbekommen. Dieses Beispiel knallt z.B. ab, weil die arrays in der Funktion uk_sende nicht bekannt sind.
Ist es überhaupt möglich, im Browser Daten per Schleife in ein array einzulesen ?

Code: Alles auswählen

//  Direkteingabe

FUNCTION _register( oPackage )
   oPackage:registerForm( "uk_opel" )
   oPackage:registerForm( "uk_sende" )
RETURN .T.

FUNCTION uk_opel( oHTML, oContext )

   DECLARE Vorname  := {"GERDA","KLAUS","MANFRED","KARL","EGON"}
   DECLARE Nachname := {".....",".....",".......","....","...."}
   
   ohtml:header()
   ohtml:formstart()

   for xi = 1 to len(vorname)
     ohtml:put("<P>")
     ohtml:put(vorname[xi])
     ohtml:sle("","nachname[xi]",nachname[xi],"")
     ohtml:put("</p>")
   next

   ohtml:setvar( "WAA_PACKAGE", "uk_opel")
   ohtml:setvar( "WAA_FORM"   , "uk_sende")
   ohtml:submitbutton ("Daten senden")

   ohtml:formend()

RETURN .T.

function uk_sende(ohtml,ocontext)
* irgendwie müssen die array hier übernommen werden

   for yi = 1 to len(vorname)
   ohtml:header()
   ohtml:formstart() 
      ohtml:put("<p>"+vorname[xi]+nachname[xi]+"</p>")
   next
   ohtml:formend()

*oder Daten speichern
*use adressen
*for yi = 1 to len(vorname)
*appe blan
*repl vorname    with vorname[yi]
*repl nachname  with nachname[yi]
*next
*close adressen

return .t.

Zuletzt geändert von Ewald am Sa, 30. Mai 2009 15:48, insgesamt 1-mal geändert.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: WAA und arrays

Beitrag von Martin Altmann »

Hallo Ewald,
ich habe gerade nicht viel Zeit und habe Deinen Beitrag mal eben so nur kurz überflogen...
Wenn Du in einer HTML-Seite Variablen belegen willst (Eingabefelder...), so braucht jedes Feld einen eigenen Namen, unter dem die Eingabe dann wieder abgefragt werden kann!

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Ewald
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 475
Registriert: Sa, 08. Apr 2006 14:07
Wohnort: Datteln
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: WAA und arrays

Beitrag von Ewald »

Hallo Martin,
soweit war ich schon und genau das ist auch mein Problem. Ich habe da auch schon mal was geschrieben, das mit einzelnen Variablen auch funktioniert. Da werden dann aber aus z.b. 50 Eingabefeldern auch 50 Zeilen append und replace Befehle oder auch 50 ohtml:put Zeilen. Und wenn ich das weiter übergebe 50 Übergaben und 50 Übernahmen der einzelnen Variablen. Das ganze in Tabellen ausgegeben waren auf einmal 10 Seiten Quellcode. Das konnte ich mir nicht vorstellen, dass man da nicht mit Schleifen arbeiten kann.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: WAA und arrays

Beitrag von brandelh »

Hallo,

zunächst mal eine Klarstellung: auf der HTML Seite und bei der Datenübertragung von HTML Server
zu deinem Programm gibt es keine Arrays !
Das bedeuted aber nicht, dass du auf der PRG Seite nicht die Zeilen in einer Schleife abarbeiten
und in ein Array laden kannst. Mit dem WAA und dem HTML Framework von Alaska habe ich zwar noch
nicht gearbeitet, aber grundsätzlich musst du die nötigen HTML Seiten so zusammenbauen, das
du linksbündig gleiche Namen erhältst, die rechts hochgezählt werden (das scheint dein Beispiel zu tun).
Im ankommenden Datenstrom (also wenn die ausgefüllten Daten zurückkommen) wird es zu jedem
dieser erzeugten Felder - das ausgefüllt wurde - eine Feldvariable mit Name_?? und dem Inhalt geben.

blanko HTML - Eingabefeld (wohl oHTML:sle(...) ), erzeugt mit 'NAME_'+strZero(x,2) :

Code: Alles auswählen

<INPUT NAME='NAME_01' VALUE='' SIZE='20' MAXLENGTH='30' >/INPUT>
<INPUT NAME='NAME_02' VALUE='' SIZE='20' MAXLENGTH='30' >/INPUT>
<INPUT NAME='NAME_03' VALUE='' SIZE='20' MAXLENGTH='30' >/INPUT>
<INPUT NAME='NAME_04' VALUE='' SIZE='20' MAXLENGTH='30' >/INPUT>
<INPUT NAME='NAME_05' VALUE='' SIZE='20' MAXLENGTH='30' >/INPUT>
<INPUT NAME='NAME_06' VALUE='' SIZE='20' MAXLENGTH='30' >/INPUT>
wenn der Anwender nun z.B. in der 2. und 5. Zeile (damit muss man rechnen !) etwas ausfüllt,
erhälst du nur diese beiden Variablen zurück, du weist aber, dass es z.b. 01 bis 20 sein könnten ...

CGI-Rückgabe ...

&NAME_02=Meier&NAME_03=Meister

du weißt aber, dass du 20 Felder zur Verfügung gestellt hast, also prüfe ob da was drin steht ...
ich kenne jetzt die Syntax für oHTML nicht aber im Prinzip so

gibt es ein Feld 'NAME_'+strZero(x,2) ?
Wenn ja, lade den Inhalt ins Array ..., wenn nicht weitersuchen.

Keinesfalls musst du 100 Zeilen mit ähnlichen Variablen nutzen.
Und wenn du nur ein Macro nutzt um eine Variable dynamisch zu erzeugen:
&('NAME_'+strZero(x,2)) (nicht empfohlen).
Gruß
Hubert
Ewald
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 475
Registriert: Sa, 08. Apr 2006 14:07
Wohnort: Datteln
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: WAA und arrays

Beitrag von Ewald »

Hallo Hubert,
jup, dynamische Variablen war das Stichwort. Hier ist das Ergebnist aus ca. 100 Zeilen Quellcode. (Noch) nicht schön, aber funktionell und ausbaufähig.
http://rstower.mine.nu/uk/uk.htm
Danke
Ewald
Benutzeravatar
Armin
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 389
Registriert: Mo, 26. Sep 2005 12:09
Wohnort: 75331 Engelsbrand
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: WAA und arrays

Beitrag von Armin »

Hallo,

naja, man benötigt nicht unbedingt pro Feld einen eigenen Namen. Sie stehen auch mit gleichem Namen in den htmlvars:
{"NAME","Schmitt"}
{"NAME","Maier"}
usw.

Oder man baut sich das Array in einer Javascriptfunktion zusammen, so dass das Ergebnis ungefähr so aussieht:
{"aNAME","Schmitt,Maier"}
Und danach den String zerlegen...

Aber es geht natürlich auch mit eindeutigen Namen.

Grüsse, Armin
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: WAA und arrays

Beitrag von Martin Altmann »

Hallo Armin,
ich würde nicht sagen:
Armin hat geschrieben:Aber es geht natürlich auch mit eindeutigen Namen.
sondern eher:
Aber es geht natürlich auch ohne eindeutigen Namen!
Letzteres ist nämlich eher untypisch und die Ausnahme - behaupte ich mal so!
Ersteres ist nämlich wesentlich einfacher in der Auswertung am Schluß. :wink:

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Armin
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 389
Registriert: Mo, 26. Sep 2005 12:09
Wohnort: 75331 Engelsbrand
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: WAA und arrays

Beitrag von Armin »

Hallo Martin

ich benutze mittlerweile alle Varianten - ist eigentlich alles ok - nur immer dran denken, Arrays fangen in Javascript mit dem Index 0 an.

Grüsse, Armin
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: WAA und arrays

Beitrag von brandelh »

Hi,

Javascript verwende ich fast gar nicht und auf keinen Fall für Sachen,
die nötig sind damit das Programm funktioniert.
Ich persönlich habe NoScript auf dem Rechner und verhindere Scripts wo es nur geht.
Meinen Anwendern will ich das auch ermöglichen ;-)

Ich selbst habe mir eine Klasse geschrieben, die alle übergebenen Parameter
in ein Array umsetzt und Methoden, die dann den Wert zu einer Variablen
zurückgeben bzw. setzen. Da brauche ich auf jeden Fall eindeutige Namen.
Gruß
Hubert
Benutzeravatar
Armin
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 389
Registriert: Mo, 26. Sep 2005 12:09
Wohnort: 75331 Engelsbrand
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: WAA und arrays

Beitrag von Armin »

Hallo Hubert,

wieso willst Du kein Javascript benutzen? Auch dieses Forum läuft mit Javascript.
Dadurch wird so eine Seite erst dynamisch - ich prüfe z.B. die Eingaben soweit möglich schon mal mit Javascript.
Und dann gibt es sehr nette Javascripte wie z.B. Kalender, Textverwaltungen, Tabellensortierer, Tabellenfilter, Auf- und Zuklappen von verschiedenen Elementen usw..

Grüsse, Armin
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: WAA und arrays

Beitrag von brandelh »

Armin hat geschrieben:wieso willst Du kein Javascript benutzen?
aus Sicherheitsgründen ist dies bei mir grunsätzlich abgeschaltet.
Für dieses Forum habe ich es freigeschaltet, genauso wie für einige andere Websites,
denen ich vertraue(n muss) ;-)

Ich brauchte bisher keinen Web-Kalender, Web-Textverarbeitung etc. und meine Variablen
prüfe ich im Programm. Wenn ich solche Sachen brauchen würde, müsste ich mich mit
Java-Script näher beschäftigen (ich kann es nicht wirklich ;-) ), aber ich bin von der vorsichtigen Sorte und mach es so, wie ich es besser kann (der Server-CGI Code arbeitet mit Xbase++ oder PowerBasic).
Gruß
Hubert
Benutzeravatar
Armin
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 389
Registriert: Mo, 26. Sep 2005 12:09
Wohnort: 75331 Engelsbrand
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: WAA und arrays

Beitrag von Armin »

Hallo Hubert,

dann vertrauen Deine Anwender Deiner Webseite nicht so richtig... :wink:

Nee im Ernst, es lassen sich viele Benutzereingaben schon mal vorab prüfen und eingabeabhängig z.B. andere Eingabefelder oder Knöpfe ein/ ausblenden.

Klar im Servercode muss ich auch noch einmal alles prüfen...

Ich löse einen submit z.B. auch gerne über eine Javascript-Funktion aus. Somit erhalte ich alle Name-Elemente (per post) und kann je nachdem auch noch einen Wert vorher ändern - ohne jedesmal riesige hrefs zu schreiben.

Grüsse in die Pfalz, Armin :coffee:
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: WAA und arrays

Beitrag von brandelh »

Armin hat geschrieben:dann vertrauen Deine Anwender Deiner Webseite nicht so richtig... :wink:
Die kennen mich doch nicht ;-)
Armin hat geschrieben:Hallo Hubert,
Nee im Ernst, es lassen sich viele Benutzereingaben schon mal vorab prüfen und eingabeabhängig z.B. andere Eingabefelder oder Knöpfe ein/ ausblenden.
das kann bei komplexen Eingabeformularen natürlich ein Vorteil sein, meine sind halt nicht wirklich komplex.
Armin hat geschrieben:Ich löse einen submit z.B. auch gerne über eine Javascript-Funktion aus. Somit erhalte ich alle Name-Elemente (per post) und kann je nachdem auch noch einen Wert vorher ändern - ohne jedesmal riesige hrefs zu schreiben.
ich arbeite ausschließlich mit POST und erhalte auch alle NAME-Elemente ... ob ich dich da falsch verstanden habe :?

Ich nutze auch das HREF Framework nicht. Ich habe HTM Dateien mit Platzhaltern, die ich
im Programm mit StrTran() gegen die Werte austausche, wobei natürlich auch ganze
Tabellen eingesetzt werden können und an den Apache übergebe.
Die Rückgabewerte meiner CGI (nicht WAA) Programme landen automatisch in einem Array (das erledigt meine CGI Klasse) und dann folgen die do case Abfragen welche Seite und welcher Knopf gedrückt wurde ... für mich wäre es einfach umständlicher hier auch noch javascript einzumischen.

Zur Sicherheit will ich aber nochmals klarstellen, dass ich nicht der Meinung bin, dass
du (oder sonst wer) in Programmen kein Java-Script verwenden soll. Ich persönlich nutze
es nicht, weil ich halt
- dieses aus Sicherheitsgründen ablehne und niemand etwas aufzwinge was ich selbst nicht will ;-)
- javascript nicht wirklich behersche, sondern eher nach dem ich möchte etwas, wo steht es nur in der Doku suche
- Ich wirklich keinen Bedarf dafür habe, da meine Seiten recht einfach sind.

PS: ich gebe sogar ehrlich zu, dass ich manchmal etwas wehmütig an PHP denke.
Da könnte man einfach ein embedded Linux System mit Apache aufbohren und bräuchte
nicht noch einen Windows Rechner ;-) ... aber PHP traue ich noch weniger und kann es überhaupt nicht.
Gruß
Hubert
Benutzeravatar
Armin
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 389
Registriert: Mo, 26. Sep 2005 12:09
Wohnort: 75331 Engelsbrand
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: WAA und arrays

Beitrag von Armin »

Hallo Hubert,

gestern konnten wir die Pfälzer Berge noch sehen, heute sind sie weg ... - hat gerade mein Kollege festgestellt (Ka-Grünwinkel 4.Stock) :hello2:

Bei der Auswertung von komplexen Formularen - Radio- und Click-Buttons in eingabefähgen Tabellen usw. setze ich gerne zur Übergabe Hidden-Felder, d.h. ich werte eine Zeile in einer JS-Funktion aus und fülle entsprechend das Hidden-Feld.

Wir arbeiten mit HTML-Vorlagen (Templates). Diese bearbeiten wir hauptsächlich mit den DOM-Funktionen (getelement...). Das funktioniert sehr gut.

z.B. Vorbelegen einer Checkbox:
oDocument:GetElement("CHECK1"):checked := lSonnig

Ausblenden eines Elements:
oDocument:getElement("PFAELZERBERGE"):setAttribute("style","visibility:hidden")

Die DOM-Funktionen sind nach meiner Meinung besser nutzbar als in php. Für Tabellen wird 1 Zeile im Template eingerichtet, die dann nach Bedarf beliebig oft unten angehängt wird.

Bei einer Datumseingabe prüfe ich z.B. bereits im Javascript auf ein gültiges Datum - da vermisse ich dann den Clipper-Komfort mit Picture.

Grüsse, Armin
Antworten