Avatar billede wolfgang Praktikant
08. april 2005 - 10:08 Der er 25 kommentarer og
1 løsning

Flere forms på samme side

Hej,
Jeg har en side med et DB udtræk, der udskriver alle poster i en tabel. For hver post, vil jeg gerne give brugeren mulighed for at kommenterer posten.

Dette er klargjort således:
For hvert udtræk har jeg lavet et skjult DIV, der kan klikkes til og fra. Her ligger en form med et tekstarea og en Submit knap.

Mit problem er nu, at jeg ikke kan poste forminput til databasen.
Mit bud er, at det er fordi at der er flere forme på samme side, og at den blot tager den første, som så er tom.

Har I et bud på en løsning?

Glæder mig til at høre fra Jer.

MVH
Wolfgang
Avatar billede busschou Praktikant
08. april 2005 - 10:13 #1
ja hvis alle forms har samme navn? så tager den jo blot den første
Har du noget kode du kan vise?
Avatar billede vbcoder Nybegynder
08. april 2005 - 10:21 #2
Hej

Når du udskriver din side med posterne i tabellen skal du i den form der ligger i din DIV lægge din forms action medsende id'en for den aktuelle post

eks.

<form action="fil.asp?id=<%=rs.recID%>>
<textarea name="kommentar" type="textarea"></textarea>
</form>

de data du får med vil være den postede form

du vil så kunne bruge
request.querystring.item("id") til at hente din recID
request.form.item("kommentar") til at hente brugerens kommentar

derefter kan du poste data til databasen

sql = "Update [tabel] set [kommentar] = " & request.form.item("kommentar") & " where ID = " & request.querystring.item("id")
Avatar billede wolfgang Praktikant
08. april 2005 - 10:23 #3
Mjallow - Det kan du tro.

Her skrives formen ud:
<div class="ReviewComment" id="RI_<%= rsReviewSQL2("ReviewID")%>" style="visibility:hidden;position:relative;display:none;">
<table width="480" border="0" cellpadding="0" cellspacing="0" class="GFcontentTable">
<form action="review.asp?DoComment=Yes&RI=<%= rsReviewSQL2("ReviewID")%>" method="post">
<tr>
<td width="10"></td>
<td scope="col">Skriv din kommentar til den ovenstående anmeldelse her<br>
<textarea name="RComment" cols="85" rows="4" class="formField" id="Comment"></textarea></td>
</tr>
<tr>
<td width="10"></td>
<td scope="col"><input name="Submit" type="submit" class="button" value=" Gem ">&nbsp;<input name="Button" type="button" class="button" value=" Luk " onClick="java script:DoComment('RI_<%= rsReviewSQL2("ReviewID")%>');"></td>
</tr>
</form>
</table>
</div>

Her skrives input til DB:
If Request.QueryString("DoComment") = "Yes" Then
strSQL1 = "insert into tbl_ReviewComments (ReviewID, RComment, MemberID) values("& request.querystring("RI") &",'"& request.Form("RComment") &"',"& Session("UserID") &")"
conn.Execute(strSQL1)
Response.Redirect(Request.ServerVariables("HTTP_REFERER"))
end if

Kunne man evt. give hver form der "loopes" ud, et unikt ID (F.eks. ReviewID), som man så kunne bruge til requeste korrekt med?
Avatar billede wolfgang Praktikant
08. april 2005 - 10:24 #4
-> vbCoder.
Se venligst den nu vedlagte kode :)
Avatar billede skyggen2000 Nybegynder
08. april 2005 - 10:37 #5
hvorfor vil du dynamisk tilføje en form mere til din div, hvis du allivel vil poste hele siden?

