Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.
Toon posts:

[ASP/SQL] Code is gebruikerspecifiek

Pagina: 1
Acties:

Verwijderd

Topicstarter
Voor een intranetapplicatie heb ik een soort forum geschreven.
Men kan rubrieken aanmaken en zich daarop abboneren. indien met de rubriek aanvinkt krijgt men een e-mail als er een nieuwe post in wordt gezet.
Nu merk ik dat bij sommige gebruikers de code anders reageert als bij anderen.
Hoe het zou moeten werken is als volgt.
De gebruiker kan 2 linkjes aanklikken, "e-mail aan" en "e-mail uit".
Indien een van deze 2 wordt aangeklikt zal de gebruikersID en het rubriekID opgeslagen worden in een SQL tabel. Afhankelijk van de keuze wordt er ook "aan" of "uit" bijgezet.

IdrubriekIdgebruikersIDmail
11100200aan


Nu zie ik dat bij sommige gebruikers de cel "mail" leeg blijft en de rubriekId en gebruikersID wel wordt gevuld.

De betreffende code is:
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
Gebruiker = Session("Name")
ShowQuery = "SELECT * FROM rubrieken ORDER BY rang"
Set objRsShow = Conn.Execute (ShowQuery)
%>

<table border = "1" align = "center" cellspacing = "0" cellpadding = "1">
  <tr>
    <td><b>Rubriek</b></td><td colspan="2"><b>E-mail</b></td>
  </tr>
<% Do Until objRsShow.EOF

UserIdQuery = "SELECT * FROM tblUsers WHERE name = '"&Gebruiker&"'"
Set objRsUserIdQuery = Conn.Execute (UserIdQuery)
VarUserId = objRsUserIdQuery("UserId")

RubriekId = objRsShow("Id") 
ControlQuery = "SELECT * FROM MailRubriek WHERE RubriekId="& RubriekID &" AND UserId="& VarUserId &""
Set objRsControlQuery = Conn.Execute (ControlQuery)
If objRsControlQuery.EOF then
Plaatje= "uit" 
    else 
        If objRsControlQuery("Mail") = "aan" then
        Plaatje= "aan" 
        end if
    If objRsControlQuery("Mail") = "uit" then
        Plaatje= "uit" 
    end if
    
end if
%> 
 <tr>
    <td><%Response.Write objRsShow("rubrieken")%></td>
    <td align="center">
    <%if Plaatje="aan" then
    %><img src="../images/mail-aan.jpg" border="0"><%
    end if
    if Plaatje = "uit" then
    %><img src="../images/mail-uit.jpg" border="0"><%
    end if%>
    </td>
    <td>
    <a href=SaveMailRubrieken.asp?RubriekId=<%Response.Write objRsShow("Id")%>&VarGebruiker=<%Response.Write Gebruiker%>&Mail=aan target=_self>aan</font></a>
    &nbsp;
    <a href=SaveMailRubrieken.asp?RubriekId=<%Response.Write objRsShow("Id")%>&VarGebruiker=<%Response.Write Gebruiker%>&Mail=uit target=_self>uit</font></a>
    </td>
    <%objRsShow.MoveNext
      Loop %>
</table>



Ik denk dat er iets tussen regel 19 en 27 niet helemaal goed, ik kan alleen niet ontdekken wat.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Begin eens met het fatsoenlijk indenten van je code; deze bras is onleesbaar.

En kijk eens goed naar bepaalde constructies:
Visual Basic:
1
2
3
4
5
6
If objRsControlQuery("Mail") = "aan" then
    Plaatje= "aan" 
end if
If objRsControlQuery("Mail") = "uit" then
    Plaatje= "uit" 
end if

Dat kan toch ook zo:
Visual Basic:
1
Plaatje = objRsControlQuery("Mail")


En verder wat BtM hieronder zegt.

Verder: with all due respect, maar we zijn hier niet om jouw project uit te werken of op te lossen. Het is misschien eens tijd voor een goede tutorial of om eens iemand aan de mouw te trekken die je kan bijstaan in je ontwikkeling van je project en als programmeur?

