Avatar billede mmark Nybegynder
11. november 2005 - 14:18 Der er 13 kommentarer

Beregning af pris ufra to varianble

Jeg er ved at lave en shop, hvor man skal kunne bestille nogle varer på mål. Målene er så afgørende for prisen. Altså har jeg brug for et script som kan finde en pris udfra to variable.

Eks. Kunden indtaster 101 cm bred og 54 cm høj.

Bredde 61-100, højde 0-100, kr 149,-
Bredde 61-100, højde 101-150, kr 199,-
osv....

mmark
Avatar billede softspot Forsker
11. november 2005 - 14:21 #1
Det lyder som om du har behov for en matrix, hvor de forskellige grupper er repræsenteret. Denne matrix slår du du op i alt efter variabelværdierne...
Avatar billede mmark Nybegynder
11. november 2005 - 14:22 #2
Det lyder meget rigtigt, men hvordan ser det ud?
Avatar billede softspot Forsker
11. november 2005 - 14:43 #3
Det er godt nok en knoldsparker metode, men et forslag kunne være:

var arrHoejde = [[0,10],[11,30],[31,70],[71,110],[111,140],[141,170],[171,210]];
var arrBredde = [[0,30],[31,70],[71,120],[121,150],[151,190],[191,250]];
var arrPriser =
  [[20,30,40,50,60,70,80],
  [25,35,45,55,65,75,85],
  [30,40,50,60,70,80,90],
  [35,45,55,65,75,85,95],
  [40,50,60,70,80,90,100],
  [45,55,65,75,85,95,105]];

function hentPris(hoejde,bredde) {
  for(var i = 0; i < arrHoejde.length; i++) {
    if(arrHoejde[i][0] <= hoejde && arrHoejde[i][1] >= hoejde) {
      idxHoejde = i;
      break;
    }
  }
  for(var i = 0; i < arrBredde.length; i++) {
    if(arrBredde[i][0] <= bredde && arrBredde[i][1] >= bredde) {
      idxBredde = i;
      break;
    }
  }

  var pris = 0;
  if(idxHoejde && idxBredde) {
    pris = arrPriser[idxBredde][idxHoejde];
  }

  return pris;
}


NB: Det er ikke testet... :(
Avatar billede mmark Nybegynder
11. november 2005 - 15:47 #4
<HTML>
<HEAD>
  <TITLE>
beregning
  </TITLE>
</HEAD>
<body>

<SCRIPT language=JavaScript>
<!--

function CheckForm( beregning )
{
  var bMissingFields = false;
  var ForStor = false;
  var strFields = "";
   
      if( beregning.QUANTITY.value < 1 ||  isNaN(beregning.QUANTITY.value)) {
      bMissingFields = true;
      strFields += "  * Antal\n";
  }
      if( beregning.Bredde.value < 1 ||  isNaN(beregning.Bredde.value)) {
      bMissingFields = true;
      strFields += "  * Bredde\n";
  }
      if( beregning.Hoejde.value < 1 ||  isNaN(beregning.Hoejde.value)) {
      bMissingFields = true;
      strFields += "  * Højde\n";
  }
      if( theform.BREDDE.value > 300) {
      ForStor = true;
  }
      if( beregning.Hoejde.value > 300) {
      ForStor = true;
  }
  if( bMissingFields ) {
      alert( "Der mangler desværre nogle informationer. Tjek venligst følgende indtastning(er) før du fortsætter.\n\n" + strFields +"\nDin bestilling kan ikke godtages, før du har udfyldt felterne." );
      return false;
  }

  if( ForStor ) {
      alert( "må ikke overstige 300x300 cm.");
      return false;
  }

  return true;
}
// -->
</SCRIPT>
<SCRIPT language=JavaScript>
function beregn()
if{
var arrHoejde = [[0,10],[11,30],[31,70],[71,110],[111,140],[141,170],[171,210]];
var arrBredde = [[0,30],[31,70],[71,120],[121,150],[151,190],[191,250]];
var arrPriser =
  [[20,30,40,50,60,70,80],
  [25,35,45,55,65,75,85],
  [30,40,50,60,70,80,90],
  [35,45,55,65,75,85,95],
  [40,50,60,70,80,90,100],
  [45,55,65,75,85,95,105]];

function hentPris(hoejde,bredde) {
  for(var i = 0; i < arrHoejde.length; i++) {
    if(arrHoejde[i][0] <= hoejde && arrHoejde[i][1] >= hoejde) {
      idxHoejde = i;
      break;
    }
  }
  for(var i = 0; i < arrBredde.length; i++) {
    if(arrBredde[i][0] <= bredde && arrBredde[i][1] >= bredde) {
      idxBredde = i;
      break;
    }
  }

  var pris = 0;
  if(idxHoejde && idxBredde) {
    pris = arrPriser[idxBredde][idxHoejde];
  }
}
  return pris;
}
</script>
<TABLE cellSpacing=4 cellPadding=0 border=0>
        <TBODY>
        <TR>
          <TD vAlign=top>
            <FORM name=beregning
            onsubmit="if( CheckForm(this)) {return true;} else { return false; }"
            action=index2.html method=post><INPUT type=hidden value=1 name=menu>
            <B>Indtast antal:</B> <INPUT maxLength=2 size=2 value=1
            name=QUANTITY>
           
            <P><B>Bredde:</B> <INPUT size=5 name=Bredde> cm.
            <P><B>Højde:</B> <INPUT size=5 name=hoejde> cm.
           
            <P><INPUT type=submit value=Bestil name=tilret> </P></TD>
          </TR>
</TABLE></FORM>
</body>
</html>
Avatar billede mmark Nybegynder
11. november 2005 - 15:48 #5
Hvad er galt i ovenstående?
Avatar billede softspot Forsker
11. november 2005 - 15:57 #6
Du mangler en { efter function beregn()...
Avatar billede softspot Forsker
11. november 2005 - 15:57 #7
altså

function beregn() {

i stedet for

function beregn()
Avatar billede softspot Forsker
11. november 2005 - 16:00 #8
På den anden side... ved nærmere eftersyn så skal denne script-sektion

<SCRIPT language=JavaScript>
function beregn() {
if{
var arrHoejde = [[0,10],[11,30],[31,70],[71,110],[111,140],[141,170],[171,210]];
var arrBredde = [[0,30],[31,70],[71,120],[121,150],[151,190],[191,250]];
var arrPriser =
  [[20,30,40,50,60,70,80],
  [25,35,45,55,65,75,85],
  [30,40,50,60,70,80,90],
  [35,45,55,65,75,85,95],
  [40,50,60,70,80,90,100],
  [45,55,65,75,85,95,105]];

function hentPris(hoejde,bredde) {
  for(var i = 0; i < arrHoejde.length; i++) {
    if(arrHoejde[i][0] <= hoejde && arrHoejde[i][1] >= hoejde) {
      idxHoejde = i;
      break;
    }
  }
  for(var i = 0; i < arrBredde.length; i++) {
    if(arrBredde[i][0] <= bredde && arrBredde[i][1] >= bredde) {
      idxBredde = i;
      break;
    }
  }

  var pris = 0;
  if(idxHoejde && idxBredde) {
    pris = arrPriser[idxBredde][idxHoejde];
  }
}
  return pris;
}
</script>


nok ændres til dette:

<SCRIPT type="text/JavaScript">
var arrHoejde = [[0,10],[11,30],[31,70],[71,110],[111,140],[141,170],[171,210]];
var arrBredde = [[0,30],[31,70],[71,120],[121,150],[151,190],[191,250]];
var arrPriser =
  [[20,30,40,50,60,70,80],
  [25,35,45,55,65,75,85],
  [30,40,50,60,70,80,90],
  [35,45,55,65,75,85,95],
  [40,50,60,70,80,90,100],
  [45,55,65,75,85,95,105]];

function hentPris(hoejde,bredde) {
  for(var i = 0; i < arrHoejde.length; i++) {
    if(arrHoejde[i][0] <= hoejde && arrHoejde[i][1] >= hoejde) {
      idxHoejde = i;
      break;
    }
  }
  for(var i = 0; i < arrBredde.length; i++) {
    if(arrBredde[i][0] <= bredde && arrBredde[i][1] >= bredde) {
      idxBredde = i;
      break;
    }
  }

  var pris = 0;
  if(idxHoejde && idxBredde) {
    pris = arrPriser[idxBredde][idxHoejde];
  }
  return pris;
}
</script>
Avatar billede softspot Forsker
11. november 2005 - 16:10 #9
Well, der var faktisk flere ting galt, dem har jeg rettet i nedenstående udgave. Derudover kan jeg ikke se at funktionen hentPris bliver kaldt nogen steder, så det er du lige nød til at redegøre for hvor skal ske...

<HTML>
<HEAD>
  <TITLE>
beregning
  </TITLE>
</HEAD>
<body>

<SCRIPT language=JavaScript>
<!--

function CheckForm( beregning )
{
  var bMissingFields = false;
  var ForStor = false;
  var strFields = "";
   
  if( beregning.QUANTITY.value < 1 ||  isNaN(beregning.QUANTITY.value)) {
      bMissingFields = true;
      strFields += "  * Antal\n";
  }
  if( beregning.Bredde.value < 1 ||  isNaN(beregning.Bredde.value)) {
    bMissingFields = true;
      strFields += "  * Bredde\n";
  }
  if( beregning.Hoejde.value < 1 ||  isNaN(beregning.Hoejde.value)) {
      bMissingFields = true;
      strFields += "  * Højde\n";
  }
  if( beregning.Bredde.value > 300) {
      ForStor = true;
  }
  if( beregning.Hoejde.value > 300) {
      ForStor = true;
  }
  if( bMissingFields ) {
      alert( "Der mangler desværre nogle informationer. Tjek venligst følgende indtastning(er) før du fortsætter.\n\n" + strFields +"\nDin bestilling kan ikke godtages, før du har udfyldt felterne." );
      return false;
  }

  if( ForStor ) {
      alert( "må ikke overstige 300x300 cm.");
      return false;
  }

  return true;
}
// -->
</SCRIPT>
<SCRIPT type="text/JavaScript">
var arrHoejde = [[0,10],[11,30],[31,70],[71,110],[111,140],[141,170],[171,210]];
var arrBredde = [[0,30],[31,70],[71,120],[121,150],[151,190],[191,250]];
var arrPriser =
  [[20,30,40,50,60,70,80],
  [25,35,45,55,65,75,85],
  [30,40,50,60,70,80,90],
  [35,45,55,65,75,85,95],
  [40,50,60,70,80,90,100],
  [45,55,65,75,85,95,105]];

function hentPris(hoejde,bredde) {
  for(var i = 0; i < arrHoejde.length; i++) {
    if(arrHoejde[i][0] <= hoejde && arrHoejde[i][1] >= hoejde) {
      idxHoejde = i;
      break;
    }
  }
  for(var i = 0; i < arrBredde.length; i++) {
    if(arrBredde[i][0] <= bredde && arrBredde[i][1] >= bredde) {
      idxBredde = i;
      break;
    }
  }

  var pris = 0;
  if(idxHoejde && idxBredde) {
    pris = arrPriser[idxBredde][idxHoejde];
  }
  return pris;
}
</script>
<TABLE cellSpacing=4 cellPadding=0 border=0>
  <TBODY>
    <TR>
      <TD vAlign=top>
        <FORM name=beregning
              onsubmit="if( CheckForm(this)) {return true;} else { return false; }"
              action="index2.html" method=post>
          <INPUT type=hidden value=1 name=menu>
          <B>Indtast antal:</B>
          <INPUT maxLength=2 size=2 value=1 name=QUANTITY>
          <P><B>Bredde:</B>
          <INPUT size=5 name=Bredde> cm.
          <P><B>Højde:</B>
          <INPUT size=5 name=Hoejde> cm.
          <P><INPUT type=submit value=Bestil name=tilret> </P>
        </FORM></TD>
    </TR>
  </TBODY>
</TABLE>
</body>
</html>
Avatar billede softspot Forsker
11. november 2005 - 16:15 #10
Jeg har (af ren nysgerrighed) prøvet at udvide formularen på siden så den ser således ud (og dermed kalder funktionen hentPris), for at se hvad resultatet bliver...

<TABLE cellSpacing=4 cellPadding=0 border=0>
  <TBODY>
    <TR>
      <TD vAlign=top>
        <FORM name=beregning
              onsubmit="if( CheckForm(this)) {return true;} else { return false; }"
              action="index2.html" method=post>
          <INPUT type=hidden value=1 name=menu>
          <B>Indtast antal:</B>
          <INPUT maxLength=2 size=2 value=1 name=QUANTITY>
          <P><B>Bredde:</B>
          <INPUT size=5 name=Bredde> cm.
          <P><B>Højde:</B>
          <INPUT size=5 name=Hoejde> cm.
          <P><B>Pris:</B>
          <INPUT size=5 name=Prisen onfocus="this.value = hentPris(this.form.Hoejde.value, this.form.Bredde.value)"> kr.
          <P><INPUT type=submit value=Bestil name=tilret> </P>
        </FORM></TD>
    </TR>
  </TBODY>
</TABLE>
Avatar billede mmark Nybegynder
11. november 2005 - 18:09 #11
Takker for hjælpen
Avatar billede softspot Forsker
11. november 2005 - 20:24 #12
Velbekomme :)
Avatar billede softspot Forsker
05. marts 2007 - 13:57 #13
Det er vist tid til at afregne :)
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