[ASP/SQL] Is dit netjes?

Pagina: 1
Acties:

  • Sonic
  • Registratie: Februari 2000
  • Laatst online: 09:18
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
    SQL = "SELECT * FROM TblAanbod WHERE DVDNr = '" & request.querystring("id") & "'"
    Set objverbinding = Server.CreateObject("ADODB.Connection")
    Objverbinding.Open "dsn=dvdshop"
    response.write(SQL)
    set rs = Objverbinding.Execute(SQL)
    
    response.write("De volgende Leverancier nummers hebben et: <BR>")
    
    Dim famname(1000),i
    i = 0
        while not rs.eof
            lenvr(i) = rs("levnr")
            rs.movenext
            response.write(famname(i) & "<br>")
            i = i + 1
        wend
    
    x = 0
    i = i - 1
    for y = 0 to i
        
        SQLLEV = "SELECT * FROM TblLeverancier WHERE Levnr = '" & lenvr(y) & " ' "
        response.write(SQLLEV)
        set rs2 = Objverbinding.Execute(SQLLEV)
    
        response.write("<p>" &rs2("Bedrijfsnaam") & "</p>")
    next


Eerst moet ik kijken in tblaanbod welke LevNR het DVDnummer heeft (dvdnummer is geselecteert). Daarna is het handig om te weten wat voor bedrijfsnaam en plaats waar Levnummer zit..

Maar nu voer ik dus 2 x achter mekaar deze query uit? volgens mij is dat niet zo efficient? :) maar het kan bijna niet anders ik kan ook wel
WHERE Levnr IN doen maar dna moet ik de arrays nog 1 voor 1 uitlezen?? Iemand advies? of is dit goed?
code:
1
SQLLEV = "SELECT * FROM TblLeverancier WHERE Levnr = '" & famname(y) & " ' "

[ Voor 13% gewijzigd door Sonic op 12-11-2003 09:23 ]


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Als je vind dat je een query te vaak uitvoert: wel eens van views gehoord?

* curry684 heeft verder niet echt inhoudelijk gekeken, maar dit kan je al een hoop helpen ;)

Professionele website nodig?


  • Sonic
  • Registratie: Februari 2000
  • Laatst online: 09:18
hehe :) jah ken views wel.. Maar werk er liever niet meej moet ik ook eerst weer mn Mysql updaten
* Sonic is lui
ik weet et

[ Voor 12% gewijzigd door Sonic op 12-11-2003 09:29 ]


  • avon
  • Registratie: November 2002
  • Laatst online: 27-06-2025
ID nummers moet je juist opgeven zonder ' '

dus zeg maar

Where ID = "& variable &" ;

Maarre waarom vraag je iets, als je geen moeite er voor wil doen ?

[ Voor 39% gewijzigd door avon op 12-11-2003 09:32 ]

Gratis webwinkel beginnen? Met Onetoshop.com kunt u direct beginnen!


  • Sonic
  • Registratie: Februari 2000
  • Laatst online: 09:18
AvOn schreef op 12 november 2003 @ 09:30:
ID nummers moet je juist opgeven zonder ' '

dus zeg maar

Where ID = "& variable &" ;
hehe het werkt al wel :P Dat is et probleem niet
maar het is niet echt netjes want ik open nu 2 query's en die laatste query staat in een klein loopje dus voert hij misschien wel 2 of 10 of 20 keer uit??
dat belast me systeempje wel.. Dus kan het op een andere manier?

[ Voor 8% gewijzigd door Sonic op 12-11-2003 09:32 ]


Verwijderd

Kan je die twee tabellen niet 'joinen' dan?

  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 12-08 16:04

Jaspertje

Max & Milo.. lief

En als je maar een waarde uit een query nodig hebt, dan hoef je niet select * te doen, maar doe je select bedrijfsnaam from..

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Kijk eens naar ADODB.RecordSet.GetRows, dit zet de resultaten van een SELECT in een Array.

