[ASP] Meerdere invoervelden splitten

Pagina: 1
Acties:

  • .GoO
  • Registratie: September 2001
  • Laatst online: 26-08 10:06
Ik heb een aantal records in mn database die ik dmv van ASP in een loop op de pagina weergeef.. Achter elk record staat een tekstbox waar een getal ingevoerd kan worden. Na de submit moeten de records waarbij een getal ingevoerd is in de database gezet worden, met het nummer en het getal erbij..

Op welke manier zou ik dit het beste kunnen doen? Ik heb het eerst met de optie split geprobeert.. Had het allemaal in 1 string gezet gescheiden met een komma, en daarna weer uitelkaar gehaald.. Maar dit is erg omslachtig en werkte ook niet helemaal lekker.. Is er een betere manier?

  • whoami
  • Registratie: December 2000
  • Laatst online: 16:04
Je slaat dus meerdere records op in 1 veld in uw databank? :?

https://fgheysels.github.io/


  • .GoO
  • Registratie: September 2001
  • Laatst online: 26-08 10:06
Op maandag 10 juni 2002 19:17 schreef whoami het volgende:
Je slaat dus meerdere records op in 1 veld in uw databank? :?
Nee, elk record heeft gewoon 1 inputbox waarna de gegevens in die inputbox in combinatie met het nummer van dat record opgeslagen moet worden....

  • whoami
  • Registratie: December 2000
  • Laatst online: 16:04
Dus één rij in die tabel bestaat maar uit één kolom waar je alle gegevens van dat record in opslaat? (Alle gegevens van één record in een kolom)? Waarom doe je dat in godsnaam zo?

https://fgheysels.github.io/


  • .GoO
  • Registratie: September 2001
  • Laatst online: 26-08 10:06
Op maandag 10 juni 2002 19:22 schreef whoami het volgende:
Dus één rij in die tabel bestaat maar uit één kolom waar je alle gegevens van dat record in opslaat? (Alle gegevens van één record in een kolom)? Waarom doe je dat in godsnaam zo?
je begrijpt me verkeerd.. :) op de eerste pagina wordt automatisch een lijst gemaakt van alle records in de tabel.. deze records bestaan weer uit velden die in een rij naast elkaar komen te staan.. zo onstaat dus een tabel op de webpagina zoiets als:

nr naam datum invoer (textbox)

1 blaat 11-11-11 [ ]
2 blaat2 11-12-13 [ 5 ]

[submit]

wanneer op submit gedrukt wordt, moet die 5 bij nummer 2 in een tabel in een database gegooit worden.. in de volgende pagina moet dus gecheckt worden bij ieder van die volgende velden of er iets ingevoerd is.. Als dit het geval is moet ie het nr bij de invoer zoeken en dat opslaan.. De invoer checken is niet zo moeilijk, maar hoe weet ik nou welk nr erbij hoort??

Had dus alles eerst in een string staan gescheiden met komma's.. Die kan je dan weer uitelkaar halen maar als er bv dan productnummers ontbreken (of een andere situatie( kan het fout gaan.. Ik zoek dus een andere betere manier..

nu iets duidelijker? :)

  • Ignoramus
  • Registratie: December 2001
  • Laatst online: 04-09 14:35
Volgens mij laat heeft hij wel een "normale" tabel. Deze laat hij (gedeeltelijk) zien in een webpagina, met een textbox achter elke rij. Nu is het de bedoeling dat alleen de ingevulde tekstbox eruit gefilterd worden. En dit kan die volgens mij het beste doen door de tekstboxen te nummeren, en na de submit allemaal langs te lopen en de ingevulde in een array te stoppen

Edit: te laat met uitleg

Bij IT-ers gaat alles automatisch, maar niets vanzelf Workstation Server


  • .GoO
  • Registratie: September 2001
  • Laatst online: 26-08 10:06
Op maandag 10 juni 2002 19:28 schreef Ignoramus het volgende:
Volgens mij laat heeft hij wel een "normale" tabel. Deze laat hij (gedeeltelijk) zien in een webpagina, met een textbox achter elke rij. Nu is het de bedoeling dat alleen de ingevulde tekstbox eruit gefilterd worden. En dit kan die volgens mij het beste doen door de tekstboxen te nummeren, en na de submit allemaal langs te lopen en de ingevulde in een array te stoppen

Edit: te laat met uitleg
Juist ja ;)

Zat ook al te denken om elke tekstbox te nummeren maar weet niet zo goed hoe ik dat dan zou moeten doen.. Kan ik elke textbox de waarde van het recordnr meegeven?

  • Ignoramus
  • Registratie: December 2001
  • Laatst online: 04-09 14:35
