webForumDet fria alternativet

webbchat

ASPur ASP

83 svar · 1 674 visningar · startad av ptr_lks · sida 2 av 5

Frågan, av ptr_lks

Hej, jag jobbar med en hemsida för min sons basketlag 1. är det svårt att "koda" en enkel webchat? Försökt utan framgång googla efter tutorials i ämnet 2. grabbarna är i 12 åå, så de flesta har msn - kan jag på något sätt använda mig av msn? 3. eller är mirc bättre allternativ?

Läs frågan i sin helhet →
Medlem sedan juni 2005584 inlägg
#21

så det skall se ut som följer??

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%
if Request.Form("chattin") = "Börja chatta" Then

Set chatt = Server.CreateObject( "Adodb.Connection" )
chatt.Provider = "Microsoft.Jet.OLEDB.4.0"
MdbFilePath = Server.MapPath("\4testasp\db\chat.mdb")
chatt.ConnectionString = "Data Source='" & MdbFilePath & "'"
chatt.open
strUser = replace(Request("chattnamn"), "'", "''")
strPasw = replace(Request("txtPassword"), "'", "''")

 strSQL = "SELECT * FROM chattare WHERE Chattnamn = '"_
  & strUser & "' AND Chattpassw ='" & strPasw & "';"
 minCon.Execute strSQL,,128
 

  if not rs.EOF then
    strSQL = "UPDATE chattare SET OnLine = 1 WHERE chattnamn ='" & strUser & "';"
     minCon.Execute strSQL,,128

	strSQL = "INSERT INTO skickade (from, skrivet, tidpkt) VALUES ("_
    & "'System', '<i>" & strUser & "</i> Steg in i chatten', '" & Now & "');"
     minCon.Execute strSQL,,128

	Session("Inloggad") = User("anvID")

    rs.Close
    minCon.Close
    Set rs = Nothing
    Set minCon = Nothing
  
    Response.Redirect "chatt.asp"
  else
    rs.Close
    minCon.Close
    Set rs = Nothing
    Set minCon = Nothing

    Response.Redirect("error.html")
  end if
  end if
%>
Medlem sedan juni 200032 967 inlägg
#22

Förutom att du inte har något connectionobjekt som heter minCon så ser det väl ut som om det kanske kan fungera.

Medlem sedan juni 2005584 inlägg
#23

@nders skrev:

Förutom att du inte har något connectionobjekt som heter minCon

mIN "connectionsobjekt" torde väl vara chatt med hänvisning till följande

Set chatt = Server.CreateObject( "Adodb.Connection" )

Så exekveringen av fågan borde se ut

 chatt.execute strSQL,,128

eller hur?

så ser det väl ut som om det kanske kan fungera

du verkar vara lite tveksam?

Sedan bordejag väl ändra slutet till:

chatt.Close
    Set chatt = Nothing
  
    Response.Redirect "chatt.asp"
  else
   
    chatt.Close
    Set chatt= Nothing

    Response.Redirect("error.html")
  end if
  end if
Medlem sedan juni 200032 967 inlägg
#24

du verkar vara lite tveksam?

Klart jag är tveksam när det gäller kod jag inte själv kan se i aktion.

Fungerar alltså inte scriptet?

Medlem sedan juni 2005584 inlägg
#25

@nders skrev:

du verkar vara lite tveksam?

Klart jag är tveksam när det gäller kod jag inte själv kan se i aktion.

Fungerar alltså inte scriptet?

Jag har inte kunnat testa scriptet... kommer inte in på mitt konto hos brinkster...
Men ser koden ut att kunna fungera?

<%
if Request.Form("chattin") = "Börja chatta" Then

Set chatt = Server.CreateObject( "Adodb.Connection" )
chatt.Provider = "Microsoft.Jet.OLEDB.4.0"
MdbFilePath = Server.MapPath("\4testasp\db\chat.mdb")
chatt.ConnectionString = "Data Source='" & MdbFilePath & "'"
chatt.open
strUser = replace(Request("chattnamn"), "'", "''")
strPasw = replace(Request("txtPassword"), "'", "''")

 strSQL = "SELECT * FROM chattare WHERE Chattnamn = '"_
  & strUser & "' AND Chattpassw ='" & strPasw & "';"
 chatt.execute strSQL,,128
 

  if not rs.EOF then
    strSQL = "UPDATE chattare SET OnLine = 1 WHERE chattnamn ='" & strUser & "';"
    chatt.execute strSQL,,128

	strSQL = "INSERT INTO skickade (from, skrivet, tidpkt) VALUES ("_
    & "'System', '<i>" & strUser & "</i> Steg in i chatten', '" & Now & "');"
     chatt.execute strSQL,,128

	Session("Inloggad") = chattare("anvID")

    
    chatt.Close
    Set chatt = Nothing
  
    Response.Redirect "chatt.asp"
  else
   
    chatt.Close
    Set chatt= Nothing

    Response.Redirect("error.html")
  end if
  end if
%>
Medlem sedan juni 200032 967 inlägg
#26

Men ser koden ut att kunna fungera?