Verder is het uitvoeren van een SQL statement in een loop meestal geen goed idee, je kunt alles in 1 statement krijgen door een JOIN te gebruiken.

code:
1
SELECT * FROM tblAanbod a INNER JOIN tblLeverancier L on a.levnr = L.levnr WHERE ...


Hiermee krijg je in 1 keer de benodigde gegevens!

Ook kun je beter een DSN-less connectie gebruiken. Kijk eens naar de OLE DB drivers.

Oops! Google Chrome could not find www.rijks%20museum.nl


  • Sonic
  • Registratie: Februari 2000
  • Laatst online: 09:18
Jaspertje schreef op 12 november 2003 @ 09:33:
En als je maar een waarde uit een query nodig hebt, dan hoef je niet select * te doen, maar doe je select bedrijfsnaam from..
weet ik maar ik heb er nog meer nodig.. Maar voorat ik enthousiast verder ga met tikken wil ik wel weten of het netjes is anders kan ik zodadelijk daar weer mee lopen prutsen..
P_de_B schreef op 12 november 2003 @ 09:34:
Kijk eens naar ADODB.RecordSet.GetRows, dit zet de resultaten van een SELECT in een Array.

Verder is het uitvoeren van een SQL statement in een loop meestal geen goed idee, je kunt alles in 1 statement krijgen door een JOIN te gebruiken.

code:
1
SELECT * FROM tblAanbod a INNER JOIN tblLeverancier L on a.levnr = L.levnr WHERE ...


Hiermee krijg je in 1 keer de benodigde gegevens!

Ook kun je beter een DSN-less connectie gebruiken. Kijk eens naar de OLE DB drivers.
BEDANKT! :) ga ik ff proberen zoiets bedoelde ik dus
Verder is het uitvoeren van een SQL statement in een loop meestal geen goed idee.

Oww ff een vraagje waarom DSN-Less??
Wat is precies het verschil? als et op die site staat lees ik et sow :)

[ Voor 56% gewijzigd door Sonic op 12-11-2003 09:38 ]


  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 12-08 16:04

Jaspertje

Max & Milo.. lief

Sonic- schreef op 12 november 2003 @ 09:34:

[...]


BEDANKT! :) ga ik ff proberen zoiets bedoelde ik dus
Verder is het uitvoeren van een SQL statement in een loop meestal geen goed idee.

Oww ff een vraagje waarom DSN-Less??
Wat is precies het verschil? als et op die site staat lees ik et sow :)
Als je een DNS gebruikt, en je gaat het op een andere server neerzetten.. dan zal je ook een DSN moeten aanmaken.. wil je dat elke keer..?? (het antwoord is eigelijk nee :)) maar als je het alleen thuis gebruikt.. dan kan het best hoor!

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Oww ff een vraagje waarom DSN-Less??
Hogere snelheid/stabieler, en zoals Jaspertje al zei makkelijker op een andere server te installeren.

Oops! Google Chrome could not find www.rijks%20museum.nl


  • Sonic
  • Registratie: Februari 2000
  • Laatst online: 09:18
Bedankt allemaal
het is inmiddels gelukt met JOIN nu voer ik dus nog maar 1 query uit echt super!!
Bedankt iig.. en ik ga het denk ik indd veranderen de DSN

  • Sonic
  • Registratie: Februari 2000
  • Laatst online: 09:18
nog een vraagje.. ik wil een variable tijdelijk bewaren..
Een soort sessie.. maar is het verstandig om een stuk of 4 sessies aan te maken?

Ik wil een soort winkelmandje maken..
Dus dat je online kunt kopen.. Maar als hij de browser weg klikt moet alles uit het winkelmandje (soort sessie dus)
Maar zijn sessie's daar voor bedoelt?

  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 12-08 16:04

Jaspertje

Max & Milo.. lief

Het zou een oplossing zijn, maar dan zou ik wel alle onderdelen in een sessie zetten en dan comma seperated ofzo.. aan de andere hand kan het ook met vbscrpt geloof ik, maar dat weet ik niet zeker..

Ik zou niet voor elk dingetje een apparte sessie aanmaken, dat kan erg oplopen in het geheugen van de server...

  • Altaphista
  • Registratie: Juli 2001
  • Laatst online: 16-08 16:51

Altaphista

1. check manual, 2. ask

Sonic- schreef op 12 november 2003 @ 11:28:
nog een vraagje.. ik wil een variable tijdelijk bewaren..
Een soort sessie.. maar is het verstandig om een stuk of 4 sessies aan te maken?

Ik wil een soort winkelmandje maken..
Dus dat je online kunt kopen.. Maar als hij de browser weg klikt moet alles uit het winkelmandje (soort sessie dus)
Maar zijn sessie's daar voor bedoelt?
tuurlijk kan je daar sessies voor gebruiken.

Je gaat het pas zien als je het doorhebt.


  • bonzz.netninja
  • Registratie: Oktober 2001
  • Laatst online: 11:14

bonzz.netninja

Niente baffi

inner joins werken toch niet met mysql????

vuistdiep in het post-pc tijdperk van Steve  | Joepie joepie. Dat ging echt toppie! | https://www.wegmetbigtech.nl


  • Sonic
  • Registratie: Februari 2000
  • Laatst online: 09:18
kan natuurlijk ook een koekje maken denk ik net :)
Beetje etzelfde als een sessie maar goed :)

[ Voor 32% gewijzigd door Sonic op 12-11-2003 11:33 ]


  • Sonic
  • Registratie: Februari 2000
  • Laatst online: 09:18
bonzz.netninja schreef op 12 november 2003 @ 11:33:
inner joins werken toch niet met mysql????
blijkbaar wel :)

  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 12-08 16:04

Jaspertje

Max & Milo.. lief

bonzz.netninja schreef op 12 november 2003 @ 11:33:
inner joins werken toch niet met mysql????
De nieuwste MySQL toch wel..

  • Altaphista
  • Registratie: Juli 2001
  • Laatst online: 16-08 16:51

Altaphista

1. check manual, 2. ask

Sonic- schreef op 12 november 2003 @ 11:33:
kan natuurlijk ook een koekje maken denk ik net :)
Beetje etzelfde als een sessie maar goed :)
een sessie wordt/blijft niet opgeslagen op de computer van de gebruiker.
Maar ik heb wel eens gebruik gemaakt van vrij grote sessies (als je over de inhoud praat dan: complete classes in de sessie)

Je gaat het pas zien als je het doorhebt.


  • Sonic
  • Registratie: Februari 2000
  • Laatst online: 09:18
dat hoeft ook niet...
ze zetten iets in het winkelmandje..
en als ze op bestellen klikken dan zet ik et in een Tabeltje (databeestje draait er)

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Altaphista schreef op 12 november 2003 @ 11:38:
[...]

een sessie wordt/blijft niet opgeslagen op de computer van de gebruiker.
Maar ik heb wel eens gebruik gemaakt van vrij grote sessies (als je over de inhoud praat dan: complete classes in de sessie)
Het is niet heel verstandig objecten (denk dat dit ook geld voor de classes uit ASP3.0) in sessies te zetten, je loopt hier snel tegen threading problemen aan.

Data (zoals een shopping cart) is natuurlijk helemaal geen probleem en verrassend schaalbaar.

Oops! Google Chrome could not find www.rijks%20museum.nl


  • Sonic
  • Registratie: Februari 2000
  • Laatst online: 09:18
hhmm..
maar ik kan geen waarden opslaan in een sessie..
ja 1!
maar als je bijvoorbeeld
session("naam") = "blaate"

