[ASP] Datenbankprogrammierung mit Netscape

Hallo!

Ich füge mittels des folgenden ASP-Codes eine Keyword (Access: Textfeld) und eine Description (Access: Memofeld) dazu in eine Access-DB ein. Dies funktioniert auch wunderbar, nur kann ich mit Netscape nur ein Wort als Keyword verwenden, währrenddessen ich mit IE beliebig viele Wörter als Keyword nutzen kann.

const break = "
"
Keyword=replace (Request( "keyword" ), chr(13)&chr(10), break)
Description=replace (Request( "description" ), chr(13)&chr(10), break)

'Insert keyword and description into glossary.mdb
Set DB=Server.CreateObject( "ADODB.Connection" )

DB.Open "dsn=glossary"
SQL="INSERT INTO keywords (keyword, description) VALUES ('" & Keyword & "','" & Description & "')"

Set rs=DB.Execute( SQL )
DB.close

%\>

Bei mehreren Wörtern als Keyword erhalte ich mit Netscape die Fehlermeldung:

HTTP Error 400

400 Bad Request

Due to malformed syntax, the request could not be understood by the server. The client should not repeat
the request without modifications.

Wer weiß, wie ich das beheben kann? Beim DELETE und UPDATE bekomme ich die gleiche Fehlermeldung bei mehreren Wörtern im Keyword-Feld, SELECT funktioniert jedoch.

Grüße, Tanja

IE tut Leerzeichen im URL automatisch umcodieren, Netscape tut das nicht, da gibt es die von dir genannte Fehlermeldung am Server (der keine Leerzeichen im URL verträgt).

Kann es sein, dass du die Felder selber an den URL anfügst und dann damit die ASP-Seite anforderst (beim normalen submitten eines Feldes/Forms über GET sollte Netscape das schon richtig codieren)?

Grüße, Robert

Hallo Robert!

Kann es sein, dass du die Felder selber an den URL anfügst und
dann damit die ASP-Seite anforderst

Ja, z. B. beim DELETE:

(beim normalen submitten
eines Feldes/Forms über GET sollte Netscape das schon richtig
codieren)?

Stimmt, INSERT funktioniert jetzt auch mit Netscape bei mehreren Wörtern als Keyword, ich hatte vorher nur aus Versehen

post

anstatt

get

geschrieben. Beim INSERT werden auch keine Parameter übergeben.

Wie läßt sich jetzt das Problem beim DELETE lösen? Ich habe mal versucht, ein Blank durch ein HTML-Blank ( ) zu ersetzen, was aber auch nicht hilft.

 wirklich löschen?") 
%\> 

Grüße, Tanja

Wie läßt sich jetzt das Problem beim DELETE lösen?

Im URL werden andre Escape-Zeichen als im HTML-Code benötigt. ASP bietet dafür die Methode Server.URLEncode, also mach es einfach so:

Eine äquivalente Methode gibts übrigens für HTML, Server.HTMLEncode().

Grüße, Robert

Hallo Robert!

Erst mal Danke für Deine Hilfe.

Im URL werden andre Escape-Zeichen als im HTML-Code benötigt.
ASP bietet dafür die Methode Server.URLEncode

Ich habe das ausprobiert, doch leider kann ich auch mit der Server.URLEncode()-Methode mit Netscape immer noch keine Keywords löschen, die aus mehreren Wörtern bestehen. :frowning: Ich bekomme weiterhin einen „HTTP Error 400“. An was könnte es noch liegen?

Grüße, Tanja

Ich habe das ausprobiert, doch leider kann ich auch mit der
Server.URLEncode()-Methode mit Netscape immer noch keine
Keywords löschen, die aus mehreren Wörtern bestehen. :frowning: Ich
bekomme weiterhin einen „HTTP Error 400“. An was könnte es
noch liegen?

Schau mal was im HTML-Code liegt (ob er das korrekt codiert hat) und welchen URL er dann wegschickt, ob da noch Leerzeichen drinnen sind bzw. stell den URL mal hier rein.

