Portal > Foren > PHP > PHP-Programmierung > Rechnen mit Variablen
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 18.11.2005, 18:35 Nach oben    #1
n00b -.-
 
Benutzerbild von Bookworm
 
Registriert seit: 10.11.2005
Beiträge: 318
Standard Rechnen mit Variablen

Also, ich habe jetzt mal auf Bens Anregung hin angefangen, die Tuts zu lesen und dann BEispiele zu programmieren (Erweis sich als guter Tipp. Lesen heißt also doch nicht können ).
Nur jetzt ahbe ich ein Problem. Guckt euch das hier an:

PHP-Code:
<?

$zahl1 = $HTTP_POST_VARS["zahl1"];
$rechenart = $HTTP_POST_VARS["rechenart"];
$zahl2 = $HTTP_POST_VARS["zahl2"];


echo "Das Ergebis von $zahl1 $rechenart $zahl2 lautet: $zahl1$rechenart$zahl2";

?>
So, das ganze produziert jetzt keinen Error oder so. Aber:

Ich erhalte die Werte der Variablen über ein Formular (ganz simpel mit html).
Der Wert der Variablen "rechenart" ist ein Rechenzeichen wie + oder -. Jetzt soll das Programm natürlich nicht nur die Variablen ausgeben, sondern die Gleichung ausrechnen.
Wenn zum Beipiel gilt:
$zahl1 = 5
$rechenart = *
$zahl2 = 3
Dann gibt der Browser folgendes aus: Das Ergebnis von 5 * 3 ist 5*3. Logisch, ist ja auch alles richtig. Ich will aber, dass er das Ergebnis wirklich ausrechnet, also dass da stattdessen 5*3 15 steht. ich habe aber keine ahnung, was ich jetzt tun muss, damit der Variableninhalt von $rechenart auch wirklich als Rechenzeichen verarbeiten wird, und nicht als String.
Gruß
Bookworm
Bookworm ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 18.11.2005, 18:39 Nach oben    #2
Christian Mühlroth
 
Benutzerbild von Chr!s
 
Registriert seit: 04.09.2005
Ort: Nürnberg
Beiträge: 561
Standard

Ersteinmal ist HTTP_POST_VARS veraltet, $_POST sollte genommen werden.
Nun versuch es mal so:
PHP-Code:
<?php
$zahl1 
$_POST['zahl1'];
$rechenart $_POST['rechenart'];
$zahl2 $_POST['zahl2'];

$ergebnos = ($zahl1 $rechenart $zahl);
?>
Nicht getestet - und ich glaube auch nicht dass es funktioniert.
Eine andere Möglichkeit wäre eval() - würde ich in diesem Fall aber nicht nutzen, denn eval = evil, hier gibt es viele injection-möglichkeiten..

Ansonsten vielleicht einfach mit einer Abfrage?
PHP-Code:
<?php
switch($rechenart) {
        case 
'+';
                
$ergebnis $zahl1 $zahl2;
                break;
        
// ...
}
?>
Chr!s ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 18.11.2005, 18:43 Nach oben    #3
n00b -.-
 
Benutzerbild von Bookworm
 
Registriert seit: 10.11.2005
Beiträge: 318
Standard

Ja, aber beim unteren Beispiel steht das Rechenzeichen doch schon fest, oder?
Sorry, ich werde die Abfragen wohl nie begreifen. Einerseits sind sie logisch aufgebaut, andererseits sind sie irgenwie scheisse.
Bookworm ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 18.11.2005, 18:52 Nach oben    #4
Christian Mühlroth
 
Benutzerbild von Chr!s
 
Registriert seit: 04.09.2005
Ort: Nürnberg
Beiträge: 561
Standard

na:
PHP-Code:
<?php
switch($rechenart) {
        case 
'+':
        
// ...
        
case '-':
        
/// ...
        
case '*':
        
// ...
}
?>
Ist im Grunde doch dasselbe wie eine IF-Abfrage. http://de2.php.net/switch
Chr!s ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 18.11.2005, 19:10 Nach oben    #5
n00b -.-
 
Benutzerbild von Bookworm
 
Registriert seit: 10.11.2005
Beiträge: 318
Standard

ahja, sprich:

if $rechenart = +, do this....

oder wie???


also:
PHP-Code:
<?php

$zahl1 
$HTTP_POST_VARS["zahl1"];
$rechenart $HTTP_POST_VARS["rechenart"];
$zahl2 $HTTP_POST_VARS["zahl2"];

switch(
$rechenart) {
        case 
'+':
        echo 
"$zahl1+$zahl2";
        break;

        case 
'-':
        echo 
"$zahl1-$zahl2";
        break;

        case 
'*':
        echo 
"$zahl1*$zahl2";
        break;
  
        case 
'/':
        echo 
"$zahl1/$zahl2"
        break;

}
?>
oder wie sonst?

Geändert von Bookworm (18.11.2005 um 19:16 Uhr)
Bookworm ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 18.11.2005, 19:29 Nach oben    #6
Christian Mühlroth
 
Benutzerbild von Chr!s
 
Registriert seit: 04.09.2005
Ort: Nürnberg
Beiträge: 561
Standard

Versuch es doch?
Und warum die "?
PHP-Code:
<?php
case '-';
echo (
$zahl1 $zahl2);
break;
?>
und $_POST verwenden...
Chr!s ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 18.11.2005, 21:54 Nach oben    #7
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.381
Standard

Fragen zu switch?
http://forum.developers-guide.net/thread18.html#post86
__________________

Umfragen:
bitte beachten: Vorschläge für künftige Umfragen
Woher weißt du vom developers-guide?

Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw.
Danke!
Jann Hendrik ist gerade online  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 19.11.2005, 12:53 Nach oben    #8
n00b -.-
 
Benutzerbild von Bookworm
 
Registriert seit: 10.11.2005
Beiträge: 318
Standard

Ok, ich habe den Fehler erkannt. Wenn ich die " habe, interpretiert der des Als String und gibt es nur aus, kann das hinkommen?
Ich probiers nommal.
Bookworm ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 19.11.2005, 12:55 Nach oben    #9
n00b -.-
 
Benutzerbild von Bookworm
 
Registriert seit: 10.11.2005
Beiträge: 318
Standard

OK, Es funktioniert!!!
Bookworm ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 19.11.2005, 13:57 Nach oben    #10
n00b -.-
 
Benutzerbild von Bookworm
 
Registriert seit: 10.11.2005
Beiträge: 318
Standard

Äh, ja...
Ich muß mich nochmal melden. Ich habe das ganze mit Switch-Abfragen vollgepumpt, damit nur gerechnet wird, wenn alle Felder ausgefüllt sind. So, wen ich jetzt das Erste Feld leer lasse, ein Rechenzeichen eingebe, und dann eine Zahl eingebe, kommt eine von mir erstellte Fehlermeldung, dass nicht alle Felder ausgefüllt wurden.PHP ist es aber scheißegal, es rechnet auch mit keinem Wert, und deswegen häng an der Fehlermeldung das Ergebnis, das rauskäme, wenn statt dem leeren Feld ein Null stehen würde.
Guckst euch am besten selber an:

http://www.the-bookworm.de/tests/Formular.shtm

Ich möchte es jetzt so machen, das er erst rechnet, wenn alle Variablen einen Wert haben.
Vielleicht mit nem If-construct, dass erst überprüft, ob alle Variablen einen wert haben, wenn true, geh das eigentliche script los, wenn flase, kommt die fehlermeldung.
Bookworm ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 21.11.2005, 09:39 Nach oben    #11
Erfahrener Benutzer
 
Benutzerbild von schifti
 
Registriert seit: 06.12.2004
Ort: Bayern
Beiträge: 185
Standard

die Ausgabe mit exit() beenden, oder vor deinem switch eine if Abfrage, ob alle Felder ausgefüllt (wenn ich dich richtig verstanden habe, hast du die ja schon)
schifti ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 21.11.2005, 10:27 Nach oben    #12
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.381
Standard

Ich bekomme schon eine Fehlermeldung beim Versuch die Seite aufzurufen...
die existiert nämlich (dort) nicht...
__________________

