[ASP] data aan zelfde pag. via form of querystr...

Pagina: 1
Acties:

  • shades
  • Registratie: September 2001
  • Laatst online: 10-08 15:01
Ik ben bezig met een asp-pagina die een lijst toon met gegevens uit de database. Nu worden via een querystring de gegevens aan zichzelf doorgegeven om de veschillende pagina's op te roepen als er meer dan 15 records zijn(http://gathering.tweakers.net/forum/list_messages/535510). Verder wordt er doorgegeven op welke kolom er gesorteerd moet worden en in welke richting dat moet zijn.

Nu moet ik er ook nog een filter bij bouwen en de querystring wordt dan errug lang en de code erg onoverzichtelijk. Het filter bestaat o.a. uit de keuze tussen 4 verschillende <selection> boxen en een text filter over een aantal velden..

Code van de querystring op dit moment,
filter1/filter4 en een search key zouden er nog bij moeten komen..
code:
1
2
3
4
5
Response.Write "<a href='Lijst.asp?Actie=" & sActie & _
                       "&page=" & I & _
                       "&order=" & Server.URLEncode(strOrderBy) & _
                       "&type=" & iVldType & _
                       "&dir=" & sDirection & "'> " & I & " </a>" & vbCrLf

Hier moeten dus ook nog de filter instellingen bij. Lijkt me niet handig. Kan ik dit soort dingen ook naar een hidden <input> gooien en op die manier die handel met Request.Form() weer ophalen.

Graag advies

https://k1600gt.nl


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 13:35

gorgi_19

Kruimeltjes zijn weer op :9

Dat kan, maar dan moet je de pagina posten.

Bijvoorbeeld:
code:
1
2
3
4
5
6
7
8
9
<form name="ddas" type="post">
<input type=text name=zoekvolgorde
...
</form>
<..>
<%
Hier het ophalen van de gegevens

%>

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • shades
  • Registratie: September 2001
  • Laatst online: 10-08 15:01
Op donderdag 04 juli 2002 09:42 schreef gorgi_19 het volgende:
Dat kan, maar dan moet je de pagina posten.

Bijvoorbeeld:
code:
1
2
3
4
5
6
7
8
9
<form name="ddas" type="post">
<input type=text name=zoekvolgorde
...
</form>
<..>
<%
Hier het ophalen van de gegevens

%>
Ja, dat snap ik wel maar wat ik wil weten is of het handiger is op een hele zwik hidden <input> boxen te vullen a.d.v. gemaakte keuzen of dat er een querystring komt..

Wat is het beste manier van programmeren in dit geval zodat later het e.e.a makkelijk uit te breiden is..

https://k1600gt.nl


Verwijderd

Er is geen beste manier. Voordeel van via querystring is dat je makkelijk een zoek- en filteropdracht vanaf een link kan maken, maar nadeel is de lelijke URL.

  • shades
  • Registratie: September 2001
  • Laatst online: 10-08 15:01
Op donderdag 04 juli 2002 10:10 schreef MrX het volgende:
Er is geen beste manier. Voordeel van via querystring is dat je makkelijk een zoek- en filteropdracht vanaf een link kan maken, maar nadeel is de lelijke URL.
Ah, nou hier is misschien wat meer info
Ik heb zowel boven als onder aan de lijst een cell met "[vorige] 1 2 3 4 5 [volgende]" knoppen. Verder hangt er aan iedere kolom een string die een sorteer (kolom, richting) opdracht meegeeft. En er is nog een filter mogelijkheid via een selection (dropdown) box die in iedergeval via een form moet lopen.
Maw. Ik moet dus op veel plaatsen die querystring aanpassen en dat gaat voor nu nog wel maar straks gaat dat fouten opleveren.. bv als de zoek filter wat uitgebreiden wordt is het qstring inderdaad heel goor aan het worden..

https://k1600gt.nl


Verwijderd

Da's gewoon een kwestie van gestructureerd programmeren. Maak desnoods een include file met 1 funktie die op alle plaatsen gebruikt wordt om de querystring op te bouwen.

  • majornono
  • Registratie: Juni 2002
  • Laatst online: 04-04 23:16
heb ook ooit zo'n probleem gehad met een filter op m'n werk voor een zoekfunctie. Ik heb toen een functie geschreven die er ongeveer als volgt uit ziet:
code:
1
2
3
4
5
6
7
8
9
10
dim filterSQL
filterSQL = ""

function filter(kolomnaam, string)
  filterSQL = filterSQL + " AND "& kolomnaam &" LIKE %"& string &"%"
end function

filter("kolom1", "tekst om te filteren")

