Heiner Tanner: Was ist falsch?

Guten Morgen!

Ich habe eine ASP-Site und eine MySQL-DB.
Nun sind in der DB die Spalten Person, Wert und WertWeg.

Die Seite sieht so aus, dass eine Liste mit Namen der Personen gemacht wird.
Dann sind neben jedem Namen 2 Radiobuttons, wo man wählen kann, ob man an eine Veranstaltung kommt, oder nicht.
Wenn man kommt, wird in das DB-Feld WERT den Wert 1 geschrieben, sonst 0.
Wenn man nicht kommt, wird ins Feld WERTWEG der Wert 1 geschrieben, und ins Feld WERT der Wert 0.

Nun will ich die Tabelle mit einer Schleife aufbauen, und die Werte aus der DB auslesen. Dies klappt auch.
Beim OnChange -event sollte der Name der Person dann in ein hidden-field geschrieben werden, und dieser wird durch ein Submit an ein neues File geschickt, welches den SQL-Syntax beihnhaltet, der dann die DB aktualisiert.
Fehlermeldung erhalte ich keine mehr, aber die Werte werden nicht aktualisiert.
Kann mir jemand sagen, was ich falsch gemacht habe?

CODE
------------
<%
set db = server.createobject("adodb.connection")
     db.open ("absenzDB")

Set rs = Server.CreateObject("ADODB.Recordset")
rs.open "SELECT person,wert,wertweg FROM tbl_personen ORDER BY person", db
%>

<form action="content2.asp" method="post">
<table>
<%while not rs.eof%>
<tr>
<td>
<%response.write rs("person")%>
</td>
<td>
 <input type=radio name=<%response.write rs("person")%><%if rs("wert")="1" then%> checked<%end if%>
 onchange=document.forms[0].hiddenfieldname.value=<%response.write rs("person")%>;document.forms[0].submit();>
</td>
<td>
 <input type=radio name=<%response.write rs("person")%><%if rs("wertweg")="1" then%> checked<%end if%>
 onchange=document.forms[0].hiddenfieldname.value=<%response.write rs("person")%>;document.forms[0].submit();>
</td>
</tr>
<input type=hidden name=hiddenfieldname value='rs("person")'>
<%
rs.movenext
wend

rs.close
%>
</table>

</form>
------------

File Content2.asp :
----------------

<%
set db = server.createobject("adodb.connection")
     db.open ("absenzDB")

Set rs = Server.CreateObject("ADODB.Recordset")
rs.open "SELECT person,wert,wertweg FROM tbl_personen ORDER BY person", db

Select wert from tbl_personen WHERE person = form.person

if rs.wert = 1 then

UPDATE tbl_personen set wert =0, wertweg = 1 WHERE person = form.person

else

UPDATE tbl_personen set wert =1, wertweg = 0 WHERE person = form.person

end if

%>
-------------

