/tutorial-php_rechner.html PHP Taschenrechner
  PHP Kurs Logo  
 
Buttons PHP Kurs - Kapitel Trennlinie Downloads Trennlinie Was brauche ich ? Trennlinie Entwickler Jobs Trennlinie Kontakt Trennlinie Impressum Buttons
 
 
Menu
Allererste PHP Schritte
- Webserver Installation
- PHP Editor Installation

PHP Grundlagen
- PHP Grundwissen
- Mein erstes Programm
- Kommentare einfügen
- Variablen
- PHP+HTML mischen
- If Abfragen
- Rechenarten
- Arrays
- Schleifen
- Funktionen
- Klassen
- Includes
- Sessions und Cookies
- Login mit Sessions
- Login mit Datenbank
- Referer auslesen
- Wert aus Datenbank
- Variablen übergeben

MySQL Grundlagen
- Was ist das ?
- Erste Schritte
- Verbindung herstellen
- Einfache SQL Befehle
- SQL Injection

Häufig gefragt
- Was ist Adwords ?
- Interessante Links
- Wasserzeichen mod_rewrite
- Thumbnails erstellen
- PHP Gästebuch
- PHP Header
- Webseiten auslesen
- Socket Verbindungen
- E-Mail Adressen prüfen
- E-Mails versenden
- $_GET & $_POST
- Datenbank sichern
- Server DDOS Angriffe Abwehren
- Webhosting - Worauf ist zu achten ?
- Fachübersetzungen

Interessante Artikel
- Soft-Skill-Zertifizierung
- Sicherheits Workshops


PHP Rechner

Unter Rechner kann man zwei verschiedene Dinge verstehen: einen richtigen Rechner, wie einen Taschenrechner. Dieser ist mit PHP alleine nicht zu realisieren, da PHP ausgeführt und an den Surfer geschickt wird ; es gibt keine Möglichkeit auf die Eingaben die der User macht sofort zu reagieren - erst nachdem er zum Beispiel ein Formular abgeschickt hat. Die Auswertung der Rechenaufgabe würde dann nach Abschicken des Formulares erfolgen und wieder an den User geschickt werden.

Grundrechenarten in PHP

Bevor wir auf einen selbstgebastelten Rechner mit Hilfe eines Formulares eingehen, möchten wir kurz die Grundrechenarten in PHP vorstellen:

<?php
    $a 
10;
    
$b 5;

    
# Plus, minus, mal und geteilt
    # auf die einfache Art ;)
    
$ergebnis $a $b;            # = 15
    
$ergebnis $a $b;            # =  5
    
$ergebnis $a $b;            # = 50
    
$ergebnis $a $b;            # =  2

    # Es gibt auch extra Befehle zum Rechnen in PHP
    
$ergebnis bcadd($a$b);        # = 15
    
$ergebnis bcsub($a$b);        # =  5
    
$ergebnis bcmul($a$b);        # = 50
    
$ergebnis bcdiv($a$b);        # =  2
?>

Wie Sie sehen haben wir ganz normal +, -, * und / angewendet. Alternativ kann man auch diese zusätzlich angegebenen PHP Befehle verwenden. Die Befehle haben den Vorteil, dass man als drittes Argument noch angeben kann auf wieviele Nachkommastellen das Ergebnis gerechnet werden soll. Zusätzlich werden noch weitere Befehle zum Rechnen bereit gestellt, wie zum Beispiel zum Wurzel ziehen, Potenzen und weitere.

bcadd(); - Addition
bccomp(); - Vergleich
bcdiv(); - Division
bcmod(); - Modulo
bcmul(); - Multiplikation
bcpow(); - Potenz
bcsqrt(); - Quadratwurzel
bcsub(); - Subtrahiert

Die Übersicht über sämtliche Mathefunktionen in PHP erhalten Sie hier.

Häufige Fehlerquelle: Wenn man mit PHP rechnet, dann muss als Komma ein Punkt gewählt werden. Eine Zahl wie 10,57 würde nicht zum gewünschten Ergebnis führen ! Die Zahl müsste heissen 10.57 ! Da der User warscheinlich auch Kommas verwenden können soll, kann man die Eingabe noch Filtern und aus Kommas Punkte machen (z.b. $c = str_replace(",", ".", $c); )

Ein einfacher Rechner mit Hilfe eines Formulars

Nachdem wir darauf eingegangen sind, wie man die Mathefunktionen in PHP anwendet, möchten wir ein kurzes einfaches Beispiel für einen Rechner in PHP zeigen, der mit Hilfe eines Formulars arbeitet. Auf die Mithilfe von Javaskript wird hier verzichtet. Mit Javaskript könnten wir direkt auf die Eingaben des Users reagieren.

Datei rechner.php


<!-- Dies ist eine Kommentarzeile. Diese erscheint im HTML -->
<!-- Quelltext, wird aber vom Browser ignoriert und nicht -->
<!-- verarbeitet ... -->

<form method="POST" action="rechner.php">
<b>Rechenaufgabe:</b><br>
<br>
<input name="zahl1" size=6>
<!-- Erstellt ein Eingabefeld, was 6 Zeichen groß ist. -->
<!-- Es können aber mehr Zeichen eingegeben werden. -->
<!-- Die maximale Eingabemenge setzt man z.B. mit maxlength=10 -->
<!-- fest -->
<select name="rz">
<!--  Mit select erstellt man ein Dropdown Menü. Das was man in -->
<!--  den Dropdowns wählen kann wird mit <option> in den folgenden -->
<!--  Zeilen definiert -->
    <option value="+">+</option>
    <option value="-">-</option>
    <option value="*">*</option>
    <option value="/">/</option>
</select>
<input name="zahl2" size=6><br>
<br>
<input type=submit name=submit value="Rechnen">
<!-- Ein Eingabefeld <input> vom type=submit ist der Absendebutton -->
<!-- womit man die ganze Eingabe abschickt -->
</form>
<!-- Das Formular wird beendet -->

<?php
    
if (!empty($_POST["submit"]))
        {
        
$_zahl1 $_POST["zahl1"];
        
$_zahl2 $_POST["zahl2"];
        
$_rz $_POST["rz"];

        if (
$_rz == "+")    $c=bcadd($_zahl1$_zahl22);
        if (
$_rz == "-")    $c=bcsub($_zahl1$_zahl22);
        if (
$_rz == "*")    $c=bcmul($_zahl1$_zahl22);
        if (
$_rz == "/")    $c=bcdiv($_zahl1$_zahl22);

        
# Rechenaufgabe und Rechnung zeigen !
        
echo $_zahl1 $_rz $_zahl2 "=" $c;
        }
?>

Probieren Sie den Rechner hier live aus.

Im ersten Teil sehen Sie den HTML Quellcode für den Rechner. Hier haben wir ein Formularfeld für eine Zahl und ein Formularfeld für eine zweite Zahl. Dazwischen haben wir ein Select Feld gemacht, damit der Surfer die Rechenart auswählen kann. Im PHP Teil fragen wir erst ab, ob das Formular schon abgeschickt wurde. Ist dies der Fall dann ist $_POST["submit"] NICHT leer - wenn dies der Fall ist, dann werden die Werte aus $_POST["zahl1"] und $_POST["zahl2"] erstmal gespeichert.

Dann Fragen wir mit if ab, welches Rechenzeichen gewählt wurde und errechnen das Ergebnis. Wie Sie sehen können, kommt nach dem if keine Klammer, die den Programmteil einschliesst der dann ausgeführt werden soll. Dies ist eine Besonderheit. Benutzen wir keine Klammern nach dem if, dann führt PHP nur den restlichen Teil aus dieser Zeile aus wenn die gewählte if Bedingung eintrifft. Dies reicht uns völlig aus und macht den Code schlanker, als wenn wir jetzt noch mehrere Klammern auf und zu setzen.

Die Rechenaufgabe und das Ergebnis werden dann mit Hilfe von echo ausgegeben.

Wer ein Beispiel in Javaskript haben möchte, wie man mit Hilfe von Javaskript einen Rechner schreibt, der direkt auf die Eingaben des Users reagiert, kann sich hier schlaulesen. Javaskript ist nicht Bestandteil dieses Kurses, daher gehen wir nicht genauer darauf ein :)





<<<< zurück Kapitelauswahl vorwärts >>>>




Kommentare: (absteigend sortiert)

Hier stehen noch alte Kommentare, die direkt über die Webseite gemacht wurden. Es kann dort nicht weiter kommentiert werden. Bitte nutzt dafür die Facebook Kommentare.

.:: 28.12.13 - 19:42 Uhr :: Name: nils ::.
$_zahl1 = $_POST["zahl1"];

Ich hab hier mal zwei Codebeispiele rausgesucht, warum ist im ersten Beispiel immer so $_zahl1 ?
Warum der Unterstrich?
Wenn ich den nicht mache dann funktioniert das Programm nicht! Aber warum?

Gruß Nils

.:: 24.09.13 - 13:12 Uhr :: Name: Uschi ::.
Das hat mir alles sehr geholfen
Danke :):*

.:: 12.09.13 - 19:07 Uhr :: Name: Gertfried ::.
Das Tutorial ist echt super, nur weiter so.
Ich finde es ist eines der bestes das ich zum Thema php finden konnte.

Eine Frage: Wo genau setzte ich
$c = str_replace(",",".",$c);
in den Code ein?
Habe das Problem, das wenn ich eine Kommazahl eingebe er mir weiterhin eine 0 für die -zahl ausspuckt.

.:: 09.08.13 - 13:56 Uhr :: Name: Tom ::.
HI,
erstmal danke echt gutes Tutorial!

Eine frage hab ich aber noch. Wo muss ich die Funktion die aus Kommas Punkte macht?

.:: 16.06.13 - 15:20 Uhr :: Name: Andreas ::.
Die einfache PHP-form für den Rechner ist schon nicht schlecht,schade nur das bei so einen einfachen Code keine Zahlen (Ergebnis 12,3)nach dem Komma errechnet,ansonsten Hut ab für das Tutorial mach weiter so

.:: 19.03.13 - 15:55 Uhr :: Name: Typ ::.
bcadd (operant1, operant2, Nachkommastellen)

.:: 26.02.13 - 00:33 Uhr :: Name: Marc ::.
Ich hab mal 'ne Frage...Wozu sind die zweien am Ende von den if-Befehlen?

.:: 20.03.12 - 12:22 Uhr :: Name: Oliver ::.
Da hast du alerdings recht (Julien) habe ich auch erst nach dem lesen der Kommentare verstanden.
und ich habe nmoch eine Frage:
Wieso das => (!empty($_POST["submit"]))
bitte genauer erklären.

MfG
Oliver

.:: 26.01.12 - 22:55 Uhr :: Name: Julien ::.
Hab da mal ne frage, und zwar wie soll man als blutiger anfänger den rechenr denn umsetzen o.O
wenn man sich selber mal kla gemachth at, das $_post was speichern soll, zumindest glaube ich das nun mal komm ich ja in den ersten 4 code zeilen zurecht aber dann nur noch o.O^^

1. Frage: erst waren variabeln z.b. $zahl1 nun ist es $_zahl1 warum das _ auf einmal in allen befehlen ist es schlimm wenn ich es weg lasse ?

2. Frage: wie soll man denn darauf kommen, das wenn man zahl 1 und 2 zsammen rechnet man für das ergebnis $c erschaffen muss um das ergebniss zu sehen^^ nun wo man drüber nach denkt ok aber als anfänger sollte man sowas doch lesen um es zu verstehen.

.:: 06.01.12 - 23:48 Uhr :: Name: Alexander ::.
So habs gelöst @ Sebastian Klar das es nicht geht weil es sich hier um die datei Rechner.PHP handelt aber deine datei heisst wahrscheinlich noch test.php oder index.php änder einfach im quellcode das rechner.php ind den namen deines php documents aber der quellcode bleibt sonst der gleiche dann klappt das
gruß alex

.:: 08.10.11 - 21:42 Uhr :: Name: Sebastian ::.
bei mir zeigt er an obwohl ich den skript zur probe kopiert habe:


Objekt nicht gefunden!

Der angeforderte URL konnte auf dem Server nicht gefunden werden. Der Link auf der verweisenden Seite scheint falsch oder nicht mehr aktuell zu sein. Bitte informieren Sie den Autor dieser Seite über den Fehler.

Sofern Sie dies für eine Fehlfunktion des Servers halten, informieren Sie bitte den Webmaster hierüber.
Error 404
localhost
08.10.2011 21:41:24
Apache/2.2.17 (Win32) mod_ssl/2.2.17 OpenSSL/0.9.8o PHP/5.3.4 mod_perl/2.0.4 Perl/v5.10.1

.:: 29.09.11 - 13:53 Uhr :: Name: Paula ::.
Habe den Rechner ausprobiert, beim Dividieren gibt es eine Fehlermeldung, was ja logisch ist. Könnte man das nicht mit einer Ausnahme auffangen?

.:: 11.09.11 - 12:10 Uhr :: Name: Gandaly ::.
Hallo,

ich habe auch vor kurzem eine Rechner geschrieben. Ich erhalte ein Wert z.B € 412 will aber dass es so anzeigt € 412,00

Kann mir jemand da helfen?

