Avatar billede lund_dk Praktikant
07. juni 2007 - 15:52 Der er 17 kommentarer og
1 løsning

Lav en løkke og gem i database

Jeg har i en form, 4 tekst area som kan se sådan her ud

<textarea name="phrase_3"></textarea>
<textarea name="phrase_4"></textarea>
<textarea name="phrase_"></textarea>
<textarea name="phrase_"></textarea>

de textarea som har et nummer bag sig, er oprettet i tabellen [phrasetekster] og nummeret er deres ID i tabellen.

De som ikke har et tal bag sig, de er ikke oprettet i [phrasetekster]

Dvs, når jeg submitter formen, skal jeg have lavet en løkke der tager mine 4 textarea og skal gøre følgende:

1. er der ID efter phrase_, opdater teksten i [phrasetekster]
2. er der ikke id efter phrase_ , tjek om der er skrevet tekst, hvis der er det, så gem det i ny post i [phrasetekster] hvis ingen tekst, gør intet.


Nogen der kan hjælpe mig med det..?
Avatar billede Slettet bruger
07. juni 2007 - 19:38 #1
ja da her har du løsningen til en access database og så går vi ud fra at det er alle tingene i din formular som skal i betragtning...:


<html>
<body>
<%
if (request.form<>"" and isnull(request.form)=False) then

tekst = request.form
strT = split(tekst,"&")
for a=0 to ubound(strT)
vaerdi = (split(strT(a),"=")(1))
if (vaerdi<>"" and isnull(vaerdi)=False) then
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=c:\DinDatabase.mdb"
id = (split(strT(a),"_")(1))
if isnumeric(id) then
conn.execute("update phrasetekster set phrasetekster='" & vaerdi & "' where id='" & id & "'")
else
conn.execute("insert into phrasetekster (phrasetekster) values ('" & vaerdi & "')")
end if
conn.close
set conn=nothing
end if
next
end if
%>
<form action="<%=request.servervariables("script_name")%>" method="post">
<textarea name="phrase_3"></textarea>
<textarea name="phrase_4"></textarea>
<textarea name="phrase_"></textarea>
<textarea name="phrase_"></textarea>
<input type="submit" value="submit">
</form>
</body>
</html>

\Dan
Avatar billede lund_dk Praktikant
07. juni 2007 - 19:51 #2
Ser lovende ud..
men har lige glemt en ting


<input type="hidden" value="45" name="sprog">
<textarea name="phrase_3"></textarea>

<input type="hidden" value="46" name="sprog">
<textarea name="phrase_4"></textarea>

<input type="hidden" value="47" name="sprog">
<textarea name="phrase_"></textarea>

<input type="hidden" value="44" name="sprog">
<textarea name="phrase_"></textarea>

Jeg skal have værdien af sprog med, sorry..

Kan du klare den også?
Avatar billede lund_dk Praktikant
07. juni 2007 - 20:03 #3
Og kan se den opdaterer ikke oprettet felt, men tilføjer et nyt..
Avatar billede lund_dk Praktikant
07. juni 2007 - 20:06 #4
Du får lige hele koden, så er det måske nemmere at gennemskue for dig..

<table cellpadding="0" cellspacing="0">
<%
Set rsSprog= Conn.Execute("select * from sprog order by tekst")
Do until rsSprog.eof

Set rsTekster= Conn.Execute("select * from phrasetekster where phrase = " & rsPhrase("id") & " and sprogkode = " & rsSprog("sprogkode") & "")
if rsTekster.eof or rsTekster.bof then
Tekst = ""
phrasetekstid = ""
else
Tekst = rsTekster("tekst")
phrasetekstid = rsTekster("id")
end if

%>
<tr>
    <td>
        <b><%=rsSProg("tekst")%></b><br/>
        <input type="hidden" name="sprog" value="<%=rsSprog("id")%>">
        <textarea name="phrasetekst_<%=phrasetekstid%>" cols="50" rows="4"><%=tekst%></textarea>    </td>
</tr>
<%
rsTekster.close
set rsTekster = nothing

rsSprog.movenext
loop
rsSprog.close
set rsSprog = nothing
%>
<tr>
    <td style="text-align:right"><input type="submit" value="Gem phrasetekster"></td>
</tr>
</table>
Avatar billede Slettet bruger
07. juni 2007 - 20:28 #5
- okay... det var en fejl jeg fik lavet her med id'en den er rettet nu og så skal det så således ud:

<html>
<body>
<%
if (request.form<>"" and isnull(request.form)=False) then

tekst = request.form
strT = split(tekst,"&")
for a=0 to ubound(strT)
vaerdi = (split(strT(a),"=")(1))
if (vaerdi<>"" and isnull(vaerdi)=False) then
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=c:\DinDatabase.mdb"
id = (split(strT(a),"_")(1))
id = (split(id,"=")(0))
if isnumeric(id) then
conn.execute("update phrasetekster set phrasetekster='" & vaerdi & "' where id='" & id & "'")
else
conn.execute("insert into phrasetekster (phrasetekster) values ('" & vaerdi & "')")
end if
conn.close
set conn=nothing
end if
next
end if
%>
<form action="<%=request.servervariables("script_name")%>" method="post">
<textarea name="phrase_3"></textarea>
<textarea name="phrase_4"></textarea>
<textarea name="phrase_"></textarea>
<textarea name="phrase_"></textarea>
<input type="submit" value="submit">
</form>
</body>
</html>

