CitationCJ Geschrieben 7. Juli 2009 Teilen Geschrieben 7. Juli 2009 Hallo, In unserem Informatikkurs in der Schule arbeiten wir gerade an einer Homepage. Jeder bekam die Aufgabe, eine Homepage zu gestalten. Nun habe ich ein kleines Problem. Ich möchte gerne auf meiner Startseite als 'plus' die Special Movements von Zürich anzeigen. Dazu habe ich eine Textdatei erstellt, in die ich diese Movements eintrage. Per PHP wird das ganze dann in einer Tabelle ausgegeben. Nun zur Frage: <table width="440" border="0"> <tr> <td width="440">Time</td> <td width="440">To</td> <td width="440">Airline</td> <td width="440">Registration</td> <td width="440">Type</td> </tr><? //Get data $data = file_get_contents('sm/zrhmovementsdep.txt'); //Split data into rows $row = split("\n",$data); $show = array(); foreach($row as $rows) { $field = split(":",$rows); ?><tr> <td bgcolor="#CCCCCC"><? echo $field[0]; ?></td> <td bgcolor="#CCCCCC"><? echo $field[1]; ?></td> <td bgcolor="#CCCCCC"><? echo $field[2]; ?></td> <td bgcolor="#CCCCCC"><? echo $field[3]; ?></td> <td bgcolor="#CCCCCC"><? echo $field[4]; ?></td> </tr> <? array_push($show, $field); } if(count($show) == 0) { ?><tr> <td colspan="5">No flights found</td> </tr> <? } ?> </table> Wie Ihr in dem Code erkennen könnt, möchte ich bei einer leeren Textdatei ' No flights found' anzeigen lassen. Leider habe ich bisher ohne Erfolg an den Variablen und dem Code gespielt, der gewünschte Text wird auch bei einer leeren Textdatei nicht angezeigt. Falls jemand einen Ansatz zur Lösung des Problems hat, bitte melden :) Grueß Pierre Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Viktor D. Geschrieben 7. Juli 2009 Teilen Geschrieben 7. Juli 2009 Dein $data enthält bei leerer oder nicht vorhandener Datei einen leeren String. Wenn du dann $row = split("\n", $data); aufrufst, wird $row ein Array mit einem Element zugewiesen, vergleiche: http://de2.php.net/manual/de/function.split.php Kommt pattern zum Beispiel überhaupt nicht vor, wird ein Array mit nur einem Element zurückgegeben. Das gilt natürlich auch, wenn string leer ist. Demnach läuft dein foreach(...) immer mindestens ein mal durch und ruft array_push(...) mindestens ein mal auf (und schreibt in $show ein Array aus einem leeren String rein). count($show) liefert demnach 1 zurück und ist != 0, daher auch keine Fehlerausgabe. :) Um die Fehlermeldung abzuprüfen würde ich statt eines $show-Arrays zu erstellen (außer du brauchst es dann noch für andere Zwecke) lieber abfragen, ob <? strlen( trim( strtr($data, "\n", "") ) ) == 0 ?> ist. Das strtr ersetzt ggf. vorhandene leerzeilen, das trim entfernt alle Leerzeichen vorne und hinten und erst darauf wird dann die Länge abgefragt. Sonst bekämst du ein problem, wenn du eine Datei hast wo mehrere Zeilenumbrüche und Leerzeichen drin sind, aber kein Inhalt. :) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
CitationCJ Geschrieben 7. Juli 2009 Autor Teilen Geschrieben 7. Juli 2009 Danke für die Antwort, die Message wird nun angezeigt, jedoch auch, wenn die Textdatei einen Eintrag enthält :S Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
CitationCJ Geschrieben 7. Juli 2009 Autor Teilen Geschrieben 7. Juli 2009 Um die Fehlermeldung abzuprüfen würde ich statt eines $show-Arrays zu erstellen (außer du brauchst es dann noch für andere Zwecke) lieber abfragen, ob <? strlen( trim( strtr($data, "\n", "") ) ) == 0 ?> ist. Das strtr ersetzt ggf. vorhandene leerzeilen, das trim entfernt alle Leerzeichen vorne und hinten und erst darauf wird dann die Länge abgefragt. Hallo Viktor :) Nochmals Danke für deine Mühe. Setzte ich nun den oben erwähnten Befehl ein, erhalte ich ein Error: Parse error: syntax error, unexpected '{' in ..../www/photography/index.php on line 102 Ist das ' als Zeichen gesehen oder hat das eine bestimmte Funktion? Ich kann kein ' erkennen. :( Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Viktor D. Geschrieben 7. Juli 2009 Teilen Geschrieben 7. Juli 2009 Dazu müsste man den Code in Zeile 102 auch sehen. Du hast eine geschweifte Klammer an einer Stelle, wo keine hingehört. Die Hochkommas (') sind teil der Fehlermeldung und schließen nur den Teil ein, der offenbar den Fehler enthält - deinem Fall die geschweifte Klammer in Zeile 102. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
CitationCJ Geschrieben 7. Juli 2009 Autor Teilen Geschrieben 7. Juli 2009 Dazu müsste man den Code in Zeile 102 auch sehen. Du hast eine geschweifte Klammer an einer Stelle, wo keine hingehört. Die Hochkommas (') sind teil der Fehlermeldung und schließen nur den Teil ein, der offenbar den Fehler enthält - deinem Fall die geschweifte Klammer in Zeile 102. Hallo Viktor, Ah verstehe, habe mal die überflüssige Klammer gelöscht, nun erhalte ich folgendes: unexpected $end [...] line 191 Line 191 gibt es nicht. Ich denke, es hängt mit diesem hier zusammen: <? strlen( trim( strtr($data, "\n", "") ) ) == 0 ?><tr> <td colspan="5">No flights found</td> </tr> <? } ?> Um die Nachricht anzuzeigen, muss sie doch irgendwie mit eingebunden werden ( dazu die Klammern, richtig? ) Lösche ich nun die letzte Klammer zwischen <? ?> , erhalte ich ebenfalls den Fehler. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Viktor D. Geschrieben 7. Juli 2009 Teilen Geschrieben 7. Juli 2009 Öh, der Ausdruck war ja nur ein Beispiel, kein fertiger code zum copy+paste ;) Der Ausdruck kommt in dein if (...), welches die Fehlermeldung einblenden soll, falls der Ausdruck true zurückliefert... Beispiel: <? if( strlen( trim( strtr($data, "\n", "") ) ) == 0 ) { echo "Errortext"; } ?> Aber wenn es bei dir anders schon funktioniert, versteif dich nicht auf meinen Vorschlag. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
CitationCJ Geschrieben 7. Juli 2009 Autor Teilen Geschrieben 7. Juli 2009 Hi Viktor, Jau bestens, hat nun wunderbar geklappt :) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.