.:: 25.08.11 - 10:27 Uhr :: Name: SUPERPHPPROGRAMMER ::.
Hi Charly,
ich habe eine Frage zu der Funktion "empty", bei der du mir vielleicht helfen kannst:
Ich habe gerade entdeckt, dass wenn ich eine Variable $a=0 setze, mir diese Funktion den Wert TRUE zurückliefert? Normalerweiße sollte ich doch FALSE erhalten, also die Info, dass $a NICHT leer ist, weil ich der Variablen der Wert 0 zugewiesen habe, oder?
Cosmo

@Cosmo:
Die Variable, so wie du sie definierst, ist ja nicht leer. Sie hat den Wert 0. Eine leere Variable wäre $a="".

.:: 04.06.11 - 23:40 Uhr :: Name: Freddy ::.
Ich finde dein Tut super toll! Mach weiter so.

.:: 01.06.11 - 11:55 Uhr :: Name: LOL ::.
LOL

.:: 18.05.11 - 17:14 Uhr :: Name: Johnny ::.
Das Beispiel: Datei rechner.php:
Gehört das untere:

<?php
if (!empty($_POST["submit"]))
{
$_zahl1 = $_POST["zahl1"];
$_zahl2 = $_POST["zahl2"];
$_rz = $_POST["rz"];
...............

dazu?

.:: 14.03.11 - 19:36 Uhr :: Name: Julius ::.
Hat mir sehr beim Verstehen von Variablen geholfen! Danke!

.:: 24.02.11 - 21:25 Uhr :: Name: uli ::.
ok, ich korregiere mich da mal selber...grins!
diese 2 gibt die Anzahl der Stellen nach dem Komma an!
" if ($_rz == "+") $c=bcadd($_zahl1, $_zahl2, 2); "
gruß uli

.:: 24.02.11 - 21:24 Uhr :: Name: uli ::.
ok, ich korregiere mich da mal selber...grins!
diese 2 gibt die Anzahl der Stellen nach dem Komma an!
\" if ($_rz == \"+\") $c=bcadd($_zahl1, $_zahl2, 2); \"
gruß uli

.:: 24.02.11 - 16:50 Uhr :: Name: uli ::.
gute frage das mit der "2"!
ich hab die mal weg gelassen und es scheint kein unterschied zu machen.
" if ($_rz == "+") $c=bcadd($_zahl1, $_zahl2); "
geht also auch!

gruß uli

.:: 20.02.11 - 20:51 Uhr :: Name: Cosmo ::.
Hi Charly,
ich habe eine Frage zu der Funktion "empty", bei der du mir vielleicht helfen kannst:
Ich habe gerade entdeckt, dass wenn ich eine Variable $a=0 setze, mir diese Funktion den Wert TRUE zurückliefert? Normalerweiße sollte ich doch FALSE erhalten, also die Info, dass $a NICHT leer ist, weil ich der Variablen der Wert 0 zugewiesen habe, oder?
Cosmo

.:: 14.02.11 - 19:59 Uhr :: Name: fluegu ::.
Immer wenn ich submitte dann kommt nichts unten raus und ich habe das gesamte formular oben kopiert um sicherzugehen!

.:: 14.02.11 - 01:39 Uhr :: Name: Leno ::.
Was bedeutet das "bc" vom bcadd?

.:: 12.02.11 - 08:41 Uhr :: Name: Chris ::.
Erstmal danke für das tolle Seminar :) Hat einiges wieder aufgefrischt.

Meine Frage ist, was die 2 am ende der Zeile für eine Aufgabe hat?
" if ($_rz == "+") $c=bcadd($_zahl1, $_zahl2, 2); "

Danke schoneinmal im Vorraus

Lg

.:: 05.02.11 - 14:26 Uhr :: Name: ugur ::.
Hey du hast vergessen ein Kapitel über die Befehle $_GET und $_POST zu machen denn man braucht diese Befehle für doiesen Kapitel

.:: 29.12.10 - 23:02 Uhr :: Name: K1771R ::.
javascript falsch geschrieben^^

.:: 23.12.10 - 20:04 Uhr :: Name: Adam ::.
Habe den Rechenr local ausprobiert, das ergiebt einen fehler: Parse error: syntax error, unexpected T_ECHO.... on line 8
Wiso???

.:: 29.11.10 - 23:28 Uhr :: Name: Wilhelm ::.
Danke dir Charly für eine schnelle und ausführliche Antwort!

.:: 28.11.10 - 15:18 Uhr :: Name: Wilhelm ::.
Danke Charly, aber ich meine diese Filter Code zu kommentieren. Du hast geschrieben "kann man die Eingabe noch Filtern und aus Kommas Punkte machen" und dann ein Beispiel für Filter geschrieben. c = str_replace(",", ".", c), diese Code habe ich nicht verstanden.
Anmerkung Charly: Habe den Befehl für Dich im Forum erklärt, hier klicken: str_replace

.:: 27.11.10 - 23:19 Uhr :: Name: Dan ::.
Hi Charly,
Sorry wenn ich deine Kommentare Leiste heute so zumüll, ich hätte da einen kleinen Verbesserungsvorschlag. Wenn du "neue" Befehl´szeilen einbindest z.B. <select name="rz">... </select>
das du vielleicht einen kuzen kommentar rein schreibst was diese Zeile macht! Mach weiter so. Dan
Anmerkung Charly: Kein Problem. Verbesserungsvorschläge sind immer gern gesehen. Ich habe das obige Beispiel mal zusätzlich kommentiert, was die einzelnen Zeilen bedeuten.

.:: 27.11.10 - 20:07 Uhr :: Name: Wilhelm ::.
Können Sie Ihr Beispiel "Komma durch punkt zu ersetzen" etvas kommentieren? Danke im voraus.
Anmerkung Charly: Gerne.

Die Zahlen werden "in PHP" immer durch Punkt getrennt gesehen. Wenn ich eine 3,141 habe mit der ich rechne, dann muss ich in PHP 3.141 schreiben. Die Variante mit Komma würde nicht die Ergebnisse bringen die ich erwarte. Das Trennzeichen für die Nachkommastellen beim Rechnen ist der Punkt ! Wir deutsche sind es allerdings gewohnt für die Nachkommastellen ein Komma zu verwenden. Gebe ich nun eine Zahl in ein Formular ein, dann benutze ich das Komma.

Jetzt kriegt mein PHP Programm vom User eine Eingabe mit Komma. Damit ich mit dieser Zahl in PHP allerdings vernünftig weiterrechnen kann, muss aus dem Komma ein Punkt werden. Hierzu kann ich Funktionen wie str_replace zum Ersetzen oder sprintf zum Formatieren von Zahlen verwenden.

.:: 10.11.10 - 11:40 Uhr :: Name: was geht sie das an ::.
kann man das ohne select machen und statt dessen mit links

.:: 19.10.10 - 22:23 Uhr :: Name: Igor ::.
Ja ich habe gefunden die Bedeutung.

empty — Prüft, ob eine Variable einen Wert enthält
Anmerkung Charly: Richtig. Und mit isset könnte man überprüfen ob diese Variable überhaupt gesetzt worden ist (auch wenn es leer ist)

.:: 19.10.10 - 22:11 Uhr :: Name: Igor ::.
Hier habe eine Frage und zwar was bedeutet !empty ???
Leider Charly hast du das vergesen zu erzählen.
Anmerkung Charly: Wenn ich Frage if (empty($a)) dann frage ich, ob die Variable $a leer ist. Mit dem Ausrufezeichen verneine ich meine Aussage, also nicht ob es leer ist, sondern ob es das Gegenteil davon ist (also "voll"). Mit if (!empty($a)) frage ich ob die Variable $a NICHT leer ist.

Es kann aber sein, dass man wissen will ob eine Variable überhaupt schonmal gesetzt wurde. Wenn ich $a = ""; mache, dann ist $a zwar leer, wurde aber gesetzt. Ich habe es so bestimmt. Eine Variable die noch nie gesetzt wurde ist aber auch leer. Den feinen Unterschied kann man auch abfragen und zwar mit isset.

if (isset($a)) - damit frage ich, ob $a überhaupt gesetzt wurde - egal ob leer oder voll.

.:: 14.10.10 - 17:20 Uhr :: Name: ugur ::.
hi mann hat mir echt gut geholfen weiter soooooooooooooo

.:: 04.05.10 - 09:29 Uhr :: Name: gott ::.
lol. da´nke xD

.:: 29.04.10 - 09:29 Uhr :: Name: Dino ::.
Dankeschööön !!!
Hat mir sehr geholfen in der Schule :)









Content
 
  Bottom Design  


PepperTools.de Software Download | Software Shop
www.imilkowski.eu - Software Programmierung und Webdesign


 


Persönliche Empfehlung
Mit Wix.com eine kostenlose Homepage erstellen ? Einfach, schnell und ohne Vorkenntnisse.