Avatar billede the_edge Nybegynder
18. december 2006 - 12:50 Der er 6 kommentarer

lommeregner. Gem seneste fem resultater

Hejsa jeg er i gang med at lave en lommeregner... Hvordan går jeg vidst de 5 resulter, uden at bruge database ?

her er min kode. Har prøvet med arrays og session kan bare ikke lige få det til at virke...

<?php
session_start();
?>

<html>
<head>
<title>Lommeregner</title>
<link rel="stylesheet" type="text/css" href="style.css">

</head>
<body>



<form method="POST" action="lommeregner.php">

<input type="text" name="indtast" value="Indtast tal 1">
<input type="text" name="indtast2" value="Indtast tal 2">
</br>
</br>
<table border="1">
    <tr>
    <td><input type="radio" name="plus" value="plus"></tr><td><p>+</p></td>
    </tr>
    <tr>
    <td><input type="radio" name="minus"value="minus"></tr><td><p>-</p></td>
    </tr>
    <tr>
    <td><input type="radio" name="gange" value="gange"></tr><td><p>*</p></td>
    </tr>
    <tr>
    <td><input type="radio" name="divider" value="divider"></tr><td><p>/</p></td>
    </tr>
    <tr>
    <td><input type="submit" value="  =  "></tr>
    </tr>

</table>



</form>


<?php
/*
echo $_POST["plus"];
echo $_POST["minus"];
echo $_POST["gange"];
echo $_POST["divider"];
*/
    function regnemaskine ($indtasted, $indtasted2)
    {
       
        if ($_POST["indtast"] == "" || $_POST["indtast2"] == "")
        {
            echo "Du skal indtaste noget i begge felter!!!";
           
        }
       
        if ($_POST["indtast"] == '0' || $_POST["indtast2"] == '0' && isset($_POST["gange"]))
        {
            echo "Du kan ikke dividere med 0";
           
        }
       
        else if ($_POST["plus"])
        {
            $resultat =    $indtasted + $indtasted2;
            return  $resultat;
        }
       
        else if ($_POST["minus"])
        {
            $resultat =    $indtasted - $indtasted2;
            return  $resultat;
        }
       
        else if ($_POST["divider"])
        {
            $resultat =    $indtasted / $indtasted2;
            return  $resultat;
        }
       
        else if ($_POST["gange"])
        {
            $resultat =    $indtasted * $indtasted2;
            return  $resultat;
        }
   
        else
        {
        echo "Du skal vælge en operator";   
           
        }
       
    }
   
   
$resultat = regnemaskine($_POST["indtast"], $_POST["indtast2"]);
echo $resultat ."</br>";



for ($i=0; $i<=5-1; $i++)
{
   
//$stack = array("$resultat");  ville bruge det til at gemme de sidste 5 verdier.
//array_push($stack, "$resultat");
//print_r($stack);
   
   
$a = array("$resultat","$resultat1","$resultat2","$resultat3","$resultat4"); //dette skal bruges til de sidste 5 resultat eller en session...

}


echo'<table border="1">
    <tr>
    <td><b>Seneste 5 restulater</b></td>
    </tr> </br>';
   
for ($i=0; $i<=5-1; $i++)
{
    echo "<tr>
    <td>$a[$i]</td>
    </tr>";

}

    echo '</table>';
?>


</body>
</html>
Avatar billede onkel_satan Nybegynder
18. december 2006 - 13:35 #1
Først definere et array
if(!isset($_SESSION['myArray'])) $_SESSION['myArray'] = array();

Hver gang du udregner et nyt resultat skubber du de tidligere resultater

for($i=4; $i>=0; $i--){
if($i>0){
$_SESSION['myArray'][$i] = $_SESSION['myArray'][$i-1];
}else{
$_SESSION['myArray'][$i] = $resutat;
}
}

Så har du altid det nyeste resultat på plads nr 0 og sidste på plads nr 4
Avatar billede onkel_satan Nybegynder
18. december 2006 - 14:05 #2
Kan godt være du lige skal udfylde dit array med f.eks 0 værdier på de fem pladser når du opretter det eller kontrollere størrelsen af arrayet inden du kører for løkken.
Avatar billede the_edge Nybegynder
18. december 2006 - 14:07 #3
hmm okay syndes ikke lige jeg kan få det til at virke... Jeg skal vell echo begge ting ud ik ?
Avatar billede intenz Novice
18. december 2006 - 14:20 #4
Lige en lille kommentar, ikke til det konkrete problem.
Men du burde nok kalde dine radio knapper det samme navn, så det ikke er muligt at vælge flere samtidigt.
F.eks. name="metode" på dem allesammen.
Og så hente som:
if ($_POST[metode] == "plus") {

} osv...

Du kan også lave dine tjek med "Du skal vælge en operator" og de andre fejl i javascript, for at gøre lidt mere brugervenligt, så fejlen ikke først kommer efter man har trykket " = ".
Avatar billede the_edge Nybegynder
18. december 2006 - 14:24 #5
ahh nu virker tak... trode ikke man kunne bruge arrays i session :)

sådan kom det til at se ud... hvis du lægger et svar.

if(!isset($_SESSION['myArray'])) $_SESSION['myArray'] = array();

for($i=4; $i>=0; $i--){
   
    if($i > 0)
    {
    $_SESSION['myArray'][$i] = $_SESSION['myArray'][$i-1];
    }   
else{
    $_SESSION['myArray'][$i] = $resultat;
    }
       
}
echo'<table border="1">
    <tr>
    <td><b>Seneste 5 restulater</b></td>
    </tr> </br>';
   
for ($i=0; $i<=5-1; $i++)
{
    echo "<tr>
    <td> nr" ."$i"." ". $_SESSION['myArray'][$i] ."</td>
    </tr>";

}

    echo '</table>';
Avatar billede the_edge Nybegynder
19. juli 2010 - 18:16 #6
læg et svar :)
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

IT-JOB

Netcompany A/S

Network Engineer

Riskpoint A/S (Riskpoint Solutions Limited)

Senior Developer

KMD A/S

Projektleder
Seneste spørgsmål Seneste aktivitet
I går 10:21 Ny printer, men hvilken Af mort1 i Printere
13/0819:41 USB på Linux Af Uvanga i Linux
12/0818:26 Hvilken type mus Af mort1 i PC
11/0813:21 ms Forms Af leahcim i Andet software
10/0821:30 Blokeret på Snapchat? Af LineP i Chat & Messaging