Umfragen:
bitte beachten: Vorschläge für künftige Umfragen
Woher weißt du vom developers-guide?

Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw.
Danke!
Jann Hendrik ist gerade online  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 21.11.2005, 10:36 Nach oben    #13
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.516
Standard

Nu, du kannst ja testen, ob etwas übergeben wurde, z.B. mit
PHP-Code:
if(!empty($_POST['zahl1']) && !empty($_POST['zahl2'])) {
     
// rechnen
}
else {
     echo 
'Nicht alle Felder ausgefüllt.';

Grüße Ben.
Ben ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 21.11.2005, 17:51 Nach oben    #14
n00b -.-
 
Benutzerbild von Bookworm
 
Registriert seit: 10.11.2005
Beiträge: 318
Standard

@Jann: Sorry, ich hatte die Dateien in einen eigenen Ordner verschoben. Hier die aktuelle URL:
http://www.the-bookworm.de/tests/Tas.../Formular.shtm
Bookworm ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 21.11.2005, 21:03 Nach oben    #15
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.516
Standard

Hast du meinen Codeschnipsel mal angeschaut?
Ben ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 22.11.2005, 08:14 Nach oben    #16
Erfahrener Benutzer
 
Benutzerbild von schifti
 
Registriert seit: 06.12.2004
Ort: Bayern
Beiträge: 185
Standard

Wenn man das Feld leer lässt, kommt die Fehlermeldung (so ist es ok), aber wenn man ein Buchstaben eingibt, kommt gar nichts.
schifti ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 22.11.2005, 08:46 Nach oben    #17
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.381
Standard

falsch!
Zitat:
Das Ergebnis von h+9 lautet: 9
du solltest die Eingabe der Zahlen noch mit is_numeric() überprüfen!

auch falsch:
Zitat:
Das Ergebnis von 99,9+0,1 lautet: 99
da musst du wohl überprüfen, ob eine 'KOMMA-Zahl' eingegeben wurde. Wenn mit Komma, dann durch Punkt ersetzen, damit PHP korrekt damit rechnet.
__________________

Umfragen:
bitte beachten: Vorschläge für künftige Umfragen
Woher weißt du vom developers-guide?

Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw.
Danke!
Jann Hendrik ist gerade online  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 22.11.2005, 17:52 Nach oben    #18
n00b -.-
 
Benutzerbild von Bookworm
 
Registriert seit: 10.11.2005
Beiträge: 318
Standard

ahja. und wie gehen die codes genau?

mit
Zitat:
überprüfen, ob eine 'KOMMA-Zahl' eingegeben wurde. Wenn mit Komma, dann durch Punkt ersetzen, damit PHP korrekt damit rechnet.
fang ich echt nichts an. nur so eine vage vorstellung, aber die hlft mir nichts
Bookworm ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 23.11.2005, 07:25 Nach oben    #19
Erfahrener Benutzer
 
Benutzerbild von schifti
 
Registriert seit: 06.12.2004
Ort: Bayern
Beiträge: 185
Standard

mit z.B. preg_match() nach , und Buchstaben suchen, wenn ein Komma vorkommt, mit str_replace() ersetzten
schifti ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 23.11.2005, 12:29 Nach oben    #20
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.516
Standard

@schifti:
Sorry, aber wozu braucht man da reguläre Ausdrücke?
Wenn keine Buchstaben vorkommen dürfen, dann verwendet man oben erwähntes is_numeric(). Kommata können mittels str_replace() entfernt werden.
Ben ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
PingBacks sind an
RefBacks sind aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Namensgebung der Variablen WarrenFaith Allgemeine Java-Programmierung 9 14.07.2007 05:21
Anwendung, die nicht initialisierte Variablen in Dateien aufspürt Ben Gesuche 7 14.12.2006 21:50
PHP Variablen Michael PHP-Programmierung 1 23.09.2006 00:12
Variablen slater Allgemeine Java-Programmierung 6 04.11.2005 09:40
Namen einer Variablen herausfinden Ben PHP-Programmierung 20 19.10.2005 14:06


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:40 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45