Grüße, Robert

Guten Morgen Robert!

Danke für die schnelle Antwort.

Schau mal was im HTML-Code liegt (ob er das korrekt codiert
hat) und welchen URL er dann wegschickt, ob da noch
Leerzeichen drinnen sind

Mit Netscape komme ich ja gar nicht so weit, sobald ich auf „Löschen“ drücke, bekomme ich einen „HTTP Error 400“. IE erzeugt beim Keyword „test mit leerzeichen“ folgenden HTML-Code.

bzw. stell den URL mal hier rein.

Das geht nicht so einfach, da es für das Intranet der Firma ist, in der ich im Moment jobbe.

Unter http://www.fh-furtwangen.de/~schaett/ASP/ findest Du die für das Problem wichtigen Dateien. Von select.asp aus wird delete.asp augerufen, welchen dann den Begriff, der gelöscht werden soll an deleteDB.asp weitergibt, wo er dann in der DB gelöscht wird.

Du kannst die Files aber nur downloaden und anschauen, denn mein Server an der FH ist ein UNIX-Server ohne ASP-Unterstützung. Außerdem fehlen noch einige andere asp- und include-files.

Grüße, Tanja

Mit Netscape komme ich ja gar nicht so weit, sobald ich auf
„Löschen“ drücke, bekomme ich einen „HTTP Error 400“. IE
erzeugt beim Keyword „test mit leerzeichen“ folgenden
HTML-Code.

Hmmm, strange … :o) … tut mir leid, ich habs da jetzt ausprobiert und kann das Problem leider nicht nachvollziehen. Wenns einmal korrekt codiert im HTML-Code steht, dann müßte das hinhauen.

Das geht nicht so einfach, da es für das Intranet der Firma
ist, in der ich im Moment jobbe.

Ich meinte den URL der dann im Browser steht nachdem du auf abschicken drückst, also den URL den der Fehler produzierst. :smile:

Grüße, Robert

Hallo noch mal!

Hmmm, strange … :o) … tut mir leid, ich habs da jetzt
ausprobiert und kann das Problem leider nicht nachvollziehen.
Wenns einmal korrekt codiert im HTML-Code steht, dann müßte
das hinhauen.

Also irgendwie scheint die Methode Server.URLEncode() mit Netscape nicht zu funktionieren, dort wird

erzeugt, währenddessen der IE es richtig macht und

schreibt.

Ich meinte den URL der dann im Browser steht nachdem du auf
abschicken drückst, also den URL den der Fehler produzierst.

Ach so, sorry. Meine URL verändert sich nie, da sich die ASP-Files in Frames befinden und außerdem noch die Navigation für das Intranet mittels Javascript dazugeladen wird.

Wenn ich jedoch die Seite mit Netscape direkt mit
http://intra/databases/glossary/delete.asp?deletekey=test+mit+leerzeichen anspreche, funktioniert es auch dort wunderbar. Es liegt als nur an den fehlenden +.

Grüße, Tanja

Also irgendwie scheint die Methode Server.URLEncode() mit
Netscape nicht zu funktionieren, dort wird

Kann eigentlich nicht sein, dass wird ja serverseitig ausgeführt und hat nichts mit dem Client zu tun.

Very strange, hab leider keine Ahnung wie das zustandgekommen könnte.

Grüße, Robert

Hallo Robert!

Ich wollte mich noch mal bei Dir für Deine Hilfe bedanken. Ich habe heute morgen noch einmal mit Server.URLEncode und Server.HTMLEncode daran herumgebastelt, bis die Übergabe von mehreren Wörtern auch mit Netscape funktioniert hat! :smile:

Allerdings weiß ich nicht, woran es letzendlich lag, denn an dem Form-Statement, das die Parameter übergibt, habe ich nichts verändert. Aber egal, Hauptsache es läuft jetzt!

Grüße, Tanja