ERLEDIGT
NEIN
NEIN
ANTWORTEN
19
19
ZUGRIFFE
4341
4341
EMPFEHLEN
-
27.07.05 09:54 #1Meitli Tutorials.de Gastzugang
Hi,
Ich habe eine Form wo neue Unterlagen zu einem Kurs hinzugefügt werden können.
Ziel sollte sein, dass überprüft wird ob diese Unterlage in diesem Kurs sich schon in der Datenbank befindet, wenn ja eine Fehlermeldung erscheint, wenn nein neu eingetragen wird.
Die Tabelle in der Datenbank sieht so aus. Es gibt 3 Spalten. KursunterlagenID, KursID, UnterlagenID.
Hier die FORM
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
<form name="form1" method="post" action=""> <table width="100%" border="0" cellspacing="1" bordercolor="#CCCCCC" ID="Table6"> <tr bgcolor="#B7C2D0"> <td width="25%"><font face="Arial, Helvetica, sans-serif" size="2"><b>Unterlagen: </b></font></td> <td width="75%"> <font face="Arial, Helvetica, sans-serif" size="2"> <select name="sUnter" ID="Select4"> <option value="no" selected> <% 'Unterlagen in Auswahlmenu einlesen %> </option> <% Set rs = KPLcon.Execute("SELECT * FROM Unterlagen") do until rs.EOF%> <option value="<%response.write(rs("UnterlagenID"))%>"> <%response.write(rs("Unterlagen"))%> <%response.write(rs("Speicherort"))%> </option> <%rs.MoveNext loop rs.close %> </select> </font></td> </tr> <tr bgcolor="#B7C2D0"> <td width="25%"> <font face="Arial, Helvetica, sans-serif" size="2"> <input type="hidden" name="KursID" value=<%Response.Write(Request("KursID"))%> ID="Hidden1"> <input type="hidden" name="UnterlagenID" value=<%Response.Write(Request.Form("UnterlagenID"))%> ID="Hidden2"> </font></td> <td width="75%"> <font face="Arial, Helvetica, sans-serif" size="2"> <input type="submit" name="Submit" value="Übernehmen" ID="Submit1"> </font></td> </tr> </table> </form>
Hier der Code zur Überprüfung, welcher ich bisher versucht habe:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
'Wenn Formular neue Unterlagen hinzufügen abgesendet if Request.Form.Count>0 then [COLOR=Red]Set rs = KPLcon.Execute("SELECT * FROM Kursunterlagen WHERE KursID = " & Request("KursID") & " AND UnterlagenID = Request.Form(" & UnterlagenID & ") ")[/COLOR] if rs.eof then Set rs = KPLcon.Execute("INSERT INTO Kursunterlagen (KursID, UnterlagenID) VALUES (" & Request.Form("KursID") & ", " & Request.Form("sUnter") & ")") else %> '<script type="text/javascript"> 'alert("Diese Unterlage ist schon vorhanden"); '</script> <% end if end if
Ich denke der Fehler liegt bei der Select-Abfrage (rot makiert).
Oder ist mein Ansatz ganz falsch?
Kann mir jemand bitte weiter helfen?
-
Hi
richtig wäre
Set rs = KPLcon.Execute("SELECT * FROM Kursunterlagen WHERE KursID = " & Request("KursID") & " AND UnterlagenID = " & Request.Form("UnterlagenID") & ")
Auch der Request.Form() ist eine Variable und muss im Statement entsprechend behandelt werden.
Zur Frage:
Der Ansatz ist so korrekt.
Ich würde Ergebnisse aus einem Select über ein Recordset erfragen.liebe Grüße, die Luzie
-
28.07.05 10:58 #3Meitli Tutorials.de GastzugangCode :
1
Set rs = KPLcon.Execute("SELECT * FROM Kursunterlagen WHERE KursID = " & Request("KursID") & " AND UnterlagenID = " & Request.Form("UnterlagenID") & [COLOR=Red]"[/COLOR] ")
Das rot makierte Hochkomma fügte ich noch ein, da es bei dir gefehlt hat. Doch jetzt bekomm ich folgende Fehlermeldung:
Microsoft OLE DB Provider for ODBC Drivers-Fehler '80040e14'
[Microsoft][ODBC Microsoft Access Driver] Syntaxfehler (fehlender Operator) in Abfrageausdruck 'KursID = 259 AND UnterlagenID = ''
/kspeicherort.asp, Line 217
Line 217, ist genau diese Datenbankabfrage!
Ich vermute der Fehler liegt beim Abrufen der Variabel UnterlagenID. Bin mir jedoch nicht sicher...
-
Hi
einfacher zu lesen ist es, wenn Du so schreibst:
Code :1 2
sql = "SELECT * FROM Kursunterlagen WHERE KursID = " & Request("KursID") & " AND UnterlagenID = " & Request.Form("UnterlagenID") Set rs = KPLcon.Execute(sql)liebe Grüße, die Luzie
-
28.07.05 11:12 #5Meitli Tutorials.de Gastzugang
1. am Ende eines Select-Statements kommt doch immer ein Hochkomma hin, hast du es einfach vergessen?
2. Es kommt immer noch die Fehlermeldung von vorher
Lg Meitli
-
28.07.05 11:17 #6Meitli Tutorials.de Gastzugang
Hab gerade gemerkt, dass ich falsch überlegt habe. Dein Code stimmt.
Die Fehlermeldung
Microsoft OLE DB Provider for ODBC Drivers-Fehler '80040e14'
[Microsoft][ODBC Microsoft Access Driver] Syntaxfehler (fehlender Operator) in Abfrageausdruck 'KursID = 259 AND UnterlagenID = ''
/kspeicherort.asp, Line 217
erscheint aber immer noch. Und an diesem Fehler bin ich im Moment. Wie schon Oben erklärt, glaube ich das es an der Variabel UnterlagenID liegt, bin mir jedoch nicht sicher...
-
Hi
wenn UnterlagenID vom Feldformat text oder char, varchar.. ist, dann muss die Variable gequotet werden. Aber das kann ich ja nicht wissen, das weist nur Du
Und wenn es vom Format text ist, dann musst Du die Hochkomma setzen, und zwar vor und nach den Anführungszeigen.
Allerdings müsste in dem Falle die Fehlermeldung anders lauten.
Ich gehe mal davon aus, dass die Variable nicht übertragen wird, den Grund dafür kann man allerdings erst sehen, wenn Du mal Script und Formular Scriptcode postest.liebe Grüße, die Luzie
-
28.07.05 13:06 #8Meitli Tutorials.de Gastzugang
Hei Luzie
Als erstes Danke, für deine Hilfe bisher...
Jetzt zur Datenbank:
UnterlagenID ist als Zahl definiert, da dieses Feld eine Verknüpfung zu einer weiteren Tabelle hat.
Im Anhang befindet sich der vollständige Scriptcode, hoffe du kannst mir, wenn du dir in angesehen hast, weiterhelfen.
Lg Meitli
-
Hallo
Da fehlen um value die Anführungszeichen, also value="<%...%>">. Da könnte der Fehler liegen, zumindest beim Mozilla.
Ansonsten mach einfach mal testweise ein textfeld daraus. Du musst einfach mal prüfen, ob dieses Feld überhaupt belegt ist.
<input type="text" name="UnterlagenID" value="<%Response.Write(Request.Form("UnterlagenID"))%>">
Wo kommt der Wert her? auch aus einem Formular oder einer URL?
Mach mal folgendes:
Code :1 2 3 4 5
<% dim intUnterlagenID intUnterlagenID = Request.Form("unterlagenID") & Request.QueryString("unterlagenID") %> <input type="text" name="UnterlagenID" value="<% = inUnterlagenID %>">Geändert von Luzie (28.07.05 um 15:03 Uhr)
liebe Grüße, die Luzie
-
28.07.05 14:03 #10Meitli Tutorials.de Gastzugang
Also die Anführungszeichen habe ich eingefügt, diese haben aber keine Veränderung gebracht.
Der INPUT habe ich in ein Textfeld geändert, dort erscheint aber nichts.
UnterlagenID kommt aus dem Formular. Man wählt die Unterlage, und diese hat eben auch eine ID (UnterlagenID) und diese muss wiederum überprüft werden.
Hoffe du komst mit, sonst sag es und ich versuch es auf eine andere Weise zu erklären.
Was ich fast vergessen hätte: Wo muss ich deine Code einfügen? Spielt das eine Rolle?
-
Hi
wenn es aus einem Formular kommt, dann spielt der Scriptcode keine Rolle mehr.
Ansonsten kannst Du es so (hab gerade noch die ASP-Tags hinzugefügt, hatte ich vergessen), wie es ist, dort einbauen, wo das Feld im Formular angelegt ist.
Wenn das Textfeld leer ist, wird die UnterlagenID aus irgendeinem Grund nicht übertragen. Poste doch nochmal das Formular, woraus das übertragen wird.
Du brauchst es nicht als Anhang zu schicken, einfach den Scirptcode hier reinschreiben.
War da nicht schon mal irgendwas mit UnterlageID und UnterlagenID ? Einfach nochmal die richtige Schreibweise aller Felder nachprüfen.Geändert von Luzie (28.07.05 um 15:08 Uhr)
liebe Grüße, die Luzie
-
28.07.05 15:10 #12Meitli Tutorials.de Gastzugang
Das Formular befindet sich au in diesem Scriptcode, denn ich scho als Anhang geschickt habe.
Hier nochmals:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
<form name="form1" method="post" action=""> <table width="100%" border="0" cellspacing="1" bordercolor="#CCCCCC" ID="Table6"> <tr bgcolor="#B7C2D0"> <td width="25%"><font face="Arial, Helvetica, sans-serif" size="2"><b>Unterlagen: </b></font></td> <td width="75%"> <font face="Arial, Helvetica, sans-serif" size="2"> <select name="sUnter" ID="Select4"> <option value="no" selected> <% 'Unterlagen in Auswahlmenu einlesen %> </option> <% Set rs = KPLcon.Execute("SELECT * FROM Unterlagen") do until rs.EOF%> <option value="<%response.write(rs("UnterlagenID"))%>"> <%response.write(rs("Unterlagen"))%> <%response.write(rs("Speicherort"))%> </option> <%rs.MoveNext loop rs.close %> </select> </font></td> </tr> <tr bgcolor="#B7C2D0"> <td width="25%"> <font face="Arial, Helvetica, sans-serif" size="2"> <input type="hidden" name="KursID" value=<%Response.Write(Request("KursID"))%>> <input type="hidden" name="UnterlagenID" value=<%Response.Write(Request.Form("UnterlagenID"))%>> </font></td> <td width="75%"> <font face="Arial, Helvetica, sans-serif" size="2"> <input type="submit" name="Submit" value="Übernehmen" ID="Submit1"> </font></td> </tr> </table> </form>
Lg Meitli
-
Hi
ja, das ist schon korrekt, aber wenn der Wert in diesem Formular leer ist, dann wird er schon hierhin nicht korrekt übertragen.
Du speicherst ihn hier in diesem hiddenfeld.
<input type="hidden" name="UnterlagenID" value=<%Response.Write(Request.Form("UnterlagenID"))%>>
Meine Frage war, wo kommt dieser Wert her? Wie übergibst Du den Wert, dass er in diesem Formular gespeichert werden kann. Wenn er nämlich nicht dadrin ist, dann muss man die Suche noch auf Stationen vorher konzentrieren.
liebe Grüße, die Luzie
-
29.07.05 07:18 #14Meitli Tutorials.de Gastzugang
Hi
Der Forminhalt kommt aus der Datenbank aus der Tabelle Unterlagen. Dies funktioniert auch problemlos, sie werden angezeigt. Diie Unterlagen kann man somit im Formular anwählen.
Mit diesem Select werden die Unterlagen aus der Tabelle geholt:
Code :1
Set rs = KPLcon.Execute("SELECT * FROM Unterlagen")
Die UnterlagenID sollte von dieser Unterlagen stammen, welche im Formular ausgewählt ist.
Der Insert nach dem Abschicken des Formulars funktioniert problemlos, und genau dort wird auch die Variabel UnterlagenID verwendet.
Hier der Code diese Select-Statments:
Code :1
Set rs = KPLcon.Execute("INSERT INTO Kursunterlagen (KursID, [COLOR=Red]UnterlagenID[/COLOR]) VALUES (" & Request.Form("KursID") & ", [COLOR=Red]" & Request.Form("sUnter") & "[/COLOR])")
Warum wird ein Mal die Variabel übertragen, dass andere Mal nicht?
Wenn ich folgender Code (Änderung rot) verwende, kommt keine Fehlermeldung mehr, heisst das er hat UnterlagenID gefunden?
Code :1 2
sql= "SELECT * FROM Kursunterlagen WHERE KursID = " & Request("KursID") & " AND UnterlagenID = " & Request.Form("[COLOR=Red]sUnter[/COLOR]") Set rs = KPLcon.Execute(sql)
Der nächste Fehler ist dann bei der Überprüfung ob der Record Set leer ist!Geändert von Meitli (29.07.05 um 07:35 Uhr)
-
Hi
ich stecke in in diesem Vorgang nicht drin und blicke durch Deine Überlegungen langsam nicht mehr durch. Ich bin aber davon überzeugt, dass hier ein Denkfehler vorliegt und kein Scriptfehler.
Ich kann aber nur sagen, was Dein Scriptcode hier zeigt und kann mir daraus einen möglichen Ablauf kontruieren. Ich bin mir auch sicher, dass Du den Vorgang verstehst, Du hast es ja erstellt, aber für einen Außenstehenden ist hier einfach Schluss.
Tatsache ist, dass der Wert nicht übertragen werden kann, weil das Feld leer bleibt.
Wenn das Formularfeld leer ist, hat es einen Grund. Entweder wird kein Wert über den Request.Form("UnterlagenID") in das hiddenfeld transportiert, oder der Wert kann nicht gelesen werden, weil er aus einer URL (QueryString) übertragen wird oder einer Session() oder aus der Datenbank gelesen wird, wie Du bereits im letzten Posting angedeutet hast.
Wenn das der Fall ist, dann frag ich mich allen Ernstes, warum Du das Feld nicht als Feld aus der Datenbank einliest? Warum der Request.Form("UnterlagenID")? Liegt da u.U. der Denkfehler?liebe Grüße, die Luzie
Ähnliche Themen
-
Doppelte einträge verhindern
Von Knacki135 im Forum PHPAntworten: 9Letzter Beitrag: 19.08.08, 18:43 -
Doppelte Einträge verhindern
Von _root im Forum PHPAntworten: 11Letzter Beitrag: 23.08.05, 18:42 -
doppelte Einträge in Datenbank finden
Von PetraB im Forum PHPAntworten: 3Letzter Beitrag: 02.09.04, 18:17 -
Doppelte Einträge zur gleichen Zeit verhindern
Von Deemax im Forum ASPAntworten: 4Letzter Beitrag: 01.09.03, 14:15 -
doppelte Einträge in Datenbank ignorieren?
Von Sputnik im Forum PHPAntworten: 2Letzter Beitrag: 30.09.02, 12:47





Zitieren
Login