I stort sett. Förutom att du inte skapar ett recordset när du ska hämta datat med din SELECT-fråga. Varför tog du bort det recordsetet?

Som det ser ut nu försöker du hämta data ifrån ett (eller rättare sagt två, eftersom du använder både namnen rs och chattare i koden) recordset som aldrig skapats.

Jag vet inte om det är jag som skriver otydligt eller du som läser otydligt.

När du ska hämta data med SELECT, då skall du skapa recordsets, annars kan du ju inte läsa datat du hämtar.
När du ska ändra data med INSERT, UPDATE eller DELETE ska du inte skapa något recordset, eftersom du inte får någon data tillbaka.

Dock: det är omöjligt att koda i blindo. Mitt tips är således: skaffa ett webhotell som fungerar, och eventuellt också; se till att ha IIS installerat på din egen dator.

- - - -

Fixa gärna till indenteringen en aning också, det känns som att det bara blir kladdigare och kladdigare. A och O är att kunna läsa koden ordentligt.

Medlem sedan juni 2005584 inlägg
#27

@nders skrev:

I stort sett. Förutom att du inte skapar ett recordset när du ska hämta datat med din SELECT-fråga. Varför tog du bort det recordsetet?

Är det så här du menar? (se ändringen i fetstil)

Set chatt = Server.CreateObject( "Adodb.Connection" )
chatt.Provider = "Microsoft.Jet.OLEDB.4.0"
MdbFilePath = Server.MapPath("\4testasp\db\chat.mdb")
chatt.ConnectionString = "Data Source='" & MdbFilePath & "'"
chatt.open
strUser = replace(Request("chattnamn"), "'", "''")
strPasw = replace(Request("txtPassword"), "'", "''")

 strSQL = "SELECT * FROM chattare WHERE Chattnamn = '"_
  & strUser & "' AND Chattpassw ='" & strPasw & "';"
 [B]Set rs = chatt.execute strSQL,,128[/B]
 

  if not rs.EOF then
    strSQL = "UPDATE chattare SET OnLine = 1 WHERE chattnamn ='" & strUser & "';"
    chatt.execute strSQL,,128

	strSQL = "INSERT INTO skickade (from, skrivet, tidpkt) VALUES ("_
    & "'System', '<i>" & strUser & "</i> Steg in i chatten', '" & Now & "');"
     chatt.execute strSQL,,128

	Session("Inloggad") = chattare("anvID")

    
    chatt.Close
    Set chatt = Nothing
  
    Response.Redirect "chatt.asp"
  else
   
    chatt.Close
    Set chatt= Nothing

    Response.Redirect("error.html")
  end if
  end if
%>

Som det ser ut nu försöker du hämta data ifrån ett (eller rättare sagt två, eftersom du använder både namnen rs och chattare i koden) recordset som aldrig skapats.

ovanstående förstår jag inte riktigt... Eller menar du

Session("Inloggad") = chattare("anvID")

trodde att jag skall använda tabellens namn här?

Fixa gärna till indenteringen en aning också, det känns som att det bara blir kladdigare och kladdigare. A och O är att kunna läsa koden ordentligt.

Min gamla svaghet... Tycker att det är jätte svårt/knepig med indentering, fast det ser så enkelt och elegant ut när ni proffsen gör det

se till att ha IIS installerat på din egen dator.

Tyvärr har jag bara XP home, och då funkar väl inte IIS?

Medlem sedan juni 200032 967 inlägg
#28

Är det så här du menar? (se ändringen i fetstil)

Nej, inte riktigt. ,,128 gör att det inte skapas något recordset. Skall alltså bara användas när du inte använder SELECT. Gör som du brukar göra när du hämtar data.

trodde att jag skall använda tabellens namn här?

Det är där jag menar. Du skall använda recordsetets namn.

Tycker att det är jätte svårt/knepig med indentering

Jag förstår inte riktigt vad det är som är svårt, men öva, öva, öva.

Medlem sedan juni 2005584 inlägg
#29

@nders skrev:

trodde att jag skall använda tabellens namn här?

Det är där jag menar. Du skall använda recordsetets namn

Du menar

Session("Inloggad") = [B]rs[/B]("anvID")
Medlem sedan juni 200032 967 inlägg
#30

Ja

Medlem sedan juni 2005584 inlägg
#31

tack @nders för din pedagogiska förmåga, och tålamod med mig :birp
jag hoppas och tror att jag nu förstått det ovanstående :OO

Medlem sedan juni 2005584 inlägg
#32

nu har jag lagt ut min chat på brinkster..

Och redan på andra sidan har jag stött på problem :(
Får följande felutskrift:

Active Server Pages error 'ASP 0126'
Include file not found
/4testasp/default.asp, line 1
The include file '/includes/dbkoppling.asp' was not found.

fast den filen finns i mappen includes
Jag har enligt instuktioner från Brinkster skrivit

<!-- #include virtual="/includes/dbkoppling.asp" -->
Medlem sedan juni 200032 967 inlägg
#33

Det skulle inte förvåna mig om brrrrrrinkster har knepigt installerade servrar. Prova att lägga till /4testasp först i sökvägen.

Medlem sedan juni 2005584 inlägg
#34

@nders skrev:

Det skulle inte förvåna mig om brrrrrrinkster har knepigt installerade servrar. Prova att lägga till /4testasp först i sökvägen.

Du har rätt nu igen! fast konstigt att det står fel i FAQ...

Medlem sedan juni 200032 967 inlägg
#35

Antagligen är FAQ skriven för betalande kunder. Det innebär i så fall att den är skriven utefter premisserna att användaren har en egen website, vilket jag inte tror är fallet på gratiskontona. Jag tror helt enkelt att gratiskontona helt enkelt bara är en egen mapp i en gemensam stor website på servern. Detta skulle också kunna vara anledningen till att du inte kan använda global.asa på ditt konto; du har ingen website, utan bara en egen mapp.

Medlem sedan juli 20003 825 inlägg
#36

När du tröttnat på Brinkster
Regga ett vanligt full ASP konto hos Aleborg, lär dig använda global.asa och allt annat på ett relevant och vettigt sätt!!

Just nu är det dessutm höstrea hos Aleborg!

http://www.aleborg.se/

Medlem sedan juni 2005584 inlägg
#37

ADODB.Field error '80020009' på registrera.asp

= att rs är tom, har jag fått reda på efter sökning här på wf, har dock inte lyckats lösa problemet.
Hoppas på er hjälp med att modulera om koden:

<!-- #include virtual="/4testasp/includes/dbkoppling.asp" -->
<%
strUser = replace(Request("chattnamn"), "'", "''")
strPasw1 = replace(Request("pwd1"), "'", "''")
strPasw2 = replace(Request("pwd2"), "'", "''")
Call dbOpen()
if strUser <> "" then
set rs = Server.CreateObject("ADODB.Recordset") 
strSQL = "SELECT * FROM chattare WHERE chattNamn = '" & strUser & "';"
rs.Open strSQL, minCon, 3, 3  
	if (rs.EOF) and (strUser <> "System")  then
		strSQL = "INSERT INTO chattare (chattNamn, chattPassw) VALUES ('"_
				& strUser & "', '" & strPasw1 & "');"
		 minCon.Execute strSQL
Session("Inloggad") = rs("anvID")

rs.Close
Call dbClose()
Set rs = Nothing
Response.Redirect "chatt.asp"
  
  end if
  end if
%>

Även fast jag får felutskrift

ADODB.Field error '80020009'

Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.

/4testasp/registrera.asp, line 15

så fungerar skrivningen till databasen, men inte redirecten

Medlem sedan juni 2005584 inlägg
#38

Det verkar som om jag fick till det med:

<!-- #include virtual="/4testasp/includes/dbkoppling.asp" -->
<%
strUser = replace(Request("chattnamn"), "'", "''")
strPasw1 = replace(Request("pwd1"), "'", "''")
strPasw2 = replace(Request("pwd2"), "'", "''")

//'skapa databaskopplingen
Call dbOpen()

//'Skapa sql-sträng för att kontrollera om anvndaren finns
strSQL = "SELECT * FROM chattare WHERE chattNamn = '" & strUser & "';"

//''Skapa och öppna recordset
set rs = minCon.execute(strSQL)
	if (rs.EOF) and (strUser <> "System")  then 
'namnet är ledig
	//'Skapa sql-sträng för att lägga in en ny användare
		strSQL = "INSERT INTO chattare (chattNamn, chattPassw) VALUES ('"_
				& strUser & "', '" & strPasw1 & "');"
	//'Kör sql-strängen mot databsaen
		 minCon.Execute(strSQL)
	//''Skicka tillbaka användaren till inloggnings-sidan 
	Response.Redirect "chatt.asp"

	Session("Inloggad") = rs("anvID")

rs.Close
Call dbClose()
Set rs = Nothing
  
    end if

%>

det blir iaf en redirect

Medlem sedan juni 200032 967 inlägg
#39

Vad är det du försöker göra förresten?
Du försöker sätta en sessionsvariabel med ett värde från ett recordset som är tomt. Att recordsetet är tomt vet vi, eftersom det är själva villkoret för att den koden ska köras... Du har ju skrivit:

If recordsetet är tomt then
      lägg in värde från recordsetet in i en sessionsvariabel
end if
Medlem sedan juni 2005584 inlägg
#40

@nders skrev:

Vad är det du försöker göra förresten?
Du försöker sätta en sessionsvariabel med ett värde från ett recordset som är tomt.

Jag försöker registrera en användare med namna och lösenord
för att senare använda sessionen för att kolla ett användaren är behörig med nedanstående

Public Sub PageAccess()
     If len(Session("Inloggad")) = 0 Then 
          Response.Redirect("error.htm") 
     End If 
End Sub

@nders skrev:

Du har ju skrivit:

If recordsetet är tomt then
      lägg in värde från recordsetet in i en sessionsvariabel
end if

Var har jag skrivit detta?

145 ms totalt · 3 externa anrop · v20260731065814-full.b746b907
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
143 ms — hämta tråd, inlägg och bilagor (db)