Avatar billede jems Nybegynder
01. december 2001 - 12:03 Der er 20 kommentarer og
1 løsning

Kan man det??

På min hjemmeside http://jens.lutzhoft.dk under menuen til venstre kan man klikke på nogle spørgeskemaer (brug test).
Når et spørgeskema er besvaret eller svar er slettet, bliver menu-fram\'en opdateret for at opdatere hvor mange svar der er til skemaet...
Men er det muligt kun at opdatere antal svar? (der hvor der står \"0 svar\" eller \"x svar\")
Med <div> eller sådan noget...
Jens
Avatar billede tobias_cool Nybegynder
01. december 2001 - 14:42 #1
Hvis det skal gemmes så skal du bruge PHP (det er i hvert fald en god idé) det er nemt hvis du bare skal lagre Ja Nej og det er ikke meget sværere med flere svar, hvis man altså kan PHP, og det kan jeg ikke.
Men du skal ikke studere meget på
www.phpbuilder.dk
www.php.dk
og lidt i fil systemet før du kan
og til lagring bruger du bare en simpel cookie
Avatar billede Slettet bruger
02. december 2001 - 16:25 #2
Jeg tror ikke helt tobias_cool har forstået spørgsmålet.
Men i hvert fald bliver du nødt til at lave en iframe med antal svar i, hvis du kun vil opdatere det. Lav evt. en ekstra frame til punktet \"Brugerundersøgelser\". Så bliver du ikke nødt til at opdatere så meget (du skal heller ikke til at rette i mit script, så)!
Avatar billede jems Nybegynder
04. december 2001 - 17:54 #3
Det virker fint nok :)
Men er det ikke muligt kun at opdatere en <div>?
Avatar billede Slettet bruger
05. december 2001 - 16:39 #4
Nej, da du ikke kan loade et dokument i en div. I NS4 kan du bruge funktionen load(url) på et <layer>, men i senere versioner og i IE er det umuligt.
Men du kan evt. lave en skjult frame, der loader oplysningen for dig og så skriver til div\'en ved at ændre dens innerHTML, eller i NS4 skrive med document.write() til et layer. Fx:

<!-- Den skjulte frame -->
<html>
<head>
<script>
antal = //Her udfylder noget server-side scripting variablen!
if (document.getElementById) parent.menu.document.getElementById(\"antalsvar\").innerHTML = antal;
else if (document.all) parent.menu.document.all[\"antalsvar\"].innerHTML = antal;
else if (document.layers) parent.menu.document.nsantalsvar.document.write(antal);
</script>
</head>
<body>
</body>

<!-- Og i din \"menu-frame\" -->
Brugerundersøgelser:<br>
WebSpørgeskema &nbsp;&nbsp;&nbsp;&nbsp; <span id=\"antalsvar\"><layer id=\"nsantalsvar\"></layer></span>
</html>

Men så skal du rette dit script fra popup\'en, så den opdater den skjulte frame i stedet for menu-framen!
Avatar billede jems Nybegynder
05. december 2001 - 17:14 #5
ok, hvad skal jeg så ændre i min popup?
Avatar billede Slettet bruger
05. december 2001 - 20:32 #6
I popup\'ens formular, \"visSkema\", skal der i onSubmit stå:
top.opener.parent.skjultFrame.location.reload(true);
\"skjultFrame\" er så navnet på den usynlige ramme!
Avatar billede jems Nybegynder
06. december 2001 - 12:35 #7
Tusind tak for hjælpen, nu virker det :)
Af en eller anden grund skulle den skjulte frame refreshes for at det virkede, så jeg satte onload=\"parent.skjultFrame.location.reload(true);\"
ind i body i menuen.

Mvh
Avatar billede jems Nybegynder
06. december 2001 - 15:38 #8
Hov der var jeg vidst lidt for hurtig...
For jeg prøvede lige på en anden masike og der kommer der et popup vindue hvor man skal trykke \"No for at komme videre\" :(
Den skriver \"parent.menu.document.getElementById(...) is null or not an object\"
øv :(
Avatar billede Slettet bruger
06. december 2001 - 16:27 #9
Du har også kaldt <span>\'erne for \"antasvar0\" og \"antalsvar1\", og så går det jo ikke!
Du kan kun bruge én af <span>\'erne (og den skal kun hedde \"antalsvar\") til opgaven, ellers må du lave scriptet om!
Avatar billede jems Nybegynder
06. december 2001 - 16:36 #10
Ved hjælp af ASP bliver følgende kode genereret:

<html>
<head>
<script>
function antalSvar(){
antal0 = 11
if (document.getElementById) parent.menu.document.getElementById(\'antalsvar0\').innerHTML = antal0;
antal1 = 11
if (document.getElementById) parent.menu.document.getElementById(\'antalsvar1\').innerHTML = antal1;
}
</script>

</head>
<body bgcolor=\"#FFFFFF\" leftmargin=\"0\" topmargin=\"0\" marginwidth=\"0\" marginheight=\"0\" onLoad=\"antalSvar()\" text=\"#000000\">
</body>
</html>


ASP kode:
<!-- #include file=\"../include/DBConnection.asp\" -->
<html>
<head>
<%
Response.Expires=-1
AktivString = \"SELECT * FROM Spoergeskema WHERE Aktiv = true\"
Set AktivStringRS = objConnSkema.Execute(AktivString)

While not AktivStringRS.EOF
    SQStatestik = \"SELECT AntalBesvarelser FROM Statestik WHERE Spoergeskema_id=\"&AktivStringRS(\"Spoergeskema_id\")&\"\"
    Set RSSQStatestik = objConnSkema.Execute(SQStatestik)
   
    tempAntalSvar = tempAntalSvar+\"\"&RSSQStatestik(\"AntalBesvarelser\")&\",\"
   
  AktivStringRS.MoveNext
wend

Response.Write \"<script>\"&VbCrLf
Response.Write \"function antalSvar(){\"&VbCrLf
    AntalSvarArray = Split(tempAntalSvar, \",\", -1, 1)
    For countTemp = 0 to UBound(AntalSvarArray)-1
    Response.Write \"antal\"&countTemp&\" = \"&AntalSvarArray(countTemp)&\"\"&VbCrLf
    Response.Write \"if (document.getElementById) parent.menu.document.getElementById(\'antalsvar\"&countTemp&\"\').innerHTML = antal\"&countTemp&\";\"&VbCrLf
    \'Response.Write \"else if (document.all) parent.menu.document.all[\'antalsvar\"&countTemp&\"\'].innerHTML = antal\"&countTemp&\";\"&VbCrLf
    next
Response.Write \"}\"&VbCrLf
Response.Write \"</script>\"&VbCrLf
%>
</head>
<body bgcolor=\"#FFFFFF\" leftmargin=\"0\" topmargin=\"0\" marginwidth=\"0\" marginheight=\"0\" onLoad=\"antalSvar()\" text=\"#000000\">
</body>
</html>

Avatar billede Slettet bruger
06. december 2001 - 16:46 #11
Jeg gætter på, at det er fordi \"skjultFrame\" bliver loadet før \"menu\", og derfor kan den jo ikke finde \"antalsvar0\" eller 1! Fix den, fx ved at sige:

(Ret det til i dit ASP-dokument)
<script>
antal = //Her udfylder noget server-side scripting variablen!
if (parent.menu) {
if (document.getElementById) parent.menu.document.getElementById(\"antalsvar\").innerHTML = antal;
else if (document.all) parent.menu.document.all[\"antalsvar\"].innerHTML = antal;
else if (document.layers) parent.menu.document.nsantalsvar.document.write(antal);
}
</script>
Avatar billede jems Nybegynder
06. december 2001 - 18:32 #12
Jeg synes desværre stadigvæk ikke det virker :(
Avatar billede jems Nybegynder
06. december 2001 - 19:07 #13
Kan man kalde scriptet i den skjulte frame i menufram\'en?
Så kan man jo bare kalde det efter <span>\'erne..
Avatar billede Slettet bruger
06. december 2001 - 22:21 #14
Prøv at sætte dette script i menu-framen:

<script>
function opdaterSpans(antal0,antal1) {
if (document.getElementById) {
document.getElementById(\"antalsvar0\").innerHTML = antal0;
document.getElementById(\"antalsvar1\").innerHTML = antal1;
}
else if (document.all) {
document.all[\"antalsvar0\"].innerHTML = antal0;
document.all[\"antalsvar1\"].innerHTML = antal1;
}
}
</script>

I din skjulte frame skal du så bare sætte følgende script ind:

<script>
function opdaterUndersogelse() {
if (parent.menu) {
antalsv0 = x;//ASP igen!
antalsv1 = x;//ASP igen, igen!
parent.menu.opdaterSpans(antalsv0,antalsv1);
}
}
</script>
<body onLoad=\"opdaterUndersogelse();\">
Avatar billede Slettet bruger
06. december 2001 - 22:22 #15
Og så skal du lige huske, at det er din skjulte frame, der skal opdateres ved tryk på \"Udfør\", som jeg før har beskrevet!
Avatar billede jems Nybegynder
07. december 2001 - 11:17 #16
Nu kommer der en ny fejlmeddelelse:
Object doesn\'t support this property or method
ved denne linie:
parent.menu.opdaterSpans(antalsv0,antalsv1);
Men antal svar bliver opdateret som de skal...
øv :(
Avatar billede Slettet bruger
07. december 2001 - 15:43 #17
Så prøv at bytte:
if (parent.menu) {
ud med:
if (parent.menu.opdaterSpans) {
eller:
if (parent.menu.opdaterSpans()) {

Men jeg må indrømme, at den er tricky...
Avatar billede jems Nybegynder
07. december 2001 - 16:31 #18
Juuhhuuuu!!!
Nu virker det!! :)
Der skulle stå:
if (parent.menu.opdaterSpans) {

Tusind tak for hjælpen :)

Mvh
Jens
Avatar billede Slettet bruger
08. december 2001 - 20:06 #19
Det var fedt! Nu kan jeg sove roligt igen! ;-)
Avatar billede Slettet bruger
08. december 2001 - 20:08 #20
Du opdaterer stadigvæk ikke den skjulte frame, og så har scriptet jo ingen virkning!
I formularens HTML-tag:

onSubmit=\"top.opener.parent.skjultFrame.location.reload(true);\"
Avatar billede jems Nybegynder
08. december 2001 - 21:39 #21
Det er fordi jeg har sat koden ind ved submit knappen i stedet:
<input type=\"button\" name=\"Submit\" onClick=\"parent.mainFrame.visSkema.submit(); top.opener.parent.skjultFrame.location.reload(true);\" value=\"Udf&oslash;r\">

Den kode der var i <body>-tag\'en var noget jeg havde glemt at slette... (ups)

Endnu en gang tak for hjælpen :)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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