ERLEDIGT
JA
JA
ANTWORTEN
10
10
ZUGRIFFE
1103
1103
EMPFEHLEN
-
07.06.05 16:32 #1
- Registriert seit
- Apr 2005
- Ort
- Schwabenländle
- Beiträge
- 499
Nachdem ich mich nun gut über eine Woche durch "ASP für Dummies" gelesen hab wollt ich nun mal mein erster, eigenes kleines 'Projekt' ausprobieren - ganz ohne DW

Das Anzeigen der Einträge hat nach kurzem (oder auch längerem
) Probieren/Problemen dann endlich einwandfrei geklappt.
Aber nun bekomm ichs absolut nicht fertig einen neuen Eintrag hinzuzufügen
Hier mal mein Code:
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 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
<% Option Explicit %> <!-- #include file="adovbs.inc" --> <html> <head> <title>Gästebuch</title> </head> <body> <b>Eintrage:</b><p> <% If Request("Name") = "" And Request("eMail") = "" And Request("Message") = "" Then %> Bitte alle Pflichtfelder ausfüllen. <p> <form action="gb.asp" method="post" name="add" id="add"> <table width="40%" border="0" cellspacing="1" cellpadding="1"> <tr> <td>Name:</td> <td><input name="Name" type="text" id="Name"></td> </tr> <tr> <td>eMail:</td> <td><input name="eMail" type="text" id="eMail"></td> </tr> <tr> <td>URL:</td> <td><input name="URL" type="text" id="URL"></td> </tr> <tr> <td>Message:</td> <td><textarea name="Message" id="Message"></textarea></td> </tr> <tr> <td> </td> <td><input type="submit" name="Submit" value="Eintragen"></td> </tr> </table> </form> <% Else %> <% Dim Connect, NewPost Set Connect = Server.CreateObject("ADODB.Connection") Connect.Open "gbook" Set NewPost = Server.CreateObject("ADODB.Recordset") NewPost.Open "SELECT * FROM gb" Connect.adOpenDynamic,adLockOptimistic NewPost.AddNew NewPost("Name") = Request("Name") NewPost("eMail") = Request("eMail") NewPost("URL") = Request("URL") NewPost("Message") = Request("Message") NewPost("Datum_Zeit") = Date NewPost.Update %> <% End if %> <p> <p> <b>Einträge:</b><p> <% Dim Connect2, GB Set Connect2 = Server.CreateObject("ADODB.Connection") Connect2.Open "gbook" Set GB = Connect2.Execute("SELECT * FROM gb ORDER BY Datum_Zeit DESC") Do Until GB.EOF %> <table width="40%" border="0" cellspacing="1" cellpadding="1"> <tr> <td> <a href="mailto:<% = GB("eMail") %>"><% = GB("Name") %></a> schrieb am <% = GB("Datum_Zeit") %> :</td> <td><a href="<% = GB("URL") %>" target="_blank">URL</a><br></td> </tr> <tr> <td> <% = GB("Message") %> </td> <td> </td> </tr> <tr> <td><% = GB("Kommentar") %></td> <td> </td> </tr> </table> <p> <% GB.MoveNext Loop %> </body> </html>
Sobald ich einen Eintrag machen will, bekomm ich folgende Fehlermeldung:
Fehlertyp:
ADODB.Recordset (0x800A0E7D)
The connection cannot be used to perform this operation. It is either closed or invalid in this context.
/dummies/myGB/gb.asp, line 45
Line 45 (rot markiert):
Dim Connect, NewPost
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "gbook"
Set NewPost = Server.CreateObject("ADODB.Recordset")
NewPost.Open "SELECT * FROM gb"
Connect.adOpenDynamic,adLockOptimistic
NewPost.AddNew
NewPost("Name") = Request("Name")
NewPost("eMail") = Request("eMail")
NewPost("URL") = Request("URL")
NewPost("Message") = Request("Message")
NewPost("Datum_Zeit") = Date
NewPost.Update
So, was hab ich denn da nun wieder verbockt?
-
07.06.05 16:57 #2Lord-Lance Tutorials.de Gastzugang
Ich kenne die Art nicht wirklich wie du das machen willst, aber meiner Meinung nach solltest du mit INSERT INTO arbeiten und nicht mit SELECT * FROM.
-
Hi
versuchs mal so.
Wenn Du einen DS per ADO einfügst, sollstest Du immer eine Bedingung mitgeben, die nie erfüllt werden kann (where 1<0)
dim sql
sql="SELECT * FROM gb where 1<0"
NewPost.Open sql,Connect,adOpenStatic,adLockOptimisticliebe Grüße, die Luzie
-
07.06.05 17:39 #4
- Registriert seit
- Apr 2005
- Ort
- Schwabenländle
- Beiträge
- 499
Danke, es klappt