Op maandag 10 juni 2002 19:30 schreef devv05 het volgende:

[..]

Juist ja ;)

Zat ook al te denken om elke tekstbox te nummeren maar weet niet zo goed hoe ik dat dan zou moeten doen.. Kan ik elke textbox de waarde van het recordnr meegeven?
Lijkt me een leuke oplossing

Bij IT-ers gaat alles automatisch, maar niets vanzelf Workstation Server


  • .GoO
  • Registratie: September 2001
  • Laatst online: 26-08 10:06
Op maandag 10 juni 2002 19:32 schreef Ignoramus het volgende:

[..]

Lijkt me een leuke oplossing
Wil nog niet echt helemaal lukken ;( Snap niet goed hoe je een loop maakt die dan elke textbox (met aparte naam afgeleid van het record) langsloopt?

  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

zoiets? (niet getest)
code:
1
2
3
4
5
6
7
8
9
10
<%
' inputs heten bijv. inv_1 t/m inv_10 (inv_nr)
For Each item In Request.Form
  If Left(item, 4) = "inv_" Then
    nr = Mid(item, 5)
    val = Request.Form(item)
    ' rest van code
  End If
Next
%>

Today's subliminal thought is:


  • .GoO
  • Registratie: September 2001
  • Laatst online: 26-08 10:06
Op dinsdag 11 juni 2002 00:36 schreef Annie het volgende:
zoiets? (niet getest)
code:
1
2
3
4
5
6
7
8
9
10
<%
' inputs heten bijv. inv_1 t/m inv_10 (inv_nr)
For Each item In Request.Form
  If Left(item, 4) = "inv_" Then
    nr = Mid(item, 5)
    val = Request.Form(item)
    ' rest van code
  End If
Next
%>
Hm ok.. Ik heb nu meer een idee gekregen maar ff iets waar ik nog mee zit... Volgens mij kan dit nooit helemaal werken..

Ik heb nu elke inputbox de naam gegeven met het record nummer erin.. bv txtrecord1..2..3.. etc.

In die loop gaat ie elke item langs, maar item is toch leeg? hij moet juist de naam van elke tekstbox langsgaan.. En wanneer links van item "inv_" is (dus de naam van de tekstbox) haalt ie item op uit het form?? Wat is item dan??

  • .GoO
  • Registratie: September 2001
  • Laatst online: 26-08 10:06
Het probleem is dat het recordnr op de 1e pagina uit een tabel wordt gehaald.. Dus zoiets..
code:
1
2
3
4
5
6
7
8
<% Loop while rst.eof = false %>

<form action="pagina2.asp" method=post>

Recordnr:  <%= rst("recordnr") %><BR>
Invoerveld: <input type="text" naam="blaat"><BR>

<input type="submit" naam="naarvolgendepaginatoe">

Op de volgende pagina moet ie dus alle records waarin op de vorige pagina in de textbox iets is ingevuld nalopen.. Dit is opzich niet zo moeilijk en kan met een vrij simpele loop en elke keer gewoon blaat ophalen.. Maar hoe krijg ik dan wanneer er iets ingevult is in de textbox, het desbetreffende recordnr van DAT record erbij??

Zou ik op de eerste pagina al alle productnr's in een array kunnen gooien ofzo?? Maar hoe haal ik die dan weer op in de 2e?

Verwijderd

Op dinsdag 11 juni 2002 16:47 schreef devv05 het volgende:
Maar hoe krijg ik dan wanneer er iets ingevult is in de textbox, het desbetreffende recordnr van DAT record erbij??
Precies zoals al eerder gemeld. Als naam voor je input veld kies je het ID nummer van dat record. Wanneer je op de volgende pagina komt check je ieder input veld. Is er iets ingevuld dan sla je deze op.

  • .GoO
  • Registratie: September 2001
  • Laatst online: 26-08 10:06
Op dinsdag 11 juni 2002 17:36 schreef KuiF33nD het volgende:

[..]

Precies zoals al eerder gemeld. Als naam voor je input veld kies je het ID nummer van dat record. Wanneer je op de volgende pagina komt check je ieder input veld. Is er iets ingevuld dan sla je deze op.
Dat snap ik wel maar hoe weet ik dan de namen van alle invoervelden die ik moet checken?? Stel dat ie op de 1e pagina 30 velden heeft.. Hoe controleer ik die dan allemaal, en hoe weet ie dat ie bij het laatste veld is van de vorige pagina? (het kan ook mogelijk zijn dat niet alle velden op de vorige pagina weergegeven zijn, de records zijn opgedeeld in categorieën.. eof is dus geen optie)

En hoe geef ik een variabele de waarde van de naam van de tekstbox, dus bv record32 ipv de inhoud hiervan??

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 09:41

gorgi_19

Kruimeltjes zijn weer op :9

Dat snap ik wel maar hoe weet ik dan de namen van alle invoervelden die ik moet checken??
Alle namen van je invoervelden beginnen met inv_ en eindigen met het recordnummer, althans, volgens het script van Annie (waar ik me helemaal in kan vinden... :) )
Stel dat ie op de 1e pagina 30 velden heeft.. Hoe controleer ik die dan allemaal, en hoe weet ie dat ie bij het laatste veld is van de vorige pagina?
Door was het "For each Item in Request.Form" gedeelte vorm, gecombineerd met "If Left(item, 4) = "inv_" Then"
(het kan ook mogelijk zijn dat niet alle velden op de vorige pagina weergegeven zijn, de records zijn opgedeeld in categorieën.. eof is dus geen optie)
Meerdere pagina's? Geen probleem voor een recordset; kijk eens naar onder andere de PageSize en AbsolutePage property van het Recordset Object. Hiermee kan je de records verdelen over meerdere pagina's ook geen probleem dus.