hebt en dan wil je nog een naam toevoegen
session("naam") = "blaatje"
dan kan het wel met

session("naam") = session("naam") + "blaatje"

maar dat ziet er ook weer niet uit en zou ik 100 if's moeten schrijven

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Je kunt wel gegevens in een array opslaan en deze in de sessie. Kijk hier maar eens.

Oops! Google Chrome could not find www.rijks%20museum.nl


  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 12-08 16:04

Jaspertje

Max & Milo.. lief

en je kan ook een spillter maken

session("naam") = session("naam") & ";blaatje"

Als je dan de session gaat uitvragen:

temp = split(session("naam"), ";")

enige is dan wel dat je geen ; in je namen moet gebruiken

maar een echte array is misschien mooier..

  • Sonic
  • Registratie: Februari 2000
  • Laatst online: 09:18
kon ik dit maar doen zoiets
code:
1
session(" & response.write(request.form("blaaT")) & ")

dan was ik ook al klaar

  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 12-08 16:04

Jaspertje

Max & Milo.. lief

Sonic- schreef op 12 november 2003 @ 15:00:
kon ik dit maar doen zoiets
code:
1
session(" & response.write(request.form("blaaT")) & ")

dan was ik ook al klaar
erm help :? :?

Wat wil je hier mee??

  • Sonic
  • Registratie: Februari 2000
  • Laatst online: 09:18
nou die vul ik met et aantal
en lees ik alles uit wat die kerel heeft ingevult..
zo weet ik wel blaat nummer hij heeft
Met dat blaat nummer kan ik veel opvragen

Nu vraag je af? waarom maak je dat niet een
session("janneke") = "request.form("blaat")

Omdat hij dan alles in janneke zet maar misshien komen er wel 7 blaat nummers...

[ Voor 6% gewijzigd door Sonic op 12-11-2003 15:10 ]


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Als je wilt werken met dynamische variabelen (dat is wat jij wilt) kun je IMHO beter Arrays gebruiken.

Lees eens op aspfaqs.com de array categorie

Oops! Google Chrome could not find www.rijks%20museum.nl


  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
op aspfaqs.com kun je ook het een en ander lezen mbt sql injection attacks, daar zet je je query namelijk wel voor open...

Op zoek naar een baan als Coldfusion webdeveloper? Mail me!


  • Sonic
  • Registratie: Februari 2000
  • Laatst online: 09:18
is het niet makkelijker om eerst die gekozen dingen in een dbase te zetten?
maar is allemaal zo om.. moet toch veel makkelijk kunnen?

Of een tijdelijke tabel aanmaken?? maar is ook om het liefst gewoon in een koekje of een session.. maar dat gata dus moeilijk..
Want met die array in een sessie is me ook niet helemaal duidelijk

  • riezebosch
  • Registratie: Oktober 2001
  • Laatst online: 21-06 17:10
bonzz.netninja schreef op 12 november 2003 @ 11:33:
inner joins werken toch niet met mysql????
6.4.1.1 JOIN Syntax

MySQL supports the following JOIN syntaxes for use in SELECT statements:

table_reference, table_reference
table_reference [INNER | CROSS] JOIN table_reference [join_condition]
table_reference STRAIGHT_JOIN table_reference
table_reference LEFT [OUTER] JOIN table_reference [join_condition]
table_reference NATURAL [LEFT [OUTER]] JOIN table_reference
{ OJ table_reference LEFT OUTER JOIN table_reference ON conditional_expr }
table_reference RIGHT [OUTER] JOIN table_reference [join_condition]
table_reference NATURAL [RIGHT [OUTER]] JOIN table_reference
als ik het goed heb zijn het de subquery's die niet werken in MySQL

Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack


  • Sonic
  • Registratie: Februari 2000
  • Laatst online: 09:18
Pff ff een nachtje over geslapen :) en ik heb zoiets

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
if Session("Artikelen") <> "" then
    arArtikelen = Session("Artikelen")
Else
    bou = Ubound(arArtikelen, 1) + 1
    Redim arArtikelen(bou,0)
end if

arUpper = UBound(arArtikelen, 2) + 1  'Want je kan alleen de laatste dimensie vergroten

Redim Preserve arArtikelen(2, arUpper)
arArtikelen(0, arUpper) = Request.Form("aanbodNr")
arArtikelen(1, arUpper) = request.form("aantal")

For i = 0 To Ubound(arArtikelen, 2)
      Response.Write "AanbodNr:  " & arArtikelen(0,i) & "<br>"
      Response.write "Aantal: " & arArtikelen(1,i) & "<br>"
Next

'En voor het opslaan in een sessie
Session("Artikelen") = arArtikelen


Ik weet et.. Het is niet de meest mooie code!! Maar ik heb een probleem
code:
1
if Session("Artikelen") <> "" then

Maar in session artikelen zit natuurlijk een array.. Hoe kan ik proberen die array uit te lezen? Misschien niet al te snuggere vraag? :P Maar ik krijg et nie voor mekaar? Want op deze manier krijg ik natuurlijk ene foutmelding

[ Voor 14% gewijzigd door Sonic op 13-11-2003 12:41 ]


  • Sonic
  • Registratie: Februari 2000
  • Laatst online: 09:18
Niemand? die het zo snel weet? :(
Please?

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
kijk eens naar UBOUND()

Oops! Google Chrome could not find www.rijks%20museum.nl


  • Sonic
  • Registratie: Februari 2000
  • Laatst online: 09:18
Kijk hier maar is naar.. heb hem al... Unbound er totaal niks mee te maken :) Maar iig bednakt :) Voor diegen die ooit hierop zoeken! dit is em :P Athans een voorbeeld dit is niet de mijne :) erg simpel maar et werkt

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
<%@ Language=VBScript %>
<%
if request("sub") = "True" Then
      if not isempty(Session("Artikelen")) Then
            arArtikelen = session("artikelen")
      else
            redim arArtikelen(2,0)
      End if
      arUpper = UBound(arArtikelen, 2) + 1  'Want je kan alleen de laatste dimensie vergroten

      Redim Preserve arArtikelen(2, arUpper)
      arArtikelen(0, arUpper) = Request("aanbodNr")
      arArtikelen(1, arUpper) = request("aantal")
      For i = 1 To Ubound(arArtikelen, 2)
            Response.Write "AanbodNr:  " & arArtikelen(0,i) & "<br>"
            Response.write "Aantal: " & arArtikelen(1,i) & "<br>"
      Next
      teller=Request("aanbodnr")
      teller = teller + 1
      
      Session("Artikelen") = arArtikelen
else
      teller=1
end if
%>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<script language="Javascript">
</script>
</HEAD>
<form name=Bla>
<input type=hidden name=sub value="True">
<Input type=submit value="hoi" name="btn">
<input type=text name=aantal value="1">
<input type=text name=aanbodnr value="<%=Teller%>">
</form>
</BODY>
</HTML>

[ Voor 15% gewijzigd door Sonic op 13-11-2003 15:17 ]


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Dit geeft ook een true als er niets in de array zit, ik dacht dat je wilde weten of de array leeg was of niet, niet alleen of er een array aanwezig is.

Met UBOUND() check je de inhoud van de array zelf, niet de inhoud van de sessievariabele.

Oops! Google Chrome could not find www.rijks%20museum.nl


  • Sonic
  • Registratie: Februari 2000
  • Laatst online: 09:18
makkelijker manier als je een array in een sessie hebt gestopt is
if not isempty(Session("Artikelen"))

:)heb ik nog niet Ubound nodig :)

maar indd met een array alleen is UBOUND oplossing

[ Voor 21% gewijzigd door Sonic op 13-11-2003 16:31 ]

Pagina: 1