Hab noch festgestellt, dass ich die and's in der If... Else... Schleife gehen or austauschen musste
Gibts für die mitgegebene Bedingung irgend eine plausible Erklärung?
Funktionieren tuts jetzt ja, aber schlauer bin ich deswegen noch nicht
-
Hi
es lag aber jetzt nicht an der Bedingung, es hätte auch ohne funktionieren können. Es ist nur besser, wenn man die Bedingung setzt, denn nur so stellt damit sicher, das absolut kein Datensatz zurückgegeben werden kann, denn 1< 0 gibts nie. Du willst ja einen Datensatz einfügen und nicht selectieren.
Dein Fehler lag aber woanders
Du hattest zwischen Connect und der 1. Konstanten einen Punkt. Dort gehört aber ein Komma hin. Und ob da jetzt ein Zeilenumbruch war, kann ich nicht feststellen. Es gehört aber eigentlich in eine Zeile von Open angefangen bis zum Aufruf der letzten Konstanten.
Geändert von Luzie (07.06.05 um 18:16 Uhr)
liebe Grüße, die Luzie
-
07.06.05 18:25 #6
- Registriert seit
- Apr 2005
- Ort
- Schwabenländle
- Beiträge
- 499
oller Punkt

So viel Wirbel wegen so nem kleinen Ding
Entweder wars (mal wieder) ein Tippfehler im Buch oder ich hab mich tatsächlich vertippt...
Das wird mir denk ich jetzt kein zweites Mal mehr passieren
Naja, immerhin, es wird

