[ASP] Er wordt dubbel opgeteld?

Pagina: 1
Acties:

  • Aakab
  • Registratie: November 2001
  • Laatst online: 17-09-2025
Ok ik sta op het punt om doortedraaien
Ik heb de volgende stukje code:

code:
1
2
3
4
5
6
7
8
9
10
11
<!--#include file="include-conn.asp" --><!--#include file ="ayarlar.asp"-->
<%Set Sur = Server.CreateObject("ADODB.Connection")
Sur.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath(""& dbfolder &"/turkportal.mdb")

idno=Request.QueryString("idno")
Set turkportal = Server.CreateObject("ADODB.Recordset")
sor = "Select * from makale where idno="&idno
turkportal.Open sor,Sur,1,3

turkportal("abc")=turkportal("abc")+1
turkportal.update


Hij leest dus een veld uit het tabelletje makale, ABC..het gegeven uit deze vult hij aan met een waarde van 1, en daarna schrijft hij het weer terug.

Maar inplaats van +1 doet hij plus 2!!! als ik keer 1 doe dan doet hij keer 2..als ik keer 2 doe dan doet hij keer 4.

Ik zie het popupje laden, en daar staat dan bijvoorbeeld eerst 21 maar hij veranderd daarna gelijk weer in 22.

Hij zit niet in een loop ofzo, of iets anders...wie o wie kan me helpen?>

  • stp_4
  • Registratie: Maart 2003
  • Laatst online: 18-05 16:28
komt &idno daadwerkelijk ook maar 1 keer voor in je tabel?

stp - PSN ID: stp_4


  • Aakab
  • Registratie: November 2001
  • Laatst online: 17-09-2025
stp_4 schreef op zaterdag 04 december 2004 @ 20:18:
komt &idno daadwerkelijk ook maar 1 keer voor in je tabel?
Ja want het is een autonummering.

Overigens krijgt deze vanuit de vorige pagina deze idno mee(vandaar de get.querystring..)

Pff alleen met deze pagina heb ik het ik draai echt door..

Verwijderd

In dit stukje code doe je op zich niets fout. Wat gebeurt er in de include files? Wordt er ergens een redirect in deze pagina gedaan? Kijk eens in je logfiles of deze pagina meer dan eens wordt aangeroepen als je vanaf de pagina waar de idno meegeeft.

HTH :)

  • KurtDB
  • Registratie: Juni 2004
  • Laatst online: 13-05 09:19
Een work-around:

In plaats van met recordsets te werken, kan je ook gewoon 'n update query maken.

code:
1
sor = "update makale set abc=abc+1 where idno="&Cint(idno)


Die Cint dient om invoercontrole te doen. (wat jij dus alvast niet doet, waardoor je applicatie gevoelig zou kunnen zijn voor vanalle ongure toestanden)

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
KurtDB schreef op zondag 05 december 2004 @ 03:38:
Een work-around:

In plaats van met recordsets te werken, kan je ook gewoon 'n update query maken.

code:
1
sor = "update makale set abc=abc+1 where idno="&Cint(idno)


Die Cint dient om invoercontrole te doen. (wat jij dus alvast niet doet, waardoor je applicatie gevoelig zou kunnen zijn voor vanalle ongure toestanden)
offtopic:
"Controle" zou ik het niet noemen. Ten eerste gaat 'ie klappen (error dus) als je er iets anders in duwt dan een int, en ten tweede kan 'ie maar overweg met een Int (32767 max). Als dat genoeg is, prima. Anders gebruik je CLng. En waarom zou je die niet gebruiken? Kost niks extra ;)

Je hebt overigens natuurlijk wel gelijk door te zeggen dat je ermee voorkomt dat mensen enge dingen met je DB gaan doen :)

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


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 21:24

NMe

Quia Ego Sic Dico.

KurtDB schreef op zondag 05 december 2004 @ 03:38:
Een work-around:

In plaats van met recordsets te werken, kan je ook gewoon 'n update query maken.

code:
1
sor = "update makale set abc=abc+1 where idno="&Cint(idno)


Die Cint dient om invoercontrole te doen. (wat jij dus alvast niet doet, waardoor je applicatie gevoelig zou kunnen zijn voor vanalle ongure toestanden)
Dit is waarschijnlijk niet eens een workaround. Feitelijk doet dit gewoon hetzelfde als in de code uit de topicstart, met als enige verschil dat je de update nu zelf met SQL doet. Ik vermoed dat MrX gelijk heeft: ik denk dat de betreffende code vaker dan één keer aangeroepen wordt, mogelijk door een verkeerde/dubbele include.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 19-05 13:45

gorgi_19

Kruimeltjes zijn weer op :9

RobIII schreef op zondag 05 december 2004 @ 03:53:
[...]

offtopic:
"Controle" zou ik het niet noemen. Ten eerste gaat 'ie klappen (error dus) als je er iets anders in duwt dan een int, en ten tweede kan 'ie maar overweg met een Int (32767 max). Als dat genoeg is, prima. Anders gebruik je CLng. En waarom zou je die niet gebruiken? Kost niks extra ;)

Je hebt overigens natuurlijk wel gelijk door te zeggen dat je ermee voorkomt dat mensen enge dingen met je DB gaan doen :)
Als dat de enige reden is, is een parametrized query beter :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 19:12

sopsop

[v] [;,,;] [v]

zet na je update van de recordset eens de volgende regel:
code:
1
response.end

Kijk dan of de update nog steeds met 2 tegelijk gebeurt. Zo niet, dan wordt de pagina hoogst waarschijnlijk nog een keer geladen door de code na de update.

Verwijderd

Heeft het niets met die auto-increment te maken? Dat ie daardoor alles maal 2 doet ofzo?

  • MMUilwijk
  • Registratie: Oktober 2001
  • Laatst online: 00:24
Knal eens een response.write in je ASP voordat je er 1 bij optelt en check die waarde even.
En inderdaad, wat staat er in die vage include bestanden van je? :P
edit:

ik mag toch hopen dat je niet probeert een autonummeringsveld te updaten?

[ Voor 23% gewijzigd door MMUilwijk op 06-12-2004 20:47 ]

Everytime I suffer I become a better man because of it

Pagina: 1