Avatar billede ze-men Nybegynder
06. april 2006 - 18:32 Der er 17 kommentarer og
1 løsning

Lægge sammen fra rullemenu

Hej Eksperter...

Jeg skal lave en omregner - som kan regne en blænde (på et kameraoptik) ud ud fra givne forhold.

F.eks.:

En rullemenu (mærket "du står på blænde") med valgmuligheder:
1.9
2.0
2.8
3.0
4.0
5.6

En rullemenu (mærket "filter") med valgmuligheder:
ND3
ND6
ND9

- skal regnes ud i en text-form.

Dvs. at der skal laves en programmering der siger at hvis "menu1" valg "2" og "menu2 valg "1" vælges skal facit i text-formen være XXX
- og hvis "menu1" valg "4" og "menu3" valg"2" vælges skal facit være XXX - o.s.v. med alle muligheder.

Bemærk der skal regnes med tekst og/eller mærkelige talkombinationer..

Håber I kan hjælpe med ar programmere denne..
Avatar billede mcardle Nybegynder
06. april 2006 - 23:35 #1
Hvis jeg har forstået spørgsmålet korrekt, så skal din første side se sådan ud:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
  <head>
      <title>Test</title>
  </head>
<body>


<form action="validate.php">
<span>Blænde:</span><br />
<select name="blaende">
    <optgroup label="Vælg Blænde">
      <option>1.9</option>
      <option>2.0</option>
      <option>2.8</option>
      <option>3.0</option>
      <option>4.0</option>
      <option>5.6</option>
    </optgroup>
</select>
<br />
<span>Filter:</span><br />
<select name="filter">
    <optgroup label="Vælg Filter">
      <option>ND3</option>
      <option>ND6</option>
      <option>ND9</option>
    </optgroup>
</select>
<br />
<br />
<input type="submit" value="Beregn Linse-type" />
</form>

</body>
</html>

Og den anden side, som hedder validate.php(det er vigtigt at den hedder det samme som står her ellers virker det ikke.) skal se sådan ud:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
  <head>
      <title>Brug Af Linse</title>
  </head>
<body>

<?php

$blaende = $_REQUEST["blaende"];
$filter = $_REQUEST["filter"];

if($blaende == 1.9 && $filter == ND3){
    echo "Du skal bruge linse-type: 001";
}
else if($blaende == 1.9 && $filter == ND6){
    echo "Du skal bruge linse-type: 002";
}
else if($blaende == 1.9 && $filter == ND9){
    echo "Du skal bruge linse-type: 003";
}
else if($blaende == 2.0 && $filter == ND3){
    echo "Du skal bruge linse-type: 004";
}
else if($blaende == 2.0 && $filter == ND6){
    echo "Du skal bruge linse-type: 005";
}
else if($blaende == 2.0 && $filter == ND9){
    echo "Du skal bruge linse-type: 006";
}
else if($blaende == 2.8 && $filter == ND3){
    echo "Du skal bruge linse-type: 007";
}
else if($blaende == 2.8 && $filter == ND6){
    echo "Du skal bruge linse-type: 008";
}
else if($blaende == 2.8 && $filter == ND9){
    echo "Du skal bruge linse-type: 009";
}
else if($blaende == 3.0 && $filter == ND3){
    echo "Du skal bruge linse-type: 010";
}
else if($blaende == 3.0 && $filter == ND6){
    echo "Du skal bruge linse-type: 011";
}
else if($blaende == 3.0 && $filter == ND9){
    echo "Du skal bruge linse-type: 012";
}
else if($blaende == 4.0 && $filter == ND3){
    echo "Du skal bruge linse-type: 013";
}
else if($blaende == 4.0 && $filter == ND6){
    echo "Du skal bruge linse-type: 014";
}
else if($blaende == 4.0 && $filter == ND9){
    echo "Du skal bruge linse-type: 015";
}
else if($blaende == 5.6 && $filter == ND3){
    echo "Du skal bruge linse-type: 016";
}
else if($blaende == 5.6 && $filter == ND6){
    echo "Du skal bruge linse-type: 017";
}
else if($blaende == 5.6 && $filter == ND9){
    echo "Du skal bruge linse-type: 018";
}

