Avatar billede gedekid Nybegynder
20. april 2009 - 10:18 Der er 9 kommentarer og
1 løsning

Udregne x antal vinduer

Hej eksperter,

jeg skal lige ha' lavet en funktion der kan udregne det samlede areal af x antal ovenlys vinduer man har på sit tag... men kan ikke lige komme i tanke om den lille ting der gør der rigtigt, så håber der er nogle herinde der kan være behjælpelige.

Der er først et input-felt hvori man taster det antal ovenlys vinduer man har på sit tag... så bliver der udskrevet felter til indtastning af højde/bredde for hvert vindue med denne:

-------------------------
        for($i = 1; $i <= $numofwindows; $i++) {
                print "<b>Vindue". $i . "</b><br />";
                print '<input type="text" name="window_height[]" value="" size="5" /> Højde<br />';
                print '<input type="text" name="window_width[]" value="" size="5" /> Bredde<p></p>';
            }
-------------------------

men det er det næste step jeg ikke lige kan komme i tanke om...

den skal jo så udregne arealet af hvert vindue og så udregne det samlede areal af alle vinduer til sidst...

Hvis man nu har 2 vinduer, så er det areal-vindue1+areal-vindue2..

en der kan hjælpe?
Avatar billede majbom Novice
20. april 2009 - 10:52 #1
når du løber arrayet af "vinduer" igennem, er det vel bare:

$windows = sizeof($POST['window_height']);
$height = $_POST['window_height'];
$width = $_POST['window_width'];
for($i=0;$i<$windows;$i++){
  $area = $height[$i]*$width[$i];
  $total_area += $area;
}

med forbehold for tastefejl osv :)
Avatar billede gedekid Nybegynder
20. april 2009 - 12:10 #2
Takker :) Men der er et eller andet der ikke helt spillet for når jeg indtaster målene på vinduet/vinduerne så hopper den bare tilbage til indtastningen af antal vinduer, men det er garanteret min fejl...

Hele min vindue kode er:

-----------------------------------
} elseif($addonroof == "ovenvindue") {
    print '<b>Vælg ovenlys vindue</b>';
   
    if(!isset($_POST["windownum_submit"])) {
        print '<form action="'. $PHP_SELF .'" method="post">';
            print '<input type="text" name="window_num" value="" size="5" /> Indtast antal ovenlys vinduer<br />';
            print '<p><input type="submit" name="windownum_submit" value="Indtast mål" class="nextInput" /></p>';
        print '</form>';
    }
   
    if(isset($_POST["windownum_submit"]) && !isset($_POST["windows_submit"])) {
           
        $numofwindows = $_POST["window_num"];
       
        print '<form action="'. $PHP_SELF .'" method="post">';
       
            for($i = 1; $i <= $numofwindows; $i++) {
                print "<b>Vindue". $i . "</b><br />";
                print '<input type="text" name="window_height[]" value="" size="5" /> Højde<br />';
                print '<input type="text" name="window_width[]" value="" size="5" /> Bredde<p></p>';
            }
           
            print '<p><input type="submit" name="windows_submit" value="Indtast" class="nextInput" /></p>';
        }   

    if(isset($_POST["windows_submit"])) {
                           
        $windows = sizeof($POST['window_height']);           
        $height = $_POST['window_height'];
        $width = $_POST['window_width'];
                       
        for($i=0;$i<$windows;$i++){
            $area = $height[$i]*$width[$i];
            $total_area += $area;   
        }           
    }
           
   
        print '</form>';

}

