fehler im script :(

C4T

Erfahrenes Mitglied
hi

verzweifle gerade, weil ich den überblick verloren habe.
bekomme diese fehlermeldung:
Code:
Parse error: parse error, unexpected T_ELSE in C:\Apache2\htdocs\gbook2.php on line 23
und das ist mein php code
PHP:
<?php

function schreibedatei ($email,$name,$kommentar)
{
$datei="gbook.txt";
$kommentar=strip_tags($kommentar);
$kommentar=htmlentities($kommentar);
$name=htmlentities($name);
$oeffnen=fopen($datei, "a"); 
fwrite ($oeffnen,"<a href=\"mailto:$email\">$name</a>\n$kommentar\n<hr>\n");
fclose ($oeffnen);
$allesklar=TRUE;
}
else //DAS HIER IST LINE 23 WO ER DANN MECKERT !!!
{
$allesklar=FALSE;
}
return $allesklar;
}
// rückmeldung für den benutzer
$callfunction=schreibedatei ($email,$name,$kommentar);
if($callfunction)
{
print ("danke für den eintrag");
}
else
{
print ("fehler, bitte nochmal versuchen");
}

?>
weis nicht genau was da mit der else funktion falsch ist.
hat jemand nen tipp ?
thanks
 
Ja ist ja ganz einfach... else kann die Kontrollstruktur if erweitern, aber nicht eigenständig stehen. Ohne if kein else ;)
 
oh, danke.
ich idiot habs übersehn.

folgendes hat gefehlt:
PHP:
if ($name == "" or $email == "" or $kommentar == "")
      {
	  echo "Bitte alle Felder ausfüllen!<br>";
      }
      else if ($oeffnen)
      {
das ist doch die if anweisung mensch :-)
hätte sie nur reinschreiben müssen *kopfschüttel*

zudem habe ich noch vergessen die formularvariablen umzudefinieren.
das muss ich machen, da in meiner php.ini "register_globals=off" steht, und er somit die bezeichnungen meiner formularnamen nicht automatisch als variablen übernimmt.
ist das eigentlich normal das dieser wert auf off steht ?
oder fragen wir mal anderst ... was sind denn da vor und nachteile ?
gibt es da sicherheitslücken oder ähnliches ?

noch ne frage.
wenn sich also jemand in dieses gästebuch einträgt, werden die texte ja geaddet. leider bringt er mir die neuen beiträge unten. die hätte ich aber oben stehen. wie muss ich das denn anpacken ?

thanks 4 help.
 
Zuletzt bearbeitet:
Hi.


Bei den Nachteilen zu globalen Variablen suchst du mal in Forum. Gab es öfters.


Du sagst einfach bei deiner fopen-Anweisung nicht "a", sondern "r+".
Bei "a" wird der Zeiger aufs Ende der Datei gesetzt.
Bei "r+" auf den Anfang. ;-)



Grüße, Ronin
 
Original geschrieben von ronin
Hi.


Bei den Nachteilen zu globalen Variablen suchst du mal in Forum. Gab es öfters.


Du sagst einfach bei deiner fopen-Anweisung nicht "a", sondern "r+".
Bei "a" wird der Zeiger aufs Ende der Datei gesetzt.
Bei "r+" auf den Anfang. ;-)



Grüße, Ronin

hi

ok, ich such mal.

ähh aber zu der anderen sache ... da liegst du leider falsch. an diese option (r+) habe ich natürlich auch als erstes gedacht, aber das problem ist dann, dass er alle beiträge überschreibt und nur deinen aktuellen beitrag anzeigt.
geht somit also leider nicht.
weis sonst noch jemand rat ?
gruß
 
Les einfach den ganze Inhalt aus (file()), setz den Eintrag vorne dran, und schreibs dann nochmal neu in die Datei!
 
Original geschrieben von C4T
noch ne frage.
wenn sich also jemand in dieses gästebuch einträgt, werden die texte ja geaddet. leider bringt er mir die neuen beiträge unten. die hätte ich aber oben stehen. wie muss ich das denn anpacken ?

mach das doch beim auslesen?

PHP:
<?
// datei in ein array einlesen
$datei = file("datei.txt)";

// array umkehren
$datei = array_reverse($datei);

// den ersten eintrag (sprich: den aktuellsten) ausgeben
echo $datei[0];
?>
 
Zurück