Danke nochmal
-
Huhu
also Tippfehler in Büchern, die für Anfänger geschrieben sind, sind wirklich schlimm.
Ich habe vor Jahren auch mal an mir selbst gezweifelt, bis ich feststellen musste, dass es nicht an mir lag sondern an einem Tippfehler im Scriptcode eines Buches.
Gut sind Bücher mit praktischen Beispielen auf einer mitgelieferten CD. Da kann man davon ausgehen, dass sie durchgetestet sind und funktionieren.liebe Grüße, die Luzie
-
08.06.05 16:56 #8
- Registriert seit
- Apr 2005
- Ort
- Schwabenländle
- Beiträge
- 499
Wie müsste ich das Script eigentlich umschreiben, falls ich INSERT INTO verwenden wollte?
In meinen Büchern steht nur dass ich es anstatt addNew nehmen kann, aber es wird nicht erklärt wie
('tolle' Bücher
)
Hier und google bin ich auch schon durch, hab aber nichts gefunden, was ich annährend verstanden hätte...
-
Hi
mit Sicherheit ist es wichtig zu wissen, wie man einen Datensatz auch per insert into einfügt. Auch SQL update und delete sind wichtig.
Man kann teilweise mit der SQL-Methode mehr machen, z.B. kannst Du Dir per insert into direkt einen bestimmten Datensatz aus einer Tabelle selectieren und in eine andere einfügen. Ganz gut nachlesen kannst Du es hier:
http://www.asphelper.de/ASPKurs/A400101.asp, aber nur die Grundlagen, reicht aber in den meisten Fällen.
Im Allgemeinen heißt es, dass die ADO-Methode performanter ist. Ich wiess es nicht. Ich nutze meistens die ADO-Methode, denn hier hast Du auch die Möglichkeit, Dir direkt die ID des neu eingefügten Datensatzes anzeigen zu lassen um ggfs. den Datensatz direkt weiterzuverarbeiten bzw. auf dem Bildschirm auszugeben.liebe Grüße, die Luzie
-
10.06.05 09:55 #10
- Registriert seit
- Apr 2005
- Ort
- Schwabenländle
- Beiträge
- 499
Update hab ich hinbekommen.. aber an Delete beiß ich mir seit 2 Tagen die Zähne aus
Hab ne Übersicht erstellt und die ganzen Einträge in ner Do Until.. Loop.. Schleife auflisten lassen...
Davon hat nun jeder Eintrag nen Del-Button.. Nur bin ich mir momentan total unsicher, ob name=ID im Input Tag überhaupt da hin muss...
und wenn ich dann nen Eintrag löschen will kommt ein Fehler, bzw. die Seite wird von Vornherein nicht angezeigt...
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 37 38 39 40 41
<% Sub ShowPosts(ID_GB,Name,eMail,URL,Message,Datum_Zeit,Kommentar) %> <table width="600px" border="1" cellspacing="1" cellpadding="1"> <tr valign="top"> <td>ID</td> <td>Datum</td> <td>Name</td> <td>Message</td> <td colspan="2"><center>Aktion</center></td> </tr> <% Do Until GB.EOF %> <tr valign="top"> <td><%=ID_GB%></td> <td><%=Datum_Zeit%></td> <td><%=Name%></td> <td><%= Left (Message,25)%></td> <td>read/edit</td> <td> <form method="post" action="over.asp" name="del"> <input type="submit" value="DEL" name="<%=ID_GB%>"> </form></td> </tr> <% GB.MoveNext Loop %> </table> <% End Sub %> <% Dim GB, SQL, Connect2 Set Connect2 = Server.CreateObject("ADODB.Connection") Connect2.Open "gbook" Set GB = Server.CreateObject("ADODB.Recordset") SQL = "SELECT * FROM gb ORDER BY ID_GB DESC" GB.Open SQL, Connect2 ShowPosts GB("ID_GB"), GB("Name"), GB("eMail"), GB("URL"), GB("Message"), GB("Datum_Zeit"), GB("Kommentar") %> <% Dim SQL2, Connect, GBdel Set Connect = Server.CreateObject("ADODB.Connection") Connect.Open "gbook" Set GBdel = Server.CreateObject("ADODB.Recordset") SQL2 = "DELETE FROM gb WHERE ID_GB" = Request.Form("DEL") GBdel.Open SQL2, Connect, adOpenDynamic, adLockOptimistic %>
Da meckert er:
Fehlertyp:
ADODB.Recordset (0x800A0BB9)
Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.
/dummies/myGB/over.asp, line 45
-> GBdel.Open SQL2, Connect, adOpenDynamic, adLockOptimistic
-
Hi
wenn Du ein Delete über die SQL ausführen willst, dann brauchst Du dafür kein Recordset. Du musst Statement mit
verbindung.execute(sql)
ausführen.
bsp.
if Request.Form("submit") = "wechdamit" then
sql = "delete from tabelle where id = " & Request.Form("id")
connect.execute(sql)
connect.close
set connect = nothing
Response.redirect "seite.asp"
end if
Wenn Du eine oder mehrere Aktionen auf einer Seite abfragen möchtest, musst Du Dir überlegen, wie Du es machst. Einfach Formularabschicken und hoffen, dass es gelöscht wird, das geht nicht.
Zuerst willst du ja alle Daten anzeigen, also muss diese Aktion ggfs. gar nicht belegt sein oder in der Else-Verzweigung einer Abfrage oder eines select case stecken.
So und je nach dem, was Du machen möchtest, muss diese der Aktion mitgeteilt werden.Geändert von Luzie (10.06.05 um 21:18 Uhr)
liebe Grüße, die Luzie
Ähnliche Themen
-
Datensatz dazwischen einfügen
Von beckersbesters im Forum PHPAntworten: 3Letzter Beitrag: 14.01.09, 09:49 -
bei neuem Datensatz Mailnachricht senden
Von julia29 im Forum PHPAntworten: 3Letzter Beitrag: 07.12.07, 09:51 -
JS: alten Text beim Einfügen von neuem Überschreiben
Von schutzgeist im Forum Javascript & AjaxAntworten: 2Letzter Beitrag: 05.09.07, 16:04 -
smilies aus einem neuem Fenster einfügen
Von Oli-bt im Forum Javascript & AjaxAntworten: 2Letzter Beitrag: 09.04.05, 13:53 -
MySQL Datensatz per PHP einfügen. Fehler!
Von ExtremeSnail im Forum PHPAntworten: 2Letzter Beitrag: 05.04.04, 11:01





Zitieren
Login





