Avatar billede tosa Nybegynder
23. maj 2003 - 01:18 Der er 14 kommentarer og
1 løsning

Gemme data i knapper som ikke er submit

Nedenstående script skal bruges til at danne sæder i en biografsal. Mit problem er bare, at jeg ikke ved hvordan man gemmer data fra de sæder man har klikket på (jeg har, som det fremgår, prøvet at bruge et array of booleans). Disse data skal sendes videre til en java-servlet via getParameter(). Der skal ikke refreshes ved hvert klik på et sæde.


<SCRIPT LANGUAGE="JavaScript">

seats = new Array(100)
res = new Image
res.src = "Chosen.jpg"
avail = new Image
avail.src = "Free.jpg"

function reserveIt(picName)
{
if(document[picName].src == avail.src){
document[picName].src = res.src
seats[picName] = true
}
else
{
document[picName].src = avail.src
return true
}
}

</SCRIPT>


Dette script er brugt i følgende java-kode (med noget Html først:

int test=0;
for (int i=0;i<10;i++){
  for (int j=0;j<10;j++){
      test++;
      String bla="Seat"+test;
      servletOutputStream.print("<TD onClick=\"reserveIt
      ('"+bla+"')\"><img       
      Common.host+":8080/user/torsten/Free.gif\"
      name="+bla+" width=\"40\" height=\"30\"></TD>");
  }
  servletOutputStream.print("</tr><tr>");
}
</TR></TABLE></BODY></HTML>");
Avatar billede roenving Novice
23. maj 2003 - 01:26 #1
Hvordan sender du det til din database-processering ?-)
Avatar billede whynot Nybegynder
23. maj 2003 - 12:17 #2
Hvis jeg forstår dig korrekt - så har du lige så mange knapper som du har stole!?.. og der med ønsker du et array indeholdende data omkring alle stole - inkl. som er trykket på og dem som ikke er trykket på?

Fordi det er nemlig ikke specielt svært.!

følgende kode danner et array af elementer med tilhørende tilmeldingsværdier.

<FORM METHOD=POST name=prototype>
<SCRIPT LANGUAGE="JavaScript">

var tilmeldtestole_array = new Array();

function tilmeld(stolenr) {

tilmeldtestole_array[stolenr] = 'tilmeldt';
prototype.tekstoutput.value = prototype.tekstoutput.value + 'stol ' + stolenr + tilmeldtestole_array[stolenr];
}

</script>
<INPUT TYPE="button" name="1" value="1" onclick="tilmeld(1);"><INPUT TYPE="button" name="2" value="2" onclick="tilmeld(2);"><INPUT TYPE="button" name="3" value="3" onclick="tilmeld(3);"><INPUT TYPE="button" name="4" value="4" onclick="tilmeld(4);">

<TEXTAREA NAME="tekstoutput" ROWS="10" COLS="20"></TEXTAREA>

</FORM>


..... der er faktisk blot ét problem og det er at du bør initialisere array'et så det ingen "tomme" elementer har - det kan javascript nemlig ikke lide ved array gennemløb :)

Jeg håber du kan bruge mit forslag.
Avatar billede tosa Nybegynder
23. maj 2003 - 12:29 #3
Det gør jeg på en anden servlet, med følgende kode:

...
String showID = request.getParameter("showID");
Resultset rs;
for (i=1;i<=100;i++){
    String count ="Seat"+i;
    String check=reg.getParameter(count);
    if (det jeg mangler(sædet er markeret)){
      rs = stmt.executeQuery("UPDATE `Show` SET `" + check + "` = 'TRUE'
      WHERE `showID` = '" + s1 + "';");
    }
}
...

Det skal til denne kode siges, at jeg fra den første servlet sender et hidden field med value=showID
Avatar billede roenving Novice
23. maj 2003 - 12:45 #4
Først ville jeg prøve med (har ikke testet selv) at placere et array som værdi i et hidden field, à la:

document.formNavn.skjultFeltNavn.value=seats

-- det har jeg dog ikke den store tiltro til, men så et 'langsomt' array:

<SCRIPT LANGUAGE="JavaScript">

//seats = new String(100) //ikke nødvendig
for (i=0;i<100;i++)seats+="0"

res = new Image
res.src = "Chosen.jpg"
avail = new Image
avail.src = "Free.jpg"

function reserveIt(picName)
{
num=parseInt(picName.substring(3));// <-- Med udgangspunkt i dit picName bla12
if(document[picName].src == avail.src){
document[picName].src = res.src
seats = seats.substring(0,num)+"1"+seats.substring(num+1)
}
else
{
document[picName].src = avail.src
return true
seats = seats.substring(0,num)+"0"+seats.substring(num+1)
}

}

</SCRIPT>

hth
jes
Avatar billede tosa Nybegynder
23. maj 2003 - 14:50 #5
Begge forslag ser gode ud, men hvordan 'læser' jeg de data der er kommet i arrayet ved submit. Det er lige præcis de data jeg skal bruge til en if-sætning i java i den næste servlet, hvor dette indgår:

if (sædet er markeret){
  rs = stmt.executeQuery("UPDATE `Show` SET `" + check + "` = 'TRUE'
  WHERE `showID` = '" + s1 + "';");
}

jeg har testet document.formNavn.skjultFeltNavn.value=seats som value i et hidden field, men det ser ikke ud til at virke.
Avatar billede roenving Novice
23. maj 2003 - 14:55 #6
Har du prøvet den 'langsomme' ...
Avatar billede tosa Nybegynder
23. maj 2003 - 15:05 #7
ja, hvis du mener for-løkken, men igen, hvordan får jeg outputtet ved submit. (forøvrigt blev jeg nødt til at indkommentere den sætning du skrev ikke var nødvendig, da knapperne ellers ikke virkede).
Avatar billede roenving Novice
23. maj 2003 - 15:14 #8
Hvis du vil have værdien på et bestemt sæde er det

if(seats.charAt(nummer-1)=="1"){ //sædet er besat
Avatar billede tosa Nybegynder
23. maj 2003 - 15:22 #9
ja men hvordan sender jeg seats fra scripten?
Avatar billede roenving Novice
23. maj 2003 - 15:37 #10
Henter og gemmer i document.formNavn.skjultFeltNavn.value hele tiden

document.formNavn.skjultFeltNavn.value = seats

reserveIt(picName)
{
num=parseInt(picName.substring(3));// <-- Med udgangspunkt i dit picName bla12
if(document[picName].src == avail.src){
document[picName].src = res.src
seats = document.formNavn.skjultFeltNavn.value
seats = seats.substring(0,num)+"1"+seats.substring(num+1)
document.formNavn.skjultFeltNavn.value = seats
}
else
{
document[picName].src = avail.src
return true
seats = document.formNavn.skjultFeltNavn.value
seats = seats.substring(0,num)+"0"+seats.substring(num+1)
document.formNavn.skjultFeltNavn.value = seats
}

}
Avatar billede whynot Nybegynder
23. maj 2003 - 20:07 #11
Du overfører data ved hjælp af en eller flere <form> tags.. alt hvad der står af date mellem disse er data og vil blive sendt ved en submit. Men arrays i javascript er lidt anderledes.. derfor kan du overføre data ved at gemme dem i et hiddenfields value...

f.eks. <input type=submit onclick="senddata();">

...funktionen skal gøre følgende..

function senddata() {
    document.hiddenfieldnavnet.value = array_navn();
}


... så kan du tilgå arrayet på modtager siden, som om intet var sket med arrayet.. det vil hedde det samme og have sine værdier intakt :)
Avatar billede tosa Nybegynder
23. maj 2003 - 20:43 #12
roenving, hvorfor har du ikke formuleret det som et svar. Jeg har nu rodet lidt rundt med det du har sendt, og det ser ud til det virker. Jeg kan dog først checke det helt sikkert når serveren har uploadet min kode.
Avatar billede roenving Novice
23. maj 2003 - 23:02 #13
Jam'n så er jo alt godt '-)
Avatar billede tosa Nybegynder
24. maj 2003 - 00:38 #14
Det virkede. Tak for hjælpen.
Avatar billede roenving Novice
24. maj 2003 - 00:57 #15
Velbekomme -- og tak for points ;~}
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