set rsdata=conn.execute (SELECT * FROM tabel1 WHERE ID=1"& filterSQL)

Zoiets dus. In de sql neem ik de algemene var filterSQL op en voor iedere keer dat ik in een bepaalde kolom op een tekst wil filteren roep ik de functie filter aan.

Hoop dat je er wat aan hebt.

Problem Exists Between Chair And Keyboard


  • shades
  • Registratie: September 2001
  • Laatst online: 10-08 15:01
Op donderdag 04 juli 2002 10:40 schreef MrX het volgende:
Da's gewoon een kwestie van gestructureerd programmeren. Maak desnoods een include file met 1 funktie die op alle plaatsen gebruikt wordt om de querystring op te bouwen.
Mmja. maar in dit verhaal is dat alleen maar lastiger omdat de qstring niet iedere keer dezelfde info heeft.. ivm div form gerelateerde objecten. Die moet ik dus via jscript of de req.form ophalen

https://k1600gt.nl


Verwijderd

Ik gebruik altijd templates. Dus geen HTML en Asp meer doorelkaar heen. Dat is wel net zo netjes. Anders krijg je inderdaad van die hele verotte urls

  • majornono
  • Registratie: Juni 2002
  • Laatst online: 04-04 23:16
Op donderdag 04 juli 2002 13:24 schreef voetenzalf het volgende:
Ik gebruik altijd templates.
Zo leer ik nog eens wat. Templates :? Wat zijn dat?

Problem Exists Between Chair And Keyboard


  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 03-09 15:18

Crazy D

I think we should take a look.

Op donderdag 04 juli 2002 13:24 schreef voetenzalf het volgende:
Ik gebruik altijd templates. Dus geen HTML en Asp meer doorelkaar heen. Dat is wel net zo netjes. Anders krijg je inderdaad van die hele verotte urls
Dat heeft niet zo bar veel met elkaar te maken. Met templates kun je idd je html van je asp code scheiden (of andersom :P) maar als je bv een zoekgedeelte hebt, en je wilt n resultaten laten zien op 1 pagina, en je biedt de mogelijkheid om naar een volgende pagina te gaan met meer zoekresultaten, zul je toch wat gegevens mee moeten geven, het gebruik van een templates verandert daar niets aan.

Exact expert nodig?


  • shades
  • Registratie: September 2001
  • Laatst online: 10-08 15:01
Op donderdag 04 juli 2002 19:54 schreef majornono het volgende:

[..]

Zo leer ik nog eens wat. Templates :? Wat zijn dat?
Ik mis hem ook even hier..
Snap nl niet hoe je nl asp niet in je html kan verwerken.. Er toch altijd een html stream nodig (dan wel gewoon, dan wel via response.write oid)
Zou je het nader kunnen uitleggen..

https://k1600gt.nl


  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 03-09 15:18

Crazy D

I think we should take a look.

Simpel gezegt is je template bv iets als
<html>
<head><title>%titel%</title></head>
<body>
<h1>Hallo, %naam%</h1>
</body>
</html>

in je asp script open je die template, vervang %titel% en %naam% en spuug de output uit. Als je vervolgens een compleet andere layout wilt, voor i-mode of zo, hoef je er alleen maar voor te zorgen dat die %titel% en %naam% in die template hetzelfde voorstellen als in bovenstaand supersimpel voorbeeldje, en hoef je in je asp script niks aan te passen. Verder is er _heel erg veel_ te vinden over templates, genoeg om een paar dagen zoet mee te zijn ;)
(en in de praktijk stelt een template wel iets meer voor als bovenstaande...)

Exact expert nodig?


  • shades
  • Registratie: September 2001
  • Laatst online: 10-08 15:01
Op donderdag 04 juli 2002 21:10 schreef Crazy_D het volgende:
Simpel gezegt is je template bv iets als
<html>
<head><title>%titel%</title></head>
<body>
<h1>Hallo, %naam%</h1>
</body>
</html>

in je asp script open je die template, vervang %titel% en %naam% en spuug de output uit. Als je vervolgens een compleet andere layout wilt, voor i-mode of zo, hoef je er alleen maar voor te zorgen dat die %titel% en %naam% in die template hetzelfde voorstellen als in bovenstaand supersimpel voorbeeldje, en hoef je in je asp script niks aan te passen. Verder is er _heel erg veel_ te vinden over templates, genoeg om een paar dagen zoet mee te zijn ;)
(en in de praktijk stelt een template wel iets meer voor als bovenstaande...)
Oh, een include file-tje dus... :D

https://k1600gt.nl

Pagina: 1