Ich danke im Voraus, viele Grüsse,
Heiner

  1. Moin!

    Kann mir jemand sagen, was ich falsch gemacht habe?

    Also folgende Fehler sind mir aufgefallen:

    <input type=radio name=<%response.write rs("person")%><%if rs("wert")="1" then%> checked<%end if%>

    Das sollte so aussehen:

    <input type=radio name=<%response.write rs("person")%><%if rs("wert")="1" then Response.Write "checked" end if%>

    <input type=radio name=<%response.write rs("person")%><%if rs("wertweg")="1" then%> checked<%end if%>

    siehe oben

    <input type=hidden name=hiddenfieldname value='rs("person")'>

    Hier wird kein Script-Bereich gekennzeichnet. Sollte wohl so aussehen:
    <input type=hidden name=hiddenfieldname value='<%Response.Write rs("person")%>'>

    Select wert from tbl_personen WHERE person = form.person

    Was ist "form.person" ?
    Meinst Du Request.Form("person") ?

    MfG
    MarkX.

    1. DAnke!

      Ich habe die Änderungen jetzt so gemacht...und es kommt immer noch kein Fehler, aber beim onChange passiert nichts!

      Weisst du, was die Ursache sein könnte?
      Soviel ich weiss, kann der OnChange-event auch bei Radio-Buttons eingesetzt werden, nicht?

      Danke, mfg

      Heiner

  2. Hallo,

    <input type=radio name=<%response.write rs("person")%><%if rs("wert")="1" then%> checked<%end if%>

    warum gibst du den namen dynamisch aus... der name sollte fest sein, der value dagegen ist der abzufragende inhalt...

    wie willst du auf der action-seite den parameter auslesen, wenn der parameterbezeichner dynamisch ist?

    übergebene parameter werden so ausgelesen:

    steht im form method="get"

    variable = trim(request.querystring("name_des_formfeldes"))

    bei method="post"

    variable = trim(request.form("name_des_formfeldes"))

    anhand dieser variablen kannst du nun dein sql zusammenbauen und findest auch den zugehörigen datensatz, welcher im übrigen über die ID gefunden werden sollte und nicht über eigene felder, die nur durch Programmierung eineindeutig sein sollten...

    Odium

    Odium

    1. und nochwas...

      warum bemühst du ein javascript um den wert in eine hiddenfeld zu schreiben? bitte keine lebenswichtigen funktionen der seite mit js verbinden...

      wenn du dich auf html+serverseitige Programmierung stützt kann dir recht wenig passieren...

      wenn ich mein js abschalte sollen die forms ja funktionieren, oder?

      odium

    2. warum gibst du den namen dynamisch aus... der name sollte fest sein, der value dagegen ist der abzufragende inhalt...

      Nein, es wird ja per Schleife immer 2 mal ein Radiobutton zu einer Person geschrieben, und diese zwei Radios sollten die gleichen Namen haben, sonst kann man nicht zwischen diesen 2 auswählen, sondern zwischen allen Radiobuttons...Also müssen sie verschieden ausgegeben werden, dass man nur immer zwischen 2 Radios auswählen kann.

      wie willst du auf der action-seite den parameter auslesen, wenn der parameterbezeichner dynamisch ist?

      Also gleich beim OnChange sollte der Wert des Namens der Checkbox in ein Hiddenfield geschrieben.
      Dann wird das Form gepostet.
      Die Action-Seite sollte dann den Wert aus dem Hiddenfield bekommen,
      und dieser Wert ist ja dann der Name der Person, welche ihre Einträge geändert hat.

      Dann muss mysql schauen, ob bei der jeweiligen Person das Feld WERT =1 ist, wenn ja, dann wird es geändert (also 0 hineingeschrieben und ins Feld WERTWEG 1)  Wenn der Wert 0 ist, dann wird ins Feld WERT 1  geschrieben und in das Feld WERTWEG 0.

      Und das ganze geht, weil es ja bei OnChange ausgelöst wird, also müssen die 0/1 Werte ja umgekehrt sein als beim Auslesen aus der DB am Anfang.Ich hoffe du verstehts, was ich meine, ist vielleicht n'Bisschen komsich erklärt...sorry!

      übergebene parameter werden so ausgelesen:

      steht im form method="get"

      variable = trim(request.querystring("name_des_formfeldes"))

      bei method="post"

      variable = trim(request.form("name_des_formfeldes"))

      Hmmm...das verstehe ich nicht ganz, wo soll ich diese genau einsetzen?
      bin noch ziemlich schlecht und Anfänger...entschuldige mich

      MFG

      Heiner

      1. ..und noch ein weiteres, wichtiges Problem:

        Es tut sich überhaupt nichts, wenn ich bei den Radiobuttons change!
        geht OnChange überhaupt mit Radiobuttons?
        Und warum reagiert das Form dann nicht?

        Heiner

      2. Hallo,

        Die Action-Seite sollte dann den Wert aus dem Hiddenfield bekommen,

        und wie willst du denn wert der person holen, wenn du den namen des parameters nicht kennst? wie man werte holt schrieb ich ja schon...
        am besten du suchst erstmal ein tutorial zum allg. umgang mit forms und serverseitiger auswertung...

        form sollten ohne js unterstützung funktionieren... höchstens schon mal ein js-check auf vollständiges ausfüllen, aber keine wertverschiebungen...

        Odium

        1. ja ok, das ist mal das einte...aber was mich im moment mehr stört, ist dass beim OnChange event des Radiobuttons gar nichts passiert!
          so wie es aussieht, wird das submit gar nicht ausgeführt!

          wenn dies so wäre, bekäme ich wahrscheinlich auch Fehlermeldungen und könnte mich damit befassen....

          das mit der Übergabe der Daten könnte ich dann vielleicht besser nachvollziehen...
          denkst du, dass einfach nichts passiert, weil die Übergabe der Daten etc. nicht funktioniert? Ich denke, es führt den event einfach nicht aus, da ja keine Fehlermeldung kommt...und das ist mal mein erstes Problem, das ich zu lösen habe....weisst jemand, was das Problem sein könnte?