If ,( ,{ oder anderes problem!

Ich hab da ein Problem.
Mir werden bei diesem Gleichungslöserscript, was ich zusammengebastelt hab immer Fehler angezeigt.
Zum verzweifeln!
Kann mal jeman drüberschaun und die verbesserte version schreiben?
Wär nett.

Hier isses:

<?php //Eingaben werden ausgelesen $x1 = $_POST['x1']; $y1 = $_POST['y1']; $z1 = $_POST['z1']; $x2 = $_POST['x2']; $y2 = $_POST['y2']; $z2 = $_POST['z2']; $x3 = $_POST['x3']; $y3 = $_POST['y3']; $z2 = $_POST['y4']; $e1 = $_POST['e1']; $e2 = $_POST['e2']; $e3 = $_POST['e3']; //Überprüft ob jedes Feld eingegeben wurde if (empty(($x1) or ($x2) or ($x3) or ($y) or ($y2) or ($y3) or ($z1) or ($z2) or ($z3) or ($e1) or ($e2) or ($e3))) { echo "
Bitte geben sie alle Werte ein!

Für Neueingabe Hier klicken.
"; } //Leere Menge usw. elseif((($x1 == $x2) and ($y1 == $y2) and ($z1 == $z2) and ($e1 == $e2)) or (($x1 == $x3) and ($y1 == $y3) and ($z1 == $z3) and ($e1 == $e3)) or (($x2 == $x3) and ($y2 == $y3) and ($z2 == $z3) and ($e2 == $e3))) { echo "
IL = {}
Das Ergebnis ist allgemeingültig!

Für Neueingabe Hier klicken.
"; } elseif(/*-*/((($x1 == $x2) and ($y1 == $y2) and ($z1 == $z2)) or (($x1 == $x3) and ($y1 == $y3) and ($z1 == $z3)) or (($x2 == $x3) and ($y2 == $y3) and ($z2 == $z3)) or (($x1 == $x2 == $x3) and ($y1 == $y2 == $y3)) or (($x1 == $x2 == $x3) and ($y1 == $y2 == $y3)) or (($x1 == $x2 == $x3) and ($z1 == $z2 == $z3)) or (($y1 == $y2 == $y3) and ($z1 == $z2 == $z3)) or (($x1 == $x2 == $x3) and ($y1 == $y2 == $y3) and ($z1 == $z2 == $z3))) { echo "
Die Aufgabe ist unlösbar!

Für Neueingabe Hier klicken.
"; } else { //Rechnung findet hier statt //11-Reihe $x11 = $x1 * $x2 - $x2 * $x1; $y11 = $y1 * $x2 - $y2 * $x1; $z11 = $z1 * $x2 - $z2 * $x1; $e11 = $e1 * $x2 - $e2 * $x1; //21-Reihe $x21 = $x2 * $x3 - $x3 * $x2; $y21 = $y2 * $x3 - $y3 * $x2; $z21 = $z2 * $x3 - $z3 * $x2; $e21 = $e2 * $x3 - $e3 * $x2; //22-Reihe $x22 = $x11 * $y21 - $x21 * $y11; $y22 = $y11 * $y21 - $y21 * $y11; $z22 = $z11 * $y21 - $z21 * $y11; $e22 = $e11 * $y21 - $e21 * $y11; //Ausrechnung von Unbekannter 'Z' $zend = $e22 / $z22; //Ausrechnung von Unbekannter 'Y' $yend = ($e21 - $z21 * $zend) / $y21; //Ausrechnung von Unbekannter 'X' $xend = ($e1 - $y1 * $yend - $z1 * $end) / $x1; echo "
IL={(X/Y/Z)|($xend/$yend/$zend)}.

Für Neueingabe Hier klicken.
"; } ?>

http://www.phpfriend.de/forum/ftopic57083.html

Welcher Fehler wird ausgegeben?

Derda und danach kamen noch ganz viele ander mit T_String un ‘OR’ oder so
Parse error: syntax error, unexpected ‘(’, expecting T_STRING or T_VARIABLE or ‘$’ in /users/lassej/www/Gleichung/gleichung.php on line 20

Ich vermute mal, empty mußt du auf jede Variable einzeln
anwenden. Man beachte auch, daß empty auch bedeuten kann,
daß der Wert der Variable 0 ist, kann bei einem Gleichungssystem
ja durchaus passieren, mußt da vielleicht auch was ganz anderes
prüfen.

Ja ok wenn ich das tu sagt der Browser mir aber, dass was in line 23 nicht 0k is.
(line 27 auf diesem dokument)
Aber ich da meiner meinung nach alles richtig gemacht

Tut das hier wirklich not an der Stelle?: /-/
Und darf das dort stehen? (habe sowas zumindest noch nie
probiert).
Ansonsten hast du das mal mit einem Editor angesehen, der
den Quelltext für PHP bunt macht? Da kann man besser erkennen,
ob da irgendwo eine Klammerfehlerr oder sowas drinsteckt…

Ist sowas erlaubt?: $z1 == $z2 == $z3
Habe ich auch noch nie ausprobiert und wenn, was vergleicht
eigentlich der zweite Operator?

Also kann ja mal das /-/ wegmachen war nur ne notitz.
Die drei variablen werden miteinander verglichen.
Wenn zb alle drei 4 sind dann passiert irgenwas.
Ich kann aber auch mal was anderes versuchen

Achso ich benutz weaverslave

Jetzt hab ich alles geändert da is aber immer noch ein Fehler:
Sieht so aus:

<?php //Eingaben werden ausgelesen $x1 = $_POST['x1']; $y1 = $_POST['y1']; $z1 = $_POST['z1']; $x2 = $_POST['x2']; $y2 = $_POST['y2']; $z2 = $_POST['z2']; $x3 = $_POST['x3']; $y3 = $_POST['y3']; $z2 = $_POST['y4']; $e1 = $_POST['e1']; $e2 = $_POST['e2']; $e3 = $_POST['e3']; //Überprüft ob jedes Feld eingegeben wurde if (empty($x1)) { $feld = $feldausg; } elseif (empty($x2)) { $feld = $feldausg; } elseif (empty($x3)) { $feld = $feldausg; } elseif (empty($y1)) { $feld = $feldausg; } elseif (empty($y2)) { $feld = $feldausg; } elseif (empty($y3)) { $feld = $feldausg; } elseif (empty($z1)) { $feld = $feldausg; } elseif (empty($z2)) { $feld = $feldausg; } elseif (empty($z3)) { $feld = $feldausg; } elseif (empty($e1)) { $feld = $feldausg; } elseif (empty($e2)) { $feld = $feldausg; } elseif (empty($e3)) { $feld = $feldausg; } $feldausg = '
Bitte geben sie alle Werte ein!

Für Neueingabe Hier klicken.
'; //Leere Menge usw. if((($x1 == $x2) and ($y1 == $y2) and ($z1 == $z2) and ($e1 == $e2)) or (($x1 == $x3) and ($y1 == $y3) and ($z1 == $z3) and ($e1 == $e3)) or (($x2 == $x3) and ($y2 == $y3) and ($z2 == $z3) and ($e2 == $e3))) { $leeremenge = '
IL = {}
Das Ergebnis ist allgemeingültig!

Für Neueingabe Hier klicken.
'; } elseif(((($x1 == $x2) and ($y1 == $y2) and ($z1 == $z2)) or (($x1 == $x3) and ($y1 == $y3) and ($z1 == $z3)) or (($x2 == $x3) and ($y2 == $y3) and ($z2 == $z3)) or (($x1 == $x2 == $x3) and ($y1 == $y2 == $y3)) or (($x1 == $x2 == $x3) and ($y1 == $y2 == $y3)) or (($x1 == $x2 == $x3) and ($z1 == $z2 == $z3)) or (($y1 == $y2 == $y3) and ($z1 == $z2 == $z3)) or (($x1 == $x2 == $x3) and ($y1 == $y2 == $y3) and ($z1 == $z2 == $z3))) { $unloesbar = '
Die Aufgabe ist unlösbar!

Für Neueingabe Hier klicken.
'; } else { //Rechnung findet hier statt //11-Reihe $x11 = $x1 * $x2 - $x2 * $x1; $y11 = $y1 * $x2 - $y2 * $x1; $z11 = $z1 * $x2 - $z2 * $x1; $e11 = $e1 * $x2 - $e2 * $x1; //21-Reihe $x21 = $x2 * $x3 - $x3 * $x2; $y21 = $y2 * $x3 - $y3 * $x2; $z21 = $z2 * $x3 - $z3 * $x2; $e21 = $e2 * $x3 - $e3 * $x2; //22-Reihe $x22 = $x11 * $y21 - $x21 * $y11; $y22 = $y11 * $y21 - $y21 * $y11; $z22 = $z11 * $y21 - $z21 * $y11; $e22 = $e11 * $y21 - $e21 * $y11; //Ausrechnung von Unbekannter 'Z' $zend = $e22 / $z22; //Ausrechnung von Unbekannter 'Y' $yend = ($e21 - $z21 * $zend) / $y21; //Ausrechnung von Unbekannter 'X' $xend = ($e1 - $y1 * $yend - $z1 * $end) / $x1; $ergebnis ='
IL={(X/Y/Z)|($xend/$yend/$zend)}.

Für Neueingabe Hier klicken.
'; } echo "\n$ergebnis\n$leeremenge\n$feld\n$unloesbar\n" ?>

Der Fehler ist:
arse error: syntax error, unexpected T_IS_EQUAL in /users/lassej/www/Gleichung/gleichung.php on line 37

Ich glaube, hoffmann hat recht. Ein Vergleich von mehreren Variablen geht wohl nicht
$y1 == $y2 == $y3
Ich habe soetwas jedenfalls noch nicht gesehen, und auch noch nift ausprobiert.

Hat denn irgendeiner Zeit mir das Ding zum laufen zu bringen.
Die html Datei dazu mit den input dingern ist im ordner
lassej.bplaced.net/Gleichung/gleichung.html
Aber nich ausprobieren! Ist momentan noch nicht betriebsfähig :smiley:

Also ($y1 == $y2 == $y3) soll sowas bedeuten wie folgendes?
(($y1 == $y2) AND ($y2 == $y3)) ?
Letzteres ist sicherlich eine Aussage, also entweder wahr oder
falsch, wie man das bei derartigen Konstruktionen wie if/elseif
braucht.

Ansonsten könnte obiges auch folgendes bedeuten:
(($y1 == $y2) == $y3) - da wäre dann aber $y3 immer wahr
oder falsch, ergibt also nur bei einer logischen Aussage einen
Sinn.

Wenn du ein einfaches Testskript schreibst, wo nur solch ein
einzelner Ausdruck vorkommt, bekommst du doch durch dies
Experiment sehr schnell heraus, ob oder wie das geht und vor
allem ob der Fehler daran hängt.
Etwas systematische Fehlersuche kannst du doch wohl machen,
bevor das andere Leute für dich tun sollen - das übt doch auch
;o)

$a == $b == $c bewirkt folgendes:

( $a == ( $b == $c))

wenn $b==$c:

($a == true)

das ist ein Problem…

so gehts aber:

($a == $b && $b == $c)

oder…

aber das geht hier zu weit…

Ahhhh! Ich habs dank eurer Hilfe selbst hingekriegt.
Könnt ja mal testen:
lassej.bplaced.net/Gleichung/gleichung.html
:hail: :hail:

Bei mir sagt er: ‘Bitte alle Felder ausfüllen!’ obwohl ich alle
Felder ausgefüllt habe, vermutlich hast du nicht wie oben
schon beschrieben berücksichtigt, daß empty auch beim Wert
0 wahr liefert ;o)
So kann man jedenfalls keine bereits diagonalisierten
Matrizen eingeben, wo man leicht im Kopf nachrechnen kann,
ob das Ergebnis stimmt, wenn irgendwo eine 0 steht, steigt das
Teil doch offenbar schon aus …

Wie kann ich´n den emptybefehl so umbauen dass er nur!!! bei nichteingabe reagiert?
:motz: :motz:

!isset. Lässt sich sogar auf mehrere Variablen gleichzeitig anwenden.

[quote=„Katzenkiller“]Wie kann ich´n den emptybefehl so umbauen dass er nur!!! bei nichteingabe reagiert?
:motz: :motz:[/quote]

Du musst ja eigentlich prüfen ob eine Zahl eingegeben wurde.
Schau die mal is_numeric() http://de3.php.net/manual/de/function.is-numeric.php an

Wie gesagt ich bin ein php Anfänger!!! Ich versteh das noch nich!
Kannst du mir mal eben den Befehl (is ja nich viel arbeit) auf den Wert $x1 aus einem inputkasten zusammenstückeln? :wink: