Avatar billede Slettet bruger
01. februar 2002 - 10:36 Der er 7 kommentarer og
2 løsninger

if InStr

Hej...

Jeg skal tjekke om brugerens IP allerede er i min database i dag. (se kode nederst).

Jeg har for det første et problem med datoen - den skal kun tjekke i databasen hvor datoen er den samme som idag. Formatet er sat til kort dato format og smides i med =Now() - dvs. det kan se ud som: 01-02-2001

Er der nogen der kan se fejlen - for det virker ikke...


-----------------
idagdato = date
refer_ip = Request.ServerVariables("REMOTE_ADDR")


Set RS = server.CreateObject("ADODB.connection")
RS.open ConnString
SQL = "SELECT * FROM Posts WHERE Dato = idagdato ORDER by dato desc"
Set RS = RS.Execute( SQL )
   
    do until RS.eof

    Dato = RS("Dato")
    Refer = RS("Refer")
    Email = RS("Email")
       
    response.write Refer & "<br>"
    if InStr(Refer,"refer_ip") then
    response.write "<br>Allerede postet idag..."
    response.write "<a href='webmasters.html'><< tilbage</a><br><br>"
    %>
    <script>
parent.location="fejl.html";
</script>
    <%
   
    end if
       
    RS.MoveNext
    Loop
    RS.Close
    Set RS = Nothing
Avatar billede invisibleman Nybegynder
01. februar 2002 - 10:39 #1
SQL = "SELECT * FROM Posts WHERE Dato=DATE() ORDER by dato desc"

sådan .. Access/MySQL/MSSQL kan selv klare det ... DATE() giver datoen i dag.
Avatar billede Slettet bruger
01. februar 2002 - 10:44 #2
ok - jeg kan do stadig ikke få den til at udføre if then sætningen korrekt - altså HVIS den finder IP i databasen med idags dato skal den gøre et - ellers noget andet.

kan du hjælpe mig med den?
Avatar billede Slettet bruger
01. februar 2002 - 10:51 #3
I koden ovenfor skal den jo stoppe med at køre videre hvis den finder Ip'en - men det vil den ikke (i den efterfølgende kode smides posten i databasen) og det skal den jo kun hvis ikke IP'en er fundet
Avatar billede Slettet bruger
01. februar 2002 - 10:55 #4
InStr() giver dig et index for hvor i strengen det søgte befinder sig. Som jeg ser din kode, så leder du efter strengen "refer_ip", og ikke indholdet af variablen med samme navn :-)

Altså:
If InStr(Refer, refer_ip) > 0 Then
...
Else
...
End If

- Hvis det heller ikke triller, så prøv at CStr() bege argumenterne før du kalder InStr()

/CS
Avatar billede Slettet bruger
01. februar 2002 - 11:03 #5
Greystate > takker.Prøv lige at tjek koden. Så er det måske nemmere for dig at se hvad jeg mener. Nu kalder den fint nok siden "fejl.html" hvis den finder en IP - men den smider stadig posten i databasen...

' --- Tjek for flere post på samme dag
Set RS = server.CreateObject("ADODB.connection")
RS.open ConnString
SQL = "SELECT * FROM Posts WHERE Dato = DATE()"
Set RS = RS.Execute( SQL )
   
    do until RS.eof

    Dato = RS("Dato")
    Refer = RS("Refer")
    Email = RS("Email")
       
    response.write Refer & "<br>"
    if InStr(Refer,refer_ip) > 0 then
    response.write "<br>Allerede postet idag..."
    response.write "<a href='post.html'><< tilbage</a><br><br>"
    %>
    <script>
parent.location="fejl.html";
</script>
    <%
   
    end if
       
    RS.MoveNext
    Loop
    RS.Close
    Set RS = Nothing

' --- Add link to database
Set RS = server.createobject ("ADODB.recordset")
RS.open "Posts", ConnString, adOpenStatic, adLockOptimistic, adCmdTable

RS.addnew

    RS("Category") = request.form("Category")
    RS("Url") = request.form("Url")   
    RS("Email") = request.form("Email")
    RS("Dato") = date
    RS("Refer") = refer_ip

    if request.form("Confirmmail") = "" then
    RS("Confirmmail") = False
    else
    RS("Confirmmail") = request.form("Confirmmail")
    end if
   
    response.write "Post added to database."
   
RS.update
RS.close
RS = null
Avatar billede Slettet bruger
01. februar 2002 - 11:10 #6
Yep - det er een af dem hvor man skal have styr på forskellen mellem Client-Side og Server-Side scripting...

Den hurtigste løsning er at udskifte din "end if" med en "Else", og indsætte en ny "End If" IMELLEM "RS.update" og "RS.close"...

/CS
Avatar billede Slettet bruger
01. februar 2002 - 11:11 #7
Ups - "End If" skal bare sættes ind til allersidst (efter RS = null)...

Jeg overså den nye kodeblok..

/CS
Avatar billede Slettet bruger
01. februar 2002 - 11:21 #8
Sådan havde jeg faktisk prøvet - men får så:

'Loop' uden 'Do'
/post.asp, line 70
Avatar billede Slettet bruger
01. februar 2002 - 11:31 #9
tror jeg har den
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester