• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

If-else-Überprüfung gibt nur If aus

Max T.

Mitglied
Hallo,
ich stehe vor einem Problem, welches ihr Profis wohl recht schnell lösen könnt, nur ich suche bereits den ganze Nachmittag nach dem Fehler :???:
Also: Ich habe eine Datei, in die Kommentare hintereinander geschrieben werden. Wenn ein Kommentar existiert, soll eine andere Datei eingebunden werden. Wenn die Datei allerdings leer ist, soll eine Meldung ausgegeben werden.
Hier mein Code:
PHP:
$Kommentare = fopen("comments.html","r");
$Inhalt = fgets($Kommentare, 1);
if ($Inhalt == "")
 {echo("<i>Leider noch keine Kommentare vorhanden.</i>"); 
   }
else
 {$Kommis = include("contComments.php"); echo $Kommis;
  }
Allerdings wird, egal ob in "comments.html" jetzt ein Kommentar steht oder nicht, immer Leider noch keine Kommentare vorhanden. ausgegeben. Wer kann mir helfen? :(

Viele Grüße!
 
Werbung:
Ja, wenn die Datei ja komplett leer ist, dann müsste da das eine Zeichen auch leer sein. Aber selbst wenn ganz am Anfang was steht (Also Zeichen 1 existiert) kommt immer noch die Meldung Leider noch keine Kommentare vorhanden. :?:
 
Werbung:
Du überprüfst nicht die Variable $Kommentare nach dem fopen(). Wenn das fopen() erfolgreich war enthält es eine Resssource-Id, andernfalls wird false zurückgegeben. Im Fehlerfall wird lediglich eine Meldung vom Typ E_WARNING zurückgegeben. Je nach Servereinstellung wird diese unterdrückt. Zum Testen solltest Du Dir auf jeden Fall "jeden Rotz" anzeigen lassen:
PHP:
// Am Anfang des Scripts einfügen
error_reporting(-1); 
ini_set('display_errors', true);
Nun werden alle Fehler, auch Warnungen angezeigt.

Darüber hinaus verwendest Du (vermutlich) das include falsch. Von Haus aus liefert include wohl keinen Rückgabewert.
 
@thuemmy:
Ich verwende momentan dieses Programm namens "XAMPP" welches mir auch ganz viele Fehlermeldungen ausgibt. Meintest du deinen Script ergänzend zu dem Programm oder sollte ich ihn zusätzlich anwenden?
Das mit dem Include hat aber bei mir immer so geklappt, aber ich glaube nicht dass es daran liegt. Oder was mache ich, wenn doch, mit Include genau falsch?
VG
 
XAMPP ist ein Programm, welches dir ermöglicht per Webserver deine PHP-Dateien zu parsen und anzuzeigen. Der o.g. Code-Schnippsel ist also für deine Programmierung gedacht, also deine PHP-Datei(en).

Das hier ist einfach falsch:
PHP:
$Kommis = include("contComments.php");echo $Kommis;

Siehe auch Manual:
PHP: include - Manual

Das brauchst Du aber auch gar nicht, wenn Du den Inhalt von "contComments.php" direkt ausgeben willst. Dann reicht

PHP:
include("contComments.php");

völlig aus.
 
Werbung:
Hallo threadi,
das include("contComments.php"); habe ich bereits versucht, als das nicht klappte, habe ich es mit der Variablen versucht. Aber gut, ich werde es ohne der Variablen belassen.
Nur leider wird immer noch die selbe Meldung "Keine Kommentare vorhanden." ausgegeben... :???:
 
Du willst prüfen, ob die Datei comments.html etwas enthält? Versuch es mal so:

PHP:
$filecontent = file_get_contents("comments.html");
if( strlen($filecontent) == 0 ) {
 echo "<i>Leider noch keine Kommentare vorhanden.</i>";
}
else
...
 
Werbung:
Dann solltest Du ihn dir unbedingt genauer anschauen. Denn Du solltest keinen Quellcode verwenden den Du nicht auch verstehst.

Kurze Erklärung:
PHP:
$filecontent = file_get_contents("comments.html");

Lädt den Inhalt der Datei komplett in die Variable $filecontent. Siehe Manual zu file_get_contents():
PHP: file_get_contents - Manual

PHP:
if( strlen($filecontent) == 0 ) {

Prüft die Länge des Strings in $filecontent. Siehe Manual zu strlen():
PHP: strlen - Manual

Wichtig: diese Art Programmierung sollte man in der Form nicht für produktive Systeme verwenden. Wenn Du das machst um dir PHP nur anzuschauen, dann mach es. Aber versteh auch den Quellcode. Wenn Du das aber für eine Webseite machst die auch im Internet erreichbar sein soll, solltest Du dir eine andere Methode überlegen um die Kommentare zu speichern. Optimal wäre die Verwendung einer MySQL-Datenbank dafür.
 
Hallo,
momentan soll das nur eine kleine Kommentarfunktion sein, pro Seite so 2-3 Kommentare. Deshalb wollte ich mich auch garnicht länger mit PHP auseinander setzen weil ich es sonst eigentlich nicht brauche. Ich werde mich jetzt vom Webdesign abwenden. ;)
Trotzdem nochmal viele Dank für die Mühe!
VG
 
Zurück
Oben