[ Voor 99% gewijzigd door RobIII op 28-10-2008 10:49 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Ligt het aan mij of zie ik hier nergens een insert of update query? Je probleem ligt toch aan 't feit dat de data niet goed wordt weggeschreven?

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
@Rob+BtM: Hij linkt naar de pagina met de insert/update query.

Wat voor veldtype is het veld mail? En welke database gebruik je? Tenslotte zou je op de plek van waar je de insert/update uitvoert een logfile kunnen schrijven met daarin de waardes van de parameters zoals ze naar de database worden gestuurd en de Request.QueryString. Op die manier kun je zien wat er nu eigenlijk gebeurt.

En terwijl je bezig bent, zoek gelijk eens wat meer informatie over parametrized queries, want aan je codestructuur te zien krijgt iedere scriptkiddie jouw dabase omver.

edit:
Tis ochtend BtM ;)

[ Voor 20% gewijzigd door bigbeng op 28-10-2008 10:58 ]


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

bigbeng schreef op dinsdag 28 oktober 2008 @ 10:55:
@Rob+BtM: Hij linkt naar de pagina met de insert/update query.
Daar hebben wij hier natuurlijk niks aan (als andre101 graag wilt dat we hem verder helpen) ;)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 15-11 11:40

Janoz

Moderator Devschuur®

!litemod

Het probleem lijkt me redelijk duidelijk. Ik vermoed dat alle gebruikers waarbij het fout gaat een spatie in hun naam hebben.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
+1 scherp

Quoten en escapen van de href, goed gezien.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
bigbeng schreef op dinsdag 28 oktober 2008 @ 11:05:
+1 scherp

Quoten en escapen van de href, goed gezien.
Idd, +1. Tenminste iemand wakker vandaag :D _O_

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
Janoz schreef op dinsdag 28 oktober 2008 @ 11:02:
Het probleem lijkt me redelijk duidelijk. Ik vermoed dat alle gebruikers waarbij het fout gaat een spatie in hun naam hebben.
helemaal correct.
Om te ontwikkelen (ik begrijp jullie kritiek op de code, ik verdien er gelukkig niet mijn brood mee.) gebruik ik een Access database Bij het opslaan van de gebruikers doe ik een replace " ", 
Bij de SQL server database moet deze regel aanstaan voor de correcte werking.

Het bleek dat alle gebruikers die al in access (en later naar SQL overgeheveld werden) stonden wel goed werkten en gebruikers die ik later in SQL server invoerde de naam afbrak na de spatie in de a href.

dank voor alle hulp en tips

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Jammer genoeg voor je collega's ben jij wel degene die de code schrijft ;)

Wat ik hiermee wil zeggen is het feit dat jij die taak nu op je genomen hebt, betekent dus ook dat je er goed mee om zou moeten gaan. En dus leren en verbeteren as you go.

Hou er rekening mee dat een Replace uitvoeren symptoombestrijding is, en niet een structurele oplossing.

Neem voor in de toekomst in elk geval het volgende mee:
- als je dan toch gebruikers via de URL meegeeft, gebruik dan het id van de gebruiker. Heb je nog geen id, maar is naam de unieke identifier, lees je dan eens in over 'synthetic keys'.
- Geef die ene collega die binnenkort ontslagen wordt minder mogelijkheid om uit woede de database om zeep te helpen door al je queries naar de database middels "parametrized queries"(zoekterm) te laten lopen. Kost even werk, maar "sql injection" (zoekterm) wordt een stuk lastiger als je het overal consequent toepast.
- In HTML: zet quotes om al je attributen. Dus: <a href="blablabla" target="bliebla">.
- Als je tijd over hebt... gebruik de html validator van W3C om eens te kijken hoe "correct" je resultaat html eigenlijk is. Dit kan zeker tot inzichten leiden. Je hoeft de warnings niet allemaal te verhelpen, maar de errors zou ik zeker goed naar kijken.

Succes met het beheer tegen wil en dank :)
[/opamodus] :7
Pagina: 1