Wenn Textdatei nicht vorhanden, Fehlermeldung abfangen?
Antje Bijken
- php
Hallo,
ich habe folgendes Problem:
Ich habe ein Script, welches eine Textdatei einlädt. Wenn die Textdatei mit dem angegebenen Namen nicht vorhanden ist, dann gibt mir Apache jedes Mal eine Feglermeldung aus. Kann ich diese verhindern?
Mein Script soll etwa Dateien mit der Kennung "en" einladen (für die englische Version). Ist aber keine englische Version vorhanden, so soll die deutsche Version "de" geladen werden.
Anbei mein wirklich peinliches Script, vielleicht kann mir jemand helfen?
Gruss und Kuss,
Antje
------------------------------
if (isset($contentmenge)) // Wenn Content vorhanden
{
for ($i=1; $i<=$contentmenge; $i++)
{
$txtfile[$i]=$id."-".$i;
if (isset($txtfile[$i]))
{
$file="txt/".$txtfile[$i]."_".$lang.".txt";
$txt[$i]="";
$fp= fopen($file,"r");
if ($fp)
{
while (!feof($fp))
{
$zeile= fgets($fp,100);
$txt[$i]=$txt[$i].$zeile;
}
fclose($fp);
}
else
{
echo "Textfile is not in the System";
}
}
else
{
$txt[0]="[...]";
}
}
}
Hallo,
Hi Antje!
ich habe folgendes Problem:
Ich habe ein Script, welches eine Textdatei einlädt. Wenn die Textdatei mit dem angegebenen Namen nicht vorhanden ist, dann gibt mir Apache jedes Mal eine Feglermeldung aus. Kann ich diese verhindern?
Mein Script soll etwa Dateien mit der Kennung "en" einladen (für die englische Version). Ist aber keine englische Version vorhanden, so soll die deutsche Version "de" geladen werden.
Anbei mein wirklich peinliches Script, vielleicht kann mir jemand helfen?
Gruss und Kuss,
Antje
if (isset($contentmenge)) // Wenn Content vorhanden
{
for ($i=1; $i<=$contentmenge; $i++)
{
$txtfile[$i]=$id."-".$i;
if (isset($txtfile[$i]))
Wozu dient diese Abfrage genau?
Eigentlich eher: wozu brauchst Du eine solche Datei?
Die öffnest Du doch sowieso nicht... oder?
{
$file="txt/".$txtfile[$i]."_".$lang.".txt";
$txt[$i]="";
$fp= fopen($file,"r");
$fp= @fopen($file,"r");
Das unterdrückt die Fehlermeldung.
Andere Möglichkeit:
$file1="txt/".$txtfile[$i]."_de.txt"; // lade deutsch
$file2="txt/".$txtfile[$i]."_".$lang.".txt"; // lade englisch (Variablen werden überschrieben)
Diese Variante hat den Vorteil, wenn Du in der englischen Datei irgeneine Variable vergessen hast, dann erscheint die deutsche ;)
Dazu mußt Du logischerweise beide Dateien lesen.
Sinnvoller wäre aber vielleicht direkt die englische Sprachdatei auf Existenz zu prüfen und dann - falls diese nicht vorhanden ist - die deutsche Sprachdatei zu laden.
if(!file_exists($file)) $file="txt/".$txtfile[$i]."_de.txt"; // Wenn englisch nicht vorhanden, lade deutsch
...
Oder so:
if(!file_exists("txt/".$txtfile[$i]."_".$lang.".txt")) $lang="de"; // Wenn englisch nicht vorhanden, ist Sprache deutsch
$file="txt/".$txtfile[$i]."_".$lang.".txt";
...
Oder wenn Du's lieber variabel halten willst, um später evtl. eine andere Sprache "als default" zu definieren:
if(!file_exists("txt/".$txtfile[$i]."_".$lang.".txt")) $lang=$lang_default; // $lang_default muß dann logischerweise irgendwo definiert sein, z.B. in einer include-Datei
$file="txt/".$txtfile[$i]."_".$lang.".txt";
...
if ($fp)
{
while (!feof($fp))
{
$zeile= fgets($fp,100);
$txt[$i]=$txt[$i].$zeile;
}
fclose($fp);
}
else
{
echo "Textfile is not in the System";
}
}
else
{
$txt[0]="[...]";
}
}
}
Es handelt sich hierbei nur um kleine Denkanstöße... *sanftschubs*
Ich behaupte keineswegs, daß meine Varianten die Besten sind...
Aber ich hoffe es hilft Dir dennoch weiter ;)
Bye,
Jumar
Wow!
Danke für Deine schnelle Hilfe, damit kann ich bestimmt einiges anfangen!
Kuss, Antje