------------------------------------
Avatar billede gedekid Nybegynder
20. april 2009 - 12:27 #3
Hov...

} elseif($addonroof == "ovenvindue") {
    print '<b>Vælg ovenlys vindue</b>';
   
    if(!isset($_POST["windownum_submit"])) {
        print '<form action="'. $PHP_SELF .'" method="post">';
            print '<input type="text" name="window_num" value="" size="5" /> Indtast antal ovenlys vinduer<br />';
            print '<p><input type="submit" name="windownum_submit" value="Indtast mål" class="nextInput" /></p>';
        print '</form>';
    }
   
    if(isset($_POST["windownum_submit"]) && !isset($_POST["windows_submit"])) {
           
        $numofwindows = $_POST["window_num"];
       
        print '<form action="'. $PHP_SELF .'" method="post">';
       
            for($i = 1; $i <= $numofwindows; $i++) {
                print "<b>Vindue". $i . "</b><br />";
                print '<input type="text" name="window_height[]" value="" size="5" /> Højde<br />';
                print '<input type="text" name="window_width[]" value="" size="5" /> Bredde<p></p>';
            }
           
            print '<p><input type="submit" name="windows_submit" value="Indtast" class="nextInput" /></p>';
        }       
        print '</form>';       
       
      if(isset($_POST["windows_submit"])) {
             
        $windows = sizeof($POST['window_height']);           
        print $windows;
        $height = $_POST['window_height'];
          $width = $_POST['window_width'];

         
        for($i=0;$i<$windows;$i++){
            $area = $height[$i]*$width[$i];
            $total_area += $area;   
        }     
      }       
}

men $windows giver 0... så den kommer aldrig til den sidste for-løkke...
Avatar billede majbom Novice
20. april 2009 - 12:36 #4
prøv med:

} elseif($addonroof == "ovenvindue") {
    print '<b>Vælg ovenlys vindue</b>';
   
    if(!isset($_POST["windownum_submit"]) && !isset($_POST['windows_submit'])) {
        print '<form action="'. $PHP_SELF .'" method="post">';
            print '<input type="text" name="window_num" value="" size="5" /> Indtast antal ovenlys vinduer<br />';
            print '<p><input type="submit" name="windownum_submit" value="Indtast mål" class="nextInput" /></p>';
        print '</form>';
    }
   
    if(isset($_POST["windownum_submit"]) && !isset($_POST["windows_submit"])) {
           
        $numofwindows = $_POST["window_num"];
       
        print '<form action="'. $PHP_SELF .'" method="post">';
       
            for($i = 1; $i <= $numofwindows; $i++) {
                print "<b>Vindue". $i . "</b><br />";
                print '<input type="text" name="window_height[]" value="" size="5" /> Højde<br />';
                print '<input type="text" name="window_width[]" value="" size="5" /> Bredde<p></p>';
            }
           
            print '<p><input type="submit" name="windows_submit" value="Indtast" class="nextInput" /></p>';
        }   

    if(isset($_POST["windows_submit"])) {
                           
        $windows = sizeof($POST['window_height']);           
        $height = $_POST['window_height'];
        $width = $_POST['window_width'];
                       
        for($i=0;$i<$windows;$i++){
            $area = $height[$i]*$width[$i];
            $total_area += $area;   
        }           
    }
           
   
        print '</form>';

}

før vil den naturligvis gå ind i den først if, da "windownum_submit" ikke er sat, når du indtaster målene
Avatar billede gedekid Nybegynder
20. april 2009 - 12:54 #5
fixed...  $windows = sizeof($POST['window_height']); skal selvfølgelig være:

$windows = sizeof($_POST['window_height']);  :)

Takker for hjælpen! Smider du et svar for point?
Avatar billede majbom Novice
20. april 2009 - 12:58 #6
ja, der gik det lige lidt for stærkt :)

velbekomme
Avatar billede gedekid Nybegynder
20. april 2009 - 13:00 #7
Hov.. en lille ting mere...

hvis jeg f.eks. laver 2 vinduer med vindue1 som 1h 2b og vindue2 med 2h 2b .. og jeg så udskriver $totalarea så skriver den 26.. hvor 2 er det første vindue og 6 er det samlede areal...
Avatar billede majbom Novice
20. april 2009 - 13:18 #8
prøv at echo $area i for-løkken, for at se om den regner rigtigt hver gang, og om du kan spore fejlen den vej
Avatar billede gedekid Nybegynder
20. april 2009 - 13:21 #9
Det prøver jeg :) Takker for hjælpen :)
Avatar billede majbom Novice
20. april 2009 - 13:27 #10
selv tak, tak for point
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