Anja: Vorselektion funktioniert nicht

Hallöchen,

Ich habe ein Problem, bei dem ich leider nicht weiter komme und hoffe, daß mir jemand helfen kann...

Was ich tun will ist:

Es werden Daten, die in einer Datenbank gespeichert wurden in einem Drop-Down Menü ausgelesen und angezeigt.
Das Menü ist teil eines Formulars in dem drei weitere Auswahllisten angezeigt werden.

Falls das Formular abgeschickt wird, bevor alle Felder ausgefüllt sind soll das Formular wieder angezeigt werden. Die bereits ausgefüllten Felder bleiben erhalten > der gewählte Eintrag im Listenfeld bleibt selektiert.

Nun mein Problem:
Es klappt einwandfrei, die Daten aus der Datenbank auszulesen. Doch wird die Seite erneut geladen, bleiben meine Selektionen, bis auf das erste Drop-Down Menü nicht erhalten.

Verbindung mit der Datenbank herstellen:

<%
    Dim objConnect
    Set objConnect = Server.CreateObject("ADODB.Connection")
        objConnect.Open cbGetConnection()

Dim objRS1, objRS2, objRS3

Set objRS1 = objConnect.Execute("Select sqlzeugnistyp From Listenfelder")
    Set objRS2 = objConnect.Execute("Select sqltitel From Listenfelder")
    Set objRS3 = objConnect.Execute("Select sqlpersonalw From  Listenfelder")
    %>

Auslesen der Daten:

<select name="personalw" size="1" tabindex="21">
    <option value=""></option>
    <%
    If Not objRS3.EOF Then
       Do while not objRS3.EOF
          If objRS3.Fields("sqlpersonalw") <> "" Then
    %>
             <option value="<%=objRS3.Fields("sqlpersonalw")%>"
             <%If Request.Form("spersonalw") = objRS3.Fields("sqlpersonalw") Then%>
                  selected
             <%End If%>>
             <%=objRs3.Fields("sqlpersonalw")%></option>
    <%
          End If
          objRS3.MoveNext
       Loop
    Else
    %>
       <option>Keine Datensätze gefunden</option>
    <%End If%>
    </select>

Ich hoffe, jemand kann mir bei meinem Problem helfen...?

Schon mal vielen Dank im voraus!!!

Anja
________________
See you in space

  1. Hmm ... ich könnte dir das jetzt nur in PHP erklären :-\ einfach in ne Session packen ...

    Oder ne Abfrage erstellen, wenn das und das Feld nicht ausgefüllt ist, dann führe nicht den submit aus, sondern zeige folgenden Text an... da könnte dann halt stehen:

    Bitte tragen Sie Ihren Namen ein.
    Bitte tragen Sie Ihren Nachnamen ein.

    Also wenn die beiden Felder nicht ausgefüllt wurden ...

    Wenn du magst, könnte ich dir aber auch ne variante über java pop-up meldung (alert) zeigen... Sobald jemand auf abschicken button klickt, und ein Feld vergessen hat, was ausgefüllt werden sollte, ertönt ein signalton und ein Feld wird angezeigt:

    Sie haben Ihren Namen vergessen einzutragen, bitte tragen Sie Ihren Namen ein.

    Sobald der USER dann auf OK klickt, springt der COURSER automatisch in das FELD Name ;)

    Sobald er dann wieder erneut auf abschicken klickt, und noch was vergessen haben sollte, ertönt wieder ein alert, mit der entsprechenden Meldung. Und der COURSER springt automatisch wieder in das NICHT ausgefüllte Feld...

    Erst wenn alles ausgefüllt wurde, was ausgefüllt werden sollte, wird durch klick auf abschicken auch tatsätlich abgeschickt.

    Mit meinem Javascript kann man auch prüfen ob @ oder . in einer eMail adresse vorkommt, wenn das @ vergessen wurde oder mit AT geschrieben wurde, ertönt ebenfalls ein signal und alert feld taucht auf, mit dem Text, Ungültige eMail-Adresse, Sie haben das @ vergessen.

    Wenn du meine Hilfe in anspruch nehmen willst, dann mail mir einfach.

    Ach ja Beispiel kannst du auch auf www.montageberthold.de/kontakt.php sehen ;) einfach mal nix ausfüllen auf abschicken klicken, und das alert ausfüllen wieder auf abschicken klickenm, und dann wieder das nächste alert ausfüllen ...

    PS: Mach noch zusätzlich so was wie, alle felder mit * müssen ausgefüllt werden, und mach * an solche Felder ...

    1. Hallo,

      Danke für deine Hilfe!
      PHP bringt mich jedoch nicht wirklich weiter, da es meine Vorgabe ist, mit ASP zu arbeiten.

      im großen und ganzen habe ich deine Vorschläge auch bereits mit ASP umgesetzt.

      Die Felder werden beim absenden auf ihre Gültigkeit überprüft. Sollte ein Feld nicht oder ungültig ausgefüllt sein, dann wird dessen Beschriftung rot angezeigt.

      Mir geht es also wirklich nur darum, daß der Benutzer das Formular nicht ständig von vorne ausfüllen muß.

      Ich habe bereits die Felder in einer Session abgespeichert. Jedoch bleibt das Ergebnis das selbe, wenn ich Request.Form durch Session ersetze...

      Das interessante ist jedoch, daß die bereits ausgefüllten Felder erkannt werden, da sie nicht rot unterlegt erscheinen.

      Übrigends, die Felder, die ausgefüllt sein müssen habe ich gekennzeichnet.
      Aber wir kennen ja die Benutzer, die sowas immer wieder gerne ignorieren... *g*

      Anja
      ________________
      See you in space

  2. Hi,

    Nun mein Problem:
    Es klappt einwandfrei, die Daten aus der Datenbank auszulesen. Doch wird die Seite erneut geladen, bleiben meine Selektionen, bis auf das erste Drop-Down Menü nicht erhalten.

    Das select heisst "personalw" waehrend Du im ASP nach "spersonalw" abfragst. Vorausgesetzt da ist nicht noch ein hidden field oder so namens personalw ist dass wohl ein Problem.

    Generelle Anmerkung: ich wuerde Vergleiche, check auf leere Strings etc, immer mit trim(xyz)=trim(abc) bzw len(trim(xyz))=0 machen. Es passiert leicht dass sich Leerzeichen einschleichen.

    Gruss,
    Melanie

    1. Hallöle,

      Das select heisst "personalw" waehrend Du im ASP nach "spersonalw" abfragst. Vorausgesetzt da ist nicht noch ein hidden field oder so namens personalw ist dass wohl ein Problem.

      Den Fehler habe ich mitlerweile schon bemerkt, danke. Aber daran lags leider nicht...

      Generelle Anmerkung: ich wuerde Vergleiche, check auf leere Strings etc, immer mit trim(xyz)=trim(abc) bzw len(trim(xyz))=0 machen. Es passiert leicht dass sich Leerzeichen einschleichen.

      Guter Tip! Ich werd mir merken!
      Aber leider scheinen sich auch keine Leerzeichen eingeschlichen zu haben...

      Anja
      ________________
      See you in space