\Dan
Avatar billede lund_dk Praktikant
07. juni 2007 - 21:01 #6
Fejl:
Indekset er uden for området: '[number: 1]'

ved linien: vaerdi = (split(strT(a),"=")(1))
Avatar billede Slettet bruger
07. juni 2007 - 21:59 #7
- okay... det kan jeg ikke forstå! Jeg har selv tjekket dette script på min egen server nu og der virker det fint...

Prøv at tjekke det jeg har skrevet til dig - og ikke andet!

\Dan
Avatar billede lund_dk Praktikant
08. juni 2007 - 10:45 #8
OK

Det er næsten kommet til at virke nu

Jeg har været nød til at lave lidt ændringer i dit script, da tabelnavne mv. ikke var korrekte, og databasen er åbnet et andet sted..

Så lige nu ser det sådan her ud.



if (request.form <> "" and isnull(request.form)=False) then

tekst = request.form
strT = split(tekst,"&")
for a=0 to ubound(strT)
vaerdi = (split(strT(a),"=")(1))
if (vaerdi<>"" and isnull(vaerdi)=False) then
strid = (split(strT(a),"_")(1))
strid = (split(strid,"=")(0))
if isnumeric(id) then
Conn.Execute("update PhraseTekster set tekst='" & vaerdi & "' where id=" & strid & "")
else
Conn.Execute("insert into phrasetekster (tekst) values ('" & vaerdi & "')")
end if
end if
next

response.redirect "./?S=Phrase&id=" & id
end if


Den opdaterer fint eksisterende felter - men taster jeg tekst ind i felt som skal oprettes, får jeg fejlen:

Der er en syntaksfejl, fordi der mangler en operator. i forespørgselsudtrykket "id=".
Avatar billede lund_dk Praktikant
08. juni 2007 - 10:46 #9
og det er i denne linie fejlen forekommer:
Conn.Execute("update PhraseTekster set tekst='" & vaerdi & "' where id=" & strid & "")
Avatar billede Slettet bruger
08. juni 2007 - 22:36 #10
OK! Så prøv med:
Conn.Execute("update PhraseTekster set tekst='" & vaerdi & "' where id='" & strid & "'")

\Dan
Avatar billede lund_dk Praktikant
08. juni 2007 - 22:40 #11
Det dutter ikke.. mit ID felt i databasen, er af typen tal.
Avatar billede lund_dk Praktikant
08. juni 2007 - 22:44 #12
Jeg prøvede lige, hvor alle textarea hedder phrase_ - hvor ingen af dem er oprettet i phrasetekster, der kommer fejlen også..

Dvs at den SQL update afvikles, selvom der faktisk ikke er nogen post at opdatere?
Avatar billede lund_dk Praktikant
08. juni 2007 - 22:48 #13
nej vent, min fejl.. det virker sgu da. :)

Kan det så lade sig gøre, som skrevet ovenfor, at få et hidden felt med ind i oprettelsen af en ny post?


<input type="hidden" value="45" name="sprog">
<textarea name="phrase_3"></textarea>

<input type="hidden" value="46" name="sprog">
<textarea name="phrase_4"></textarea>

<input type="hidden" value="47" name="sprog">
<textarea name="phrase_"></textarea>

<input type="hidden" value="44" name="sprog">
<textarea name="phrase_"></textarea>
Avatar billede Slettet bruger
08. juni 2007 - 23:35 #14
hej igen


tjae det kan du da godt det med det hidden-felt...

Man kan vel bare lave en undtagelse i "for"-sætningen sådan at den ikke tager dette med hvis det er statisk det som dit hidden-felt hedder...

\Dan
Avatar billede lund_dk Praktikant
08. juni 2007 - 23:44 #15
jeg må indrømme jeg er en kegle til arrys osv, så aner ikke hvor jeg skal starte eller slutte..

vil du hjælpe mig på vej her også? Giver gernelidt flere point hvis det er :)
Avatar billede Slettet bruger
08. juni 2007 - 23:47 #16
tjae.. det kan jeg godt... men det bliver ikke lige i aften... Men sådan er det jo når ens arbejde kalder.... hehe

- men hvis du vil acceptere dette svar og så fortælle mig hvad dit hidden-felt skal hedde så vil jeg gerne hjælpe dig videre...

\Dan
Avatar billede lund_dk Praktikant
08. juni 2007 - 23:53 #17
er bare i orden.. haster heller ikke :)

I databasen skal mine værdier ind i kolonnen "sprog"
og felterne ser ud som de gør her

<input type="hidden" value="45" name="sprog">
<textarea name="phrase_3"></textarea>

<input type="hidden" value="46" name="sprog">
<textarea name="phrase_4"></textarea>

<input type="hidden" value="47" name="sprog">
<textarea name="phrase_"></textarea>

<input type="hidden" value="44" name="sprog">
<textarea name="phrase_"></textarea>

God arbejdslyst :D
Avatar billede lund_dk Praktikant
11. juni 2007 - 09:46 #18
Nå hr. Nielsen

Vil nødig presse mig på, men kunne du hjælpe mig lidt videre..?
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