Supportnet / Forum / Skripte(PHP,ASP,Perl...)
unexpected $end
Frage
Hab einen Parser Error mit unexpected $end auf Zeile 56
Ich weiß dass der immer am Ende kommt.
Aber kann mir bitte auch wer sagen warum???
Hier der Code:
[code]
<?php
function counter ($cF){
$fp=fopen($cF, "r");
$count=fgets($fp,6);
$count=$count;
fputs($fp,$count,6);
fclose($fp);
return $count;
}
function ls ($curpath) {
$dir = dir($curpath);
while ($file = $dir->read()) {
if($file != "." && $file != "..") {
if (is_dir($curpath.$file)) {
ls($curpath.$file."\");
} else {
echo "Interessen: Anzahl:<br>";
if ($file=="ET"){
echo "Elektrotechnik : ".counter($file)."<br>";
}
if ($file=="IT"){
echo "Informationstechnologie : ".counter($file)."<br>";
}
if ($file=="MB"){
echo "Maschinenbau : ".counter($file)."<br>";
}
if ($file=="MT"){
echo "Mechatronik : ".counter($file)."<br>";
if ($file=="nu"){
echo "noch unentschlossen : ".counter($file)."<br>";
}
echo "Besucher aus: Anzahl:<br>";
if ($file!="ET"&$file!="IT"&$file!="MB"&$file!="MT"&$file!="nu"){
echo("$file : ".counter($file)."<br>");
}
else{
echo "Für ".$file." ist keine Statistik verfügbar";
}
}
}
}
$dir->close();
return;
}
$startpath = "C:\Programme\Apache Group\Apache2\htdocs\TdoT\AW\";
ls($startpath);
?> [/code]
Antwort 1 von tomham
Ist für unser Statistik-Programm in der Schule, vielleicht als kleine Erklärung.
Es gibt die Dateien ET, IT, MB, MT, nu und Dateien deren Dateiname eine Postleitzahl ist.
In diesen Dateien steht jeweils eine Zahl, welche ich mit der Funktion counter auslese und $count zurückgebe und sie dadurch ausgebe.
Mit der Funktion ls überprüfe ich welche Dateien vorhanden sind und rufe dann eben mit dieser die Funktion counter auf.
Würd mich also echt freuen wenn mir da jemand helfen könnte !! Muss es bis spätestens 04.02.05 fertig haben, da wir am 11.02.05 Tag der offenen Tür haben.
Es gibt die Dateien ET, IT, MB, MT, nu und Dateien deren Dateiname eine Postleitzahl ist.
In diesen Dateien steht jeweils eine Zahl, welche ich mit der Funktion counter auslese und $count zurückgebe und sie dadurch ausgebe.
Mit der Funktion ls überprüfe ich welche Dateien vorhanden sind und rufe dann eben mit dieser die Funktion counter auf.
Würd mich also echt freuen wenn mir da jemand helfen könnte !! Muss es bis spätestens 04.02.05 fertig haben, da wir am 11.02.05 Tag der offenen Tür haben.
Antwort 2 von eifelbauer
1.: Bitte angewöhnen, deinen Queltext bei Klammern EINZURÜCKEN. Ich habs mal für dich gemacht:
<?php
function.counter.($cF){
..$fp=fopen($cF,."r");
..$count=fgets($fp,6);
..$count=$count;
..fputs($fp,$count,6);
..fclose($fp);
..return.$count;
}
function.ls.($curpath).{
..$dir.=.dir($curpath);
..while.($file.=.$dir->read()).{
....if($file.!=.".".&&.$file.!=."..").{
......if.(is_dir($curpath.$file)).{
........ls($curpath.$file."");
......}.
else.
{
........echo."Interessen:.Anzahl:<br>";
........if.($file=="ET"){
..........echo."Elektrotechnik.:.".counter($file)."<br>";
........}
........if.($file=="IT"){
..........echo."Informationstechnologie.:.".counter($file)."<br>";
........}
........if.($file=="MB"){
..........echo."Maschinenbau.:.".counter($file)."<br>";
........}
........if.($file=="MT"){
..........echo."Mechatronik.:.".counter($file)."<br>";
..........if.($file=="nu"){
............echo."noch.unentschlossen.:.".counter($file)."<br>";
..........}
..........echo."Besucher.aus:.Anzahl:<br>";
..........if.($file!="ET"&$file!="IT"&$file!="MB"&$file!="MT"&$file!="nu"){
............echo("$file.:.".counter($file)."<br>");
..........}
..........else
..........{
............echo."Für.".$file.".ist.keine.Statistik.verfügbar";
..........}
........}
......}
....}
....$dir->close();
....return;
..}
..$startpath.=."C:ProgrammeApache.GroupApache2htdocsTdoTAW";
..ls($startpath);
?>
(Anmerkung: Nachdem die Vorschau kam, habe ich gesehen, das hier die Leerzeichen am Anfang der Zeile rausgekickt werden.... ich hab mal alles durch "." ersetzt.)
2.: Was fällt dabei auf?
"{" gibts 13 mal,
"}" gibts 12 mal
..... Wo du deine Klammer einbauen musst, sag ich aber nicht ;-)
sanfte Grüsse aus der eifel,
eifelbauer
<?php
function.counter.($cF){
..$fp=fopen($cF,."r");
..$count=fgets($fp,6);
..$count=$count;
..fputs($fp,$count,6);
..fclose($fp);
..return.$count;
}
function.ls.($curpath).{
..$dir.=.dir($curpath);
..while.($file.=.$dir->read()).{
....if($file.!=.".".&&.$file.!=."..").{
......if.(is_dir($curpath.$file)).{
........ls($curpath.$file."");
......}.
else.
{
........echo."Interessen:.Anzahl:<br>";
........if.($file=="ET"){
..........echo."Elektrotechnik.:.".counter($file)."<br>";
........}
........if.($file=="IT"){
..........echo."Informationstechnologie.:.".counter($file)."<br>";
........}
........if.($file=="MB"){
..........echo."Maschinenbau.:.".counter($file)."<br>";
........}
........if.($file=="MT"){
..........echo."Mechatronik.:.".counter($file)."<br>";
..........if.($file=="nu"){
............echo."noch.unentschlossen.:.".counter($file)."<br>";
..........}
..........echo."Besucher.aus:.Anzahl:<br>";
..........if.($file!="ET"&$file!="IT"&$file!="MB"&$file!="MT"&$file!="nu"){
............echo("$file.:.".counter($file)."<br>");
..........}
..........else
..........{
............echo."Für.".$file.".ist.keine.Statistik.verfügbar";
..........}
........}
......}
....}
....$dir->close();
....return;
..}
..$startpath.=."C:ProgrammeApache.GroupApache2htdocsTdoTAW";
..ls($startpath);
?>
(Anmerkung: Nachdem die Vorschau kam, habe ich gesehen, das hier die Leerzeichen am Anfang der Zeile rausgekickt werden.... ich hab mal alles durch "." ersetzt.)
2.: Was fällt dabei auf?
"{" gibts 13 mal,
"}" gibts 12 mal
..... Wo du deine Klammer einbauen musst, sag ich aber nicht ;-)
sanfte Grüsse aus der eifel,
eifelbauer
Antwort 3 von tomham
Hab die Klammer gefunden !!
Nut jetzt habe ich lauter Warnungen immer mit:
fopen
fgets
fputs
und
fclose
aber die Ausgabe stimmt eigentlich soweit, nur halt dass ich den Inhalt nicht kriege
Nut jetzt habe ich lauter Warnungen immer mit:
und
aber die Ausgabe stimmt eigentlich soweit, nur halt dass ich den Inhalt nicht kriege
Antwort 4 von ThomasOOP
was ist denn inhalt der Warnungen?
Antwort 5 von tomham
Warning: fopen(): failed to open stream: No such file or directory in C:ProgrammeApache GroupApache2htdocsTdoT est.php on line 4
Warning: fgets(): supplied argument is not a valid stream resource in C:ProgrammeApache GroupApache2htdocsTdoT est.php on line 5
Warning: fputs(): supplied argument is not a valid stream resource in C:ProgrammeApache GroupApache2htdocsTdoT est.php on line 7
Warning: fclose(): supplied argument is not a valid stream resource in C:ProgrammeApache GroupApache2htdocsTdoT est.php on line 8
sind die genauen Fehlermeldungen, alle für jede Datei die ich habe
Warning: fgets(): supplied argument is not a valid stream resource in C:ProgrammeApache GroupApache2htdocsTdoT est.php on line 5
Warning: fputs(): supplied argument is not a valid stream resource in C:ProgrammeApache GroupApache2htdocsTdoT est.php on line 7
Warning: fclose(): supplied argument is not a valid stream resource in C:ProgrammeApache GroupApache2htdocsTdoT est.php on line 8
sind die genauen Fehlermeldungen, alle für jede Datei die ich habe
Antwort 6 von disco
moin
da scheint es ein problem beim öffnen der datei auszugehen (wie die warnung schon sagt).
also in zeile 4:
$fp=fopen($cF,."r");
alles anere sind folgefehler.
schau mal, ob der pfad usw. ricgig ist.
g,
disco
da scheint es ein problem beim öffnen der datei auszugehen (wie die warnung schon sagt).
also in zeile 4:
$fp=fopen($cF,."r");
alles anere sind folgefehler.
schau mal, ob der pfad usw. ricgig ist.
g,
disco
Antwort 7 von ProfiAtWork
Hi tomham,
die Backslashes bei der Pfadangabe müssen doppelt stehen, da der Backslash ein Escape-Character ist bei Strings um z.B Zeilenumbrüche , Tabulatoren usw. einzubinden.
d.h.
$startpath = "C:\Programme\Apache Group\Apache2\htdocs\TdoT\AW";
Alternativ kannst Du unter Windows auch mit dem normalen Slash / arbeiten.
d.h.
$startpath = "C:/Programme/Apache Group/Apache2/htdocs/TdoT/AW";
Ciao
die Backslashes bei der Pfadangabe müssen doppelt stehen, da der Backslash ein Escape-Character ist bei Strings um z.B Zeilenumbrüche , Tabulatoren usw. einzubinden.
d.h.
$startpath = "C:\Programme\Apache Group\Apache2\htdocs\TdoT\AW";
Alternativ kannst Du unter Windows auch mit dem normalen Slash / arbeiten.
d.h.
$startpath = "C:/Programme/Apache Group/Apache2/htdocs/TdoT/AW";
Ciao
Antwort 8 von ProfiAtWork
Hi tomahm again,
sch... Vorschau, die zeigt es ganz anders an als es hier dann wirklich steht.
Also, 2 Backslashes oder ein normaler Slash
Ciao
sch... Vorschau, die zeigt es ganz anders an als es hier dann wirklich steht.
Also, 2 Backslashes oder ein normaler Slash
Ciao
Antwort 9 von eifelbauer
Also die Vorschau hier ist wirklich <zensiert>!!
Antwort 10 von tomham
Ich habe eh die doppelten Backslash. Geht hier im Forum nicht zum darstellen.
Hab es auch mit den normalen probiert, ist aber auch nicht gegangen. Kommen immer wieder die gleichen Fehler.
Hab es auch mit den normalen probiert, ist aber auch nicht gegangen. Kommen immer wieder die gleichen Fehler.
Antwort 11 von tomham
Kann es evtl damit zu tun haben, dass die Dateien keine Endung haben, denn wenn ich sie mit Endung abspeichere kommen diese Fehler nicht.
Kann da der Parser damit nichts anfangen wenn keine Endung vorhanden ist??
Wäre nett zu wissen, kommt mir nämlich etwas komisch vor, dass es ohne Dateiendung nicht geht, mit Endung aber schon.
Würd mich freuen wenn das irgendwer weiß, denn sonst muss ich den ganzen Code umschreiben und ich hab echt keine Lust dazu.
Ist nicht nur in dem Beispiel oben, sondern sind noch ca. ganze 90 andere Files.
Würd mich also freuen wenn das irgendwer auf dieser Welt weiß.
Kann da der Parser damit nichts anfangen wenn keine Endung vorhanden ist??
Wäre nett zu wissen, kommt mir nämlich etwas komisch vor, dass es ohne Dateiendung nicht geht, mit Endung aber schon.
Würd mich freuen wenn das irgendwer weiß, denn sonst muss ich den ganzen Code umschreiben und ich hab echt keine Lust dazu.
Ist nicht nur in dem Beispiel oben, sondern sind noch ca. ganze 90 andere Files.
Würd mich also freuen wenn das irgendwer auf dieser Welt weiß.
Antwort 12 von tomham
Nun geht es auch mit Dateiendungen nicht mehr.
Kann mir bitte irgendwer aus der Patsche helfen ????
Kann mir bitte irgendwer aus der Patsche helfen ????
Antwort 13 von tomham
Weiß denn wirklich niemand etwas über diesen Fehler?
Hab schon alles probiert was man nur probieren kann.
Ist ein Projekt was ich bis Freitag den 04.02.2005 fertig haben muss und da geht es um eine extra Zusatznote.
Hab ich vom Direktor unserer Schule persönlich den Auftrag bekommen das Script zu schreiben.
Würd mich also wirklich sehr freuen wenn mir da wer helfen kann.
Quelltext ist ganz oben (hab die eine Klammer schon entdeckt die fehlte) und die Fehlermeldung mit den Streams steht ein paar Antworten weiter oben.
Also helft mir bitte bitte bitte !!
Hab schon alles probiert was man nur probieren kann.
Ist ein Projekt was ich bis Freitag den 04.02.2005 fertig haben muss und da geht es um eine extra Zusatznote.
Hab ich vom Direktor unserer Schule persönlich den Auftrag bekommen das Script zu schreiben.
Würd mich also wirklich sehr freuen wenn mir da wer helfen kann.
Quelltext ist ganz oben (hab die eine Klammer schon entdeckt die fehlte) und die Fehlermeldung mit den Streams steht ein paar Antworten weiter oben.
Also helft mir bitte bitte bitte !!