?>


</body>
</html>
Avatar billede mclemens Nybegynder
07. april 2006 - 01:20 #2
Havde lige lavet en i javascript :/
... poster den lige - det ville jo være synd bare at smide den ud...
(har lige gjort den lidt parat til let kombinering med backup php script)

Selvom man vælger javascript løsning er det smart at bruge mcardle's php fil til backup hvis javascript er deaktiveret :) ... udregningen i javascript skal nok tilrettes - kan jo også være som php udregningen så man definerer værdien af udregningen i er array uden at foretage en udregning (der er jo som mcadle viser kun 18 resultater hvis det kun er disse to variabler der regnes på...)

... en evt. kombination af de to script kan være at denne js formular ligges på en php side og hvis javascript er deaktiveret er der en knap istedet (den funktion er lavet) og så kan man vælge at afsende formularen til den side man er på - php vil så sørge for at udregne (hvis der er post indstillinger og værdierne begge er forskellig fra "d" og indskrive resultatet i værdi feltet baseret på det man postede (det skal dog lige kombineres først)...

... nåh, her var det jeg havde lavet:


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<style type="text/css">
html{overflow-y:scroll;}
body{margin:5px 0px;padding:0px;}
#cont{width:770px;margin:0px auto;}
</style>

<script type="text/javascript" src="blaendfiltudregn.js"></script></head>

<body><div id="cont">

<form method="POST" action="alternativphpudregning.php" name="lensform" onsubmit="return false;">

<div style="width:160px;line-height:21px">
  <b style="float:left;">Blænde:</b>
  <select size="1" name="blaende" style="float:right;width:100px;" onChange="blaendfiltc();">
  <option value="d">Vælg</option>
  <option value="0">1.9</option>
  <option value="1">2.0</option>
  <option value="2">2.8</option>
  <option value="3">3.0</option>
  <option value="4">4.0</option>
  <option value="5">5.6</option>
  </select>
</div>

<div style="width:160px;">
  <b style="float:left;line-height:19px;">Filter:</b>
  <select size="1" name="filter" style="float:right;width:100px;" onChange="blaendfiltc();">
  <option value="d">Vælg</option>
  <option value="0">ND3</option>
  <option value="1">ND6</option>
  <option value="2">ND9</option>
  </select>
</div>

<div style="width:160px;">
  <input type="submit" name="afsendknap" value="Beregn værdien" style="height:25px;width:160px;">
  <input type="text" name="calcresult" value="Vælg Blænde og filter" onkeyup="this.value='Vælg Blænde og filter';" style="display:none;float:left;width:156px;padding:0px;">
</div>
</form>

</div></body></html>



samt blaendfiltudregn.js

<!--

window.onload=function(){
document.lensform.afsendknap.style.display="none";
document.lensform.calcresult.style.display="block";
}

/* Variabelværdier til blænde ... bemærk punktum er lig komma */
myblendarr=new Array('1.9','2.0','2.8','3.0','4.0','5.6');

/* Variabelværdier til filter ... bemærk punktum er lig komma */
myfiltarr=new Array('1.3','1.6','1.9');

function blaendfiltc(){
mycalcresult=document.lensform.calcresult;
myblaend=document.lensform.blaende.value;
myfilt=document.lensform.filter.value;
if((myblaend!="d")&&(myfilt!="d")){
  myb=myblendarr[myblaend];
  myf=myfiltarr[myfilt];

/* Udregningsformlen - udregninger kan også være betinget af, hvad blænde og filter, der er valgt som med php eksemplet... Det laves let, hvis man kender hvilke betingelserne, der skal checkes på, før den udfører en bestemt beregning f.eks.: Hvis blænde er det og filter det så brug den formel ellers, hvis blænde og filter er det så brug den formel o.s.v...
myb = værdien der hører til den valgte blænde - værdien til formlen fåes fra nr.1 array
myf = værdien der hører til det valgte filter - værdien til formlen fåes fra nr.2 array */

  udregning=+myb/2+8*4-5/9*myf;

  mycalcresult.value=udregning;
}else mycalcresult="Vælg Blænde og filter";
}

//-->
Avatar billede mclemens Nybegynder
07. april 2006 - 01:23 #3
}else mycalcresult="Vælg Blænde og filter";
}