Du kan bare tilføje et tekstarea og en submit knap uden en ekstra form.
Avatar billede skyggen2000 Nybegynder
08. april 2005 - 10:38 #6
Man kan også poste multi forms, kan ikke lige huske syntaksen, for har aldrig haft brug for det.
Avatar billede skyggen2000 Nybegynder
08. april 2005 - 10:48 #7
mener man skal tilføje enctype="multiform" til den form, der submittes, så poster den hele dynen. Er dog ikke 100%
Avatar billede skyggen2000 Nybegynder
08. april 2005 - 10:48 #8
Det virker dog som om du tilføjet et input felt inde i en form, og så er der ingen grund til at have flere.
Avatar billede wolfgang Praktikant
08. april 2005 - 10:49 #9
Hej Skyggen2000,
Vil du ikke komme et eksempel på din løsning?
"Du kan bare tilføje et tekstarea og en submit knap uden en ekstra form."
Avatar billede wolfgang Praktikant
08. april 2005 - 10:51 #10
Her er lige et eksempel på hvordan et udtræk kan se ud.
- Det kan muligvis give jer et bedre overblik.

Udtræk 1 fra DB
(Skjult formfelt til kommentar)

Udtræk 2 fra DB
(Skjult formfelt til kommentar)

Og så frem deles...
Avatar billede skyggen2000 Nybegynder
08. april 2005 - 11:15 #11
du skriver:
Dette er klargjort således:
For hvert udtræk har jeg lavet et skjult DIV, der kan klikkes til og fra. Her ligger en form med et tekstarea og en Submit knap.

Har du prøvet at fjerne form element i dette sammenhæng? Det virker som om du prøver at have en form i en form...
Avatar billede wolfgang Praktikant
08. april 2005 - 11:18 #12
Jeg prøver lige igen :)

Dette er den kode der skal bruges:

<div class="ReviewComment" id="RI_<%= rsReviewSQL2("ReviewID")%>" style="visibility:hidden;position:relative;display:none;">
<table width="480" border="0" cellpadding="0" cellspacing="0" class="GFcontentTable">
<form action="review.asp?DoComment=Yes&RI=<%= rsReviewSQL2("ReviewID")%>" method="post">
<tr>
<td width="10"></td>
<td scope="col">Skriv din kommentar til den ovenstående anmeldelse her<br>
<textarea name="RComment" cols="85" rows="4" class="formField" id="Comment"></textarea></td>
</tr>
<tr>
<td width="10"></td>
<td scope="col"><input name="Submit" type="submit" class="button" value=" Gem ">&nbsp;<input name="Button" type="button" class="button" value=" Luk " onClick="java script:DoComment('RI_<%= rsReviewSQL2("ReviewID")%>');"></td>
</tr>
</form>
</table>
</div>

Ovenstående udskrives for/til hver post i mit loop.
Avatar billede skyggen2000 Nybegynder
08. april 2005 - 11:27 #13
har du prøvet at tilføje enctype="multiform" dvs.


<form name="frm_=<%= rsReviewSQL2("ReviewID")%>" action="review.asp?DoComment=Yes&RI=<%= rsReviewSQL2("ReviewID")%>" method="post" enctype="multiform">

Hvad med også at tilføje et name til din form, så der er styr på dem.

Du kunne også fjerne dit form element som jeg siger, og pakke det hele ind i en form.
Avatar billede skyggen2000 Nybegynder
08. april 2005 - 11:27 #14
Dvs. inden du kører dit loop.
Avatar billede wolfgang Praktikant
08. april 2005 - 11:32 #15
-> Skyggen2000
Du kunne også fjerne dit form element som jeg siger, og pakke det hele ind i en form.

Hvordan kan jeg så submitte det ene form felt, ud af f.eks. 100?
Avatar billede skyggen2000 Nybegynder
08. april 2005 - 11:35 #16
eftersom du blot har dem i en div, vil alle alligevel blive postet... Ellers skal du dele det op i iframes, i stedet for div'er.

Dog skal din review.asp, så kunne skrive præcis det samme som der stod før.