[quote]
En hoe geef ik een variabele de waarde van de naam van de tekstbox, dus bv record32 ipv de inhoud hiervan??
[quote]
:? Erh. De naam was toch bedoeld om aan te geven welke tekstbox je gebruikt?
Alle namen van alle form-objecten kan je opvragen met:
code:
1
2
3
For Each item in Request.Form
    Response.write item
Next

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Zet dit stukje code eens op je pagina waar je wilt kijken wat er is ingevuld. Waarschijnlijk is het dan duidelijker hoe je te werk moet gaan.
code:
1
2
3
4
5
<%
For Each Item In Request.Form
    Response.Write Item & ": " & Request.Form(Item) & "<BR>" & vbNewLine
Next
%>

Item geeft de naam van het textveld die jij er zelf aan hebt gegeven (vb het ID nummer van dat record). Request.Form(Item) geeft de value van dat textveld weer, dus wat er is ingevuld.

Kijk anders eens hier voor een uitleg wat er gebeurd.

  • .GoO
  • Registratie: September 2001
  • Laatst online: 26-08 10:06
Op dinsdag 11 juni 2002 17:57 schreef KuiF33nD het volgende:
Zet dit stukje code eens op je pagina waar je wilt kijken wat er is ingevuld. Waarschijnlijk is het dan duidelijker hoe je te werk moet gaan.
code:
1
2
3
4
5
<%
For Each Item In Request.Form
    Response.Write Item & ": " & Request.Form(Item) & "<BR>" & vbNewLine
Next
%>

Item geeft de naam van het textveld die jij er zelf aan hebt gegeven (vb het ID nummer van dat record). Request.Form(Item) geeft de value van dat textveld weer, dus wat er is ingevuld.

Kijk anders eens hier voor een uitleg wat er gebeurd.
Krijg het nog steeds niet werkend :( Heb nu bij de tekstbox
code:
1
<input type=text name="txt<%= rst("Nr") %>" size=2 maxlength=3>

En dan op de 2e pagina
code:
1
2
3
4
5
For Each Item In Request.Form

    Response.Write Item & ": " & Request.Form(Item) 

Next

Maar hij laat niks zien.. Dit zou dan toch moeten werken??

Verwijderd

Op wat voor manier verstuur je het formulier? Dus wat geef je bij method weer? Dit moet namelijk wel post zijn en niet get.
code:
1
<form name="producten" action="pagina2.asp" method="post">

  • .GoO
  • Registratie: September 2001
  • Laatst online: 26-08 10:06
Op dinsdag 11 juni 2002 19:15 schreef KuiF33nD het volgende:
Op wat voor manier verstuur je het formulier? Dus wat geef je bij method weer? Dit moet namelijk wel post zijn en niet get.
code:
1
<form name="producten" action="pagina2.asp" method="post">
Post natuurlijk.. Maar enig idee waarom het niet werkt, doe ik soms iets heel erg fout??

Verwijderd

Onderstaande werkt bij mij goed. Na het invullen en submitten krijg ik de veldnamen te zien en hun value.
code:
1
2
3
4
5
6
7
8
9
10
11
12
<form method="post">
    <input type="text" name="id_1"><br>
    <input type="text" name="id_2"><br>
    <input type="Text" name="id_3"><br>
    <input type="submit">   
</form>

<%
For Each Item In Request.Form
    Response.Write Item & "= " & Request.Form(Item) &"<br>"
Next
%>

Dit letterlijk even overnemen en opslaan als asp pagina.

  • .GoO
  • Registratie: September 2001
  • Laatst online: 26-08 10:06
Op dinsdag 11 juni 2002 19:59 schreef KuiF33nD het volgende:
Onderstaande werkt bij mij goed. Na het invullen en submitten krijg ik de veldnamen te zien en hun value.
code:
1
2
3
4
5
6
7
8
9
10
11
12
<form method="post">
    <input type="text" name="id_1"><br>
    <input type="text" name="id_2"><br>
    <input type="Text" name="id_3"><br>
    <input type="submit">   
</form>

<%
For Each Item In Request.Form
    Response.Write Item & "= " & Request.Form(Item) &"<br>"
Next
%>

Dit letterlijk even overnemen en opslaan als asp pagina.
Ah ik vat 'm nu en heb het ook werkend, thanks :)

Nu alleen nog 1 klein vaag dingetje..
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Dim Item, Aantal

   For Each Item In Request.Form
    
     Aantal = Request.form(item)
     If isnumeric(Aantal) = True then
      If Aantal > 0 then 

     Response.Write Date &"<BR>"
     Response.Write Item & " = " & Request.Form(Item) &"<BR><BR>"
      
     rst.addnew
     rst("record1") = "1"
     rst("datum1") = date
     rst("datum2") = date
     rst("record2") = Session("Record2")
     rst("record3") = "0"
     rst.update

     End if
     End if

   Next

Hij geeft nu heel netjes de datum met het nummer en het aantal erachter, maar hij zet niks in de DB??? Hoe kan dat? code is toch goed, of zie ik weer iets doms over het hoofd?

  • .GoO
  • Registratie: September 2001
  • Laatst online: 26-08 10:06
Aangezien ik er nog steeds niet uit ben nog maar ff een keer vragen.. Alles werkt nu goed alleen hij zet niks in de DB?? Connectie is goed, geeft geen error.. Iemand een idee?? Ergens klein typefoutje ofzo?? Ik zie het niet :(

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 09:41

gorgi_19

Kruimeltjes zijn weer op :9

Als je 2 uur geen antwoord hebt gehad, hoef je je thread niet direct omhoog te schoppen. Mensen hebben ook nog een sociaal leven...;)

Of je een antwoord krijgt op je vraag waarom je connectie het niet doet, betwijfel ik. Ik mis namelijk de hele connectie-code.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • .GoO
  • Registratie: September 2001
  • Laatst online: 26-08 10:06
Op woensdag 12 juni 2002 00:03 schreef gorgi_19 het volgende:
Als je 2 uur geen antwoord hebt gehad, hoef je je thread niet direct omhoog te schoppen. Mensen hebben ook nog een sociaal leven...;)
Dat kan je nog best eens tegen vallen :P
Of je een antwoord krijgt op je vraag waarom je connectie het niet doet, betwijfel ik. Ik mis namelijk de hele connectie-code.
Bij deze dan
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
<% 

Dim con, rst, str

str = Request.ServerVariables("APPL_PHYSICAL_PATH") & "devvos\db\pp.mdb"

set con = server.CreateObject("ADODB.connection")
con.open "Data Source=" & str & "; Provider=Microsoft.Jet.OleDB.4.0;"

set rst = Server.CreateObject("ADODB.recordset")
rst.open "[Order]", con, 2, 2

%>

  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 04-09 15:19

Jaspertje

Max & Milo.. lief

misschien is het handig om ook ff je insert query te posten..

  • .GoO
  • Registratie: September 2001
  • Laatst online: 26-08 10:06
Op woensdag 12 juni 2002 08:26 schreef Jaspertje het volgende:
misschien is het handig om ook ff je insert query te posten..
Had ik hierboven al gepost... Ging om deze dus:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Dim Item, Aantal
   For Each Item In Request.Form
    
     Aantal = Request.form(item)
     If isnumeric(Aantal) = True then
      If Aantal > 0 then 

     Response.Write Date &"<BR>"
     Response.Write Item & " = " & Request.Form(Item) &"<BR><BR>"
      
     rst.addnew
     rst("record1") = "1"
     rst("datum1") = date
     rst("datum2") = date
     rst("record2") = Session("Record2")
     rst("record3") = "0"
     rst.update

     End if
     End if

   Next
Pagina: 1