//-->

er en fejl :P det skal være:

}else mycalcresult.value="Vælg Blænde og filter";
}

//-->
Avatar billede ze-men Nybegynder
08. april 2006 - 13:49 #4
Jeg prøvede mcardle's kode.

Den virker fint, jeg har dog et ønske - at der i rummelenuen står "ND 0.3" i stedet for "ND3", hvordan får jeg den til det? Jeg har prøvet bare at ændre det i html-siden og på php-siden - men det virker ikke så. Der hvor problemet er på php-siden i kode-delen:

if($blaende == 1.9 && $filter == ND3){
    echo "Du skal bruge linse-type: 001";

hvor jeg så skriver:

if($blaende == 1.9 && $filter == ND 0.3){
    echo "Du skal bruge linse-type: 001";

- men så virker udregningen ikke...
Avatar billede mcardle Nybegynder
08. april 2006 - 13:55 #5
Du skal ændre den både i php-koden og i html koden.

if($blaende == 1.9 && $filter == ND3){
    echo "Du skal bruge linse-type: 001";

Bliver til:

if($blaende == 1.9 && $filter == ND0.3){
    echo "Du skal bruge linse-type: 001";

Som du har gjort.

Denne her:

<select name="filter">
    <optgroup label="Vælg Filter">
      <option>ND3</option>
      <option>ND6</option>
      <option>ND9</option>
    </optgroup>

Bliver til denne her:

<select name="filter">
    <optgroup label="Vælg Filter">
      <option>ND0.3</option>
      <option>ND6</option>
      <option>ND9</option>
    </optgroup>


Huske ingen mellemrum ved ND0.3

Du kan sætte en bindestreg, hvis du vil, men gør det begge steder, for den sammenligner de 2 ting og hvis de ikke er ens, så virker det ikke. ;-)

//mcardle
Avatar billede mcardle Nybegynder
08. april 2006 - 13:56 #6
Tror egenligt også du kan lave mellemrum, men har ikke testet det, prøv.

//mcardle
Avatar billede ze-men Nybegynder
08. april 2006 - 14:12 #7
Hmm...

Hverken hvis jeg skriver "ND 0.3" eller "ND0.3" virker det! Tror ikke man kan bruge punktum og mellemrum..
Avatar billede mcardle Nybegynder
08. april 2006 - 14:14 #8
Jo, jo... For det gør du jo allerede i den anden select... Laver det lige så det virker. 2 sek
Avatar billede mcardle Nybegynder
08. april 2006 - 14:23 #9
Så...! (der skulle lige tilføjes nogle anførselstegn.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
  <head>
      <title>Test</title>
  </head>
<body>


<form action="validate.php">
<span>Blænde:</span><br />
<select name="blaende">
    <optgroup label="Vælg Blænde">
      <option>1.9</option>
      <option>2.0</option>
      <option>2.8</option>
      <option>3.0</option>
      <option>4.0</option>
      <option>5.6</option>
    </optgroup>
</select>
<br />
<span>Filter:</span><br />
<select name="filter">
    <optgroup label="Vælg Filter">
      <option>ND-0.3</option>
      <option>ND-6</option>
      <option>ND-9</option>
    </optgroup>
</select>
<br />
<br />
<input type="submit" value="Beregn Linse-type" />
</form>

</body>
</html>

Her er din side validate.php


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
  <head>
      <title>Brug Af Linse</title>
  </head>
<body>

<?php

$blaende = $_REQUEST["blaende"];
$filter = $_REQUEST["filter"];

if($blaende == 1.9 && $filter == 'ND-0.3'){
    echo "Du skal bruge linse-type: 001";
}
else if($blaende == 1.9 && $filter == 'ND-6'){
    echo "Du skal bruge linse-type: 002";
}
else if($blaende == 1.9 && $filter == 'ND-9'){
    echo "Du skal bruge linse-type: 003";
}
else if($blaende == 2.0 && $filter == 'ND-0.3'){
    echo "Du skal bruge linse-type: 004";
}
else if($blaende == 2.0 && $filter == 'ND-6'){
    echo "Du skal bruge linse-type: 005";
}
else if($blaende == 2.0 && $filter == 'ND-9'){
    echo "Du skal bruge linse-type: 006";
}
else if($blaende == 2.8 && $filter == 'ND-0.3'){
    echo "Du skal bruge linse-type: 007";
}
else if($blaende == 2.8 && $filter == 'ND-6'){
    echo "Du skal bruge linse-type: 008";
}
else if($blaende == 2.8 && $filter == 'ND-9'){
    echo "Du skal bruge linse-type: 009";
}
else if($blaende == 3.0 && $filter == 'ND-0.3'){
    echo "Du skal bruge linse-type: 010";
}
else if($blaende == 3.0 && $filter == 'ND-6'){
    echo "Du skal bruge linse-type: 011";
}
else if($blaende == 3.0 && $filter == 'ND-9'){
    echo "Du skal bruge linse-type: 012";
}
else if($blaende == 4.0 && $filter == 'ND-0.3'){
    echo "Du skal bruge linse-type: 013";
}
else if($blaende == 4.0 && $filter == 'ND-6'){
    echo "Du skal bruge linse-type: 014";
}
else if($blaende == 4.0 && $filter == 'ND-9'){
    echo "Du skal bruge linse-type: 015";
}
else if($blaende == 5.6 && $filter == 'ND-0.3'){
    echo "Du skal bruge linse-type: 016";
}
else if($blaende == 5.6 && $filter == 'ND-6'){
    echo "Du skal bruge linse-type: 017";
}
else if($blaende == 5.6 && $filter == 'ND-9'){
    echo "Du skal bruge linse-type: 018";
}

?>


</body>
</html>
Avatar billede ze-men Nybegynder
08. april 2006 - 14:37 #10
Okay - det virker nu!

Nu har jeg så tilføjet endnu en mulighed til udregningen. Denne mulighed udregnes i grader.

Jeg har derfor skrevet sådan:

if($blaende == 1.4 && $filter == 'ND 0.3' && $shutter == '180&deg;'){
    echo "Du skal bruge linse-type: 001";
}

Men tror ikke den kan "læse" grad-koden: &deg;

- kan jeg have grader ståendene - eller ikke??
Avatar billede mcardle Nybegynder
08. april 2006 - 14:55 #11
Jeg kan heller ikke få det til at virke, men du kan jo bare nøjes med at skrive degrees bagefter.

//mcardle
Avatar billede ze-men Nybegynder
08. april 2006 - 14:58 #12
Ja, okay - tak for hjælpen...

Det har løst mit spørgsmål - svar så du kan få point:-)
Avatar billede mcardle Nybegynder
08. april 2006 - 14:59 #13
Takker ;-)

//mcardle
Avatar billede ze-men Nybegynder
08. april 2006 - 15:03 #14
Lige en sidste ting.. Jeg kan ikke huske hvordan man laver en note i php - altså hvad skal jeg skrive for det er en notat uden for koden...
Avatar billede mcardle Nybegynder
08. april 2006 - 15:04 #15
#
Avatar billede mcardle Nybegynder
08. april 2006 - 15:05 #16
Accepterer du mit svar?

//mcardle
Avatar billede ze-men Nybegynder
08. april 2006 - 15:05 #17
Tak for hjælpen....
Avatar billede mcardle Nybegynder
08. april 2006 - 15:07 #18
Takker
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