ved ikke hvad den gør nu, men der er noget der ikke hænger sammen.
Avatar billede vbcoder Nybegynder
08. april 2005 - 13:37 #17
Nu kiggede jeg lige på din kode

Der er en lille tweak i asp recordset og det er at du kan kun udtrække værdien en gang.

du trækker værdien 3 gange - dvs at anden og tredje gang du udskriver dit rec_id vil det være tomt.

hvis du opretter en variabel fx. lngRecID og tilskriver den din reviewID kan du bruge den flere gange.

Jeg kan dog ikke helt se hvorfor du du har både et javascript og en post af formen men det er nok bare mig ;-)

<%lngRecID = rsReviewSQL2("ReviewID")%>
<div class="ReviewComment" id="RI_<%=lngRecID%>" style="visibility:hidden;position:relative;display:none;">
<table width="480" border="0" cellpadding="0" cellspacing="0" class="GFcontentTable">
<form action="review.asp?DoComment=Yes&RI=<%=lngRecID%>" method="post">
<tr>
<td width="10"></td>
<td scope="col">Skriv din kommentar til den ovenstående anmeldelse her<br>
<textarea name="RComment" cols="85" rows="4" class="formField" id="Comment"></textarea></td>
</tr>
<tr>
<td width="10"></td>
<td scope="col"><input name="Submit" type="submit" class="button" value=" Gem ">&nbsp;<input name="Button" type="button" class="button" value=" Luk " onClick="java script:DoComment('RI_<%=lngRecID%>');"></td>
</tr>
</form>
</table>
</div>
Avatar billede wolfgang Praktikant
08. april 2005 - 14:41 #18
-> vbCoder
Jeg kan ikke nikke genkendende til det du beskriver.
Pt. bliver rsReviewSQL2("ReviewID") udskrevet 5 gange i loop - uden problemer.
- Jeg har heller ikke oplevet det problem før.

Det kan tænkes at jeg ikke har beskrevet mit problem tydeligt nok og at I derfor misforstår mit spørgsmål.

Jeg vender tilbage en reformulering senere.

Beklager ulejligheden
Avatar billede skyggen2000 Nybegynder
08. april 2005 - 15:38 #19
Prøv at ligge et link til din side så vi kan se hvad du prøver på, det ville gøre det hele lidt nemmere.
Avatar billede wolfgang Praktikant
08. april 2005 - 18:21 #20
Dette link er til et test-site:
http://tmp.gearfreak.dk/review.asp?ManID=8&ModelID=52

Det kan give en bedre ide om, hvad det er jeg snakker om :)

MVH
Wolfgang
Avatar billede wolfgang Praktikant
09. april 2005 - 10:39 #21
Kunne det bruges?
Avatar billede vbcoder Nybegynder
09. april 2005 - 13:05 #22
hej igen - jeg kan ikke udfra dit link se hvad der går galt men det ligner et problem jeg har haft med at få indholdet af en form med - noget af indholdet ville ikke med. I mit tilfælde havde det noget at gøre med at jeg havde rettet input navn og ikke dets id.

din textarea har forskellige tekst i name og id

<textarea name="RComment" cols="85" rows="4" class="formField" id="Comment"></textarea>

kan det være det?
Avatar billede vbcoder Nybegynder
09. april 2005 - 13:07 #23
jeg tror at hvis du retter id="RComment" så virker det
Avatar billede wolfgang Praktikant
09. april 2005 - 16:27 #24
Hej vbCoder, Så spiller det! Tusind tak for din indsats og dit skarpe øje.
- Lidt pinligt at jeg ikke havde set den fodfejl.

Opret venligst et svar, så du kan få dine velfortjente pointz :)
Avatar billede vbcoder Nybegynder
10. april 2005 - 11:57 #25
oki - det en snot irriterende lille ting man kan bruge lang tid på
Avatar billede wolfgang Praktikant
10. april 2005 - 13:53 #26
Yes - Det er jo næsten pinligt :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester