Kann den Fehler nicht finden

Hi

Für eine Umfrage hab ich folgende Auswertungsdatei:

[code]<?php
//Die Variablen der Umfrage
$werte = array("[A]", “[B]”, “[C]”, “[D]”, “[E]”, “[F]”, “[G]”, “[H]”, “[I]”, “[J]”);
$frage = htmlentities("[Titel]");
$ergebnis = “ergebnis.txt”;
sort($werte);
$anzahl = count($werte);
$nz = chr(13).chr(10);
if (!file_exists($ergebnis)) {
$dz = fopen($ergebnis, “w”);
for ($i = 0; $i < $anzahl; $i++) {
$eintrag = $werte[$i].$nz.“0”.$nz;
fwrite($dz, $eintrag);
}
fclose($dz);
}
?>

<?= $frage ?>

<?php if (!isset($_POST['Umfrage'])) { echo "

Bitte erst abstimmen, dann klicken

} else { $stimme = $werte[$_POST['Umfrage']]; echo "

Deine Antwort: $stimme

; aktuell = ""; $alle_stimmen = 0; $poll = array(); $dz = fopen($ergebnis, "r"); while (!feof($dz)) { $name = trim(fgets($dz)); $wert = trim(fgets($dz)); if ($stimme == $name) $wert++; $poll[$name] = $wert; $aktuell .= $name.$nz.$wert.$nz; } fclose($dz); $dz = fopen($ergebnis, "w"); fwrite($dz, trim($aktuell)); fclose($dz); } ?> [/code] Allerdings bekomm ich hierbei diese Fehlermeldung: [quote]Parse error: syntax error, unexpected '[', expecting ']' in /users/trekwork/www/php/pollmaker/test.php on line 27[/quote] Wieso soll da bitte ein ] hin? Hoffe, dass mir einer von euch php-Freaks helfen kann :wink:

Gruß,
TrekWork

P.S.: Das Script ergibt als Umfrage-Auswertung vielleicht nicht ganz so viel Sinn - ich
bau noch dran.

Probier mal damit…
Wenns funzt sag bescheid

[code]<?php
//Die Variablen der Umfrage
$werte = array("[A]", “[B]”, “[C]”, “[D]”, “[E]”, “[F]”, “[G]”, “[H]”, “[I]”, “[J]”);
$frage = htmlentities("[Titel]");
$ergebnis = “ergebnis.txt”;
sort($werte);
$anzahl = count($werte);
$nz = chr(13).chr(10);
if (!file_exists($ergebnis)) {
$dz = fopen($ergebnis, “w”);
for ($i = 0; $i < $anzahl; $i++) {
$eintrag = $werte[$i].$nz.“0”.$nz;
fwrite($dz, $eintrag);
}
fclose($dz);
}
?>

<?= $frage ?>

<?php if (!isset($_POST['Umfrage'])) { echo "

Bitte erst abstimmen, dann klicken

"; } else { $stimme = $werte[$_POST['Umfrage']]; echo "

Deine Antwort: $stimme

; aktuell = ""; $alle_stimmen = 0; $poll = array(); $dz = fopen($ergebnis, "r"); while (!feof($dz)) { $name = trim(fgets($dz)); $wert = trim(fgets($dz)); if ($stimme == $name) $wert++; $poll[$name] = $wert; $aktuell .= $name.$nz.$wert.$nz; } fclose($dz); $dz = fopen($ergebnis, "w"); fwrite($dz, trim($aktuell)); fclose($dz); } ?>[/code]

Uhm, danke, den Fehler hast du raussortiert. Woran lags?

Jetzt kamen noch 2 Fehler, den einen konnte ich lösen, den anderen aber nicht:

Du hast bei nem echo in Zeile 25 oder so ein " und ; vergessen :wink:

Poste mal aktuellen Code^^

[code]<?php
//Die Variablen der Umfrage
$werte = array("[A]", “[B]”, “[C]”, “[D]”, “[E]”, “[F]”, “[G]”, “[H]”, “[I]”, “[J]”);
$frage = htmlentities("[Titel]");
$ergebnis = “ergebnis.txt”;
sort($werte);
$anzahl = count($werte);
$nz = chr(13).chr(10);
if (!file_exists($ergebnis)) {
$dz = fopen($ergebnis, “w”);
for ($i = 0; $i < $anzahl; $i++) {
$eintrag = $werte[$i].$nz.“0”.$nz;
fwrite($dz, $eintrag);
}
fclose($dz);
}
?>

<?= $frage ?>

<?php if (!isset($_POST['Umfrage'])) { echo "

Bitte erst abstimmen, dann klicken

"; } else { $stimme = $werte[$_POST['Umfrage']]; echo "

Deine Antwort: $stimme

; aktuell = ''; $alle_stimmen = 0; $poll = array(); $dz = fopen($ergebnis, "r"); while (!feof($dz)) { $name = trim(fgets($dz)); $wert = trim(fgets($dz)); if ($stimme == $name) $wert++; $poll[$name] = $wert; $aktuell .= $name.$nz.$wert.$nz; } fclose($dz); $dz = fopen($ergebnis, "w"); fwrite($dz, trim($aktuell)); fclose($dz); } ?> [/code] gibt den folgenden Fehler: [quote]Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in /users/trekwork/www/php/pollmaker/test.php on line 32[/quote]

[code]<?php
//Die Variablen der Umfrage
$werte = array("[A]", “[B]”, “[C]”, “[D]”, “[E]”, “[F]”, “[G]”, “[H]”, “[I]”, “[J]”);
$frage = htmlentities("[Titel]");
$ergebnis = “ergebnis.txt”;
sort($werte);
$anzahl = count($werte);
$nz = chr(13).chr(10);
if (!file_exists($ergebnis)) {
$dz = fopen($ergebnis, “w”);
for ($i = 0; $i < $anzahl; $i++) {
$eintrag = $werte[$i].$nz.“0”.$nz;
fwrite($dz, $eintrag);
}
fclose($dz);
}
?>

<?= $frage ?>

<?php if (!isset($_POST['Umfrage'])) { echo "

Bitte erst abstimmen, dann klicken

"; } else { $stimme = $werte[$_POST['Umfrage']]; echo "

Deine Antwort: $stimme

"; aktuell = ''; $alle_stimmen = 0; $poll = array(); $dz = fopen($ergebnis, "r"); while (!feof($dz)) { $name = trim(fgets($dz)); $wert = trim(fgets($dz)); if ($stimme == $name) $wert++; $poll[$name] = $wert; $aktuell .= $name.$nz.$wert.$nz; } fclose($dz); $dz = fopen($ergebnis, "w"); fwrite($dz, trim($aktuell)); fclose($dz); } ?>[/code]

again echo…^^

Lol, gibt es nicht irgendein Programm, dass solche primitiven Fehler rausfindet?
Mir passiert das in letzter Zeit öfter :smiley:

Danke iNaD

Ja gibt eins, was auf sowas aufpasst und sich deine funktionen etc merkt. Aber das kostet.

Gibt es, und das heißt PHP. :wink:

Die Fehlermeldungen von php sind nicht immer sehr hilfreich. Eine simple
Fehlermeldung, sagt mir nur, dass was falsch ist, aber nicht wo und was.
Das muss ich dann selber suchen.

Oder ich such es für dich :smiley:

Die Fehlermeldungen sind meistens sogar sehr hilfreich.

Das stimmt doch gar nicht. PHP-Fehlermeldungen sehen doch nicht so aus:[quote]Warning: WTF?[/quote]
Das hier z. B. -[quote]Parse error: syntax error, unexpected T_STRING, expecting ‘,’ or ‘;’ in /users/trekwork/www/php/pollmaker/test.php on line 32[/quote]- sagt dir, welche Zeile in welcher Datei und was schiefgelaufen ist.

Es war aber 2 Zeilen davor oder so^^ aber meistens stimmt es.
Die Warnung WTF ist aber auch gut :smiley:

Es gibt gratis PHP-Debugger, nur so zur Info :wink:

Beispiel: dd.cron.ru/dbg/
Sollte aber noch bessere geben :wink:

naja

sagt doch schon alles…
in zeile 32 tritt ein fehler auf. php erwartet ein , oder ; in der zeile, damit dein echo beendet wird, da kannst du doch von selbst drauf kommen oder?^^

genügt ein kleiner blick.

Nöö. Das sagt mir nur, dass er da ein , oder ein ; erwartet. Aber ich habe es
in der Zeile nicht vergessen, sondern in einer ganz anderen. Und auch was
ich in dieser Zeile falsch gemacht habe (also " weggelassen oder so) sagt er mir auch
nicht. Von daher relativ schwachsinnige Meldung, denn daran lag es ja nicht,
sondern an einem Fehler, der weiter oben auftrat.

es kann doch nicht das problem sein zu merken, dass man die ganze zeit in ein echo schreibt, wenn man schon auf erste zeile hingewiesen wird, wo es problematisch wird, oder?

besonders bei unexpectet XY ist eigentlich klar, dass man etwas weiter oben wohl ein ; , ) ( {} vergessen hat… besonders wenn da sogar steht, WAS man vergessen hat…

Naja ich vergesse eigentlich nie ; oder so.
Bloß manchmal bei arrays mach ich ausversehen statt , ein ;
Das fällt aber schnell auf.
Und manchmal sind die Meldungen von PHP nicht hilfreich. Was aber auch daran liegt, dass es ja auch nicht dafür da ist die zu sagen wie du richtig programmierst^^

Die Fehklermeldungen sind immer hilfreich, wenn ein Fehler in Zeile 15 auftritt kann der Fehler nur in Zeile 14 oder 15 liegen ^^

@michi: Ganz so ist es ja auch nicht. Der Fehler „unexpected $end“ ist z. B. in überragend vielen Fällen kein bisschen hilfreich.[quote=“TrekWork”]Nöö. Das sagt mir nur, dass er da ein , oder ein ; erwartet. Aber ich habe es in der Zeile nicht vergessen, sondern in einer ganz anderen.[/quote]
Mag sein, aber PHP kann es dir nicht früher sagen. PHP wird sich nur beschweren, wenn es einen Fehler findet, und der tritt eben später auf - ein vergessenes Zeichen verursacht nicht unbedingt in der selben Zeile einen Fehler.