[php] Kommentarfunktion in for schleife

Dj_PD

Grünschnabel
Hallo :-)

Ich bin gerade dabei mächtig php zu lernen und bin fleißig dabei ein Gästebuch zu schreiben. Ich habe mir jetzt überlegt eine Kommentarfunktion in mein Gästebuch einzubauen. Ich habe aber da noch 2 Fragen, die mir weiterhelfen meine Überlegungen zu vertiefen oder sollte es quatsch sein was ich denke neue Überlegungen (evtl.) mit Eure Hilfe zu finden.

Als allererstes zeige ich mal eben wie ich die *.txt-Datei auslese:
PHP:
	$inhalt=file("files/guestbook.txt");
	$zeilen=sizeof($inhalt);
	arsort($inhalt);

	  for ($i= $x; $i> $y ; $i--) {

		$entry = explode ("|", $inhalt[$i]);
		$nr=$entry[0];
                                ...
                                ...
                                usw.

//ich füge alle in eine $variable und dann setze ich die $variable an die passende Stelle und gebe es aus.

echo $nr;
...
...

Um jetzt an der passenden Stelle ein Link zu bekommen, wo steht "Fügen Sie ein Kommentar hinzu" habe ich mir überlegt, dass es ja in der "for-Schleife" drin sein muss. Ich habe aber mal gehört das man in einer Schleife keine direkten Befehle einsetzen kann.
Also ich habe mir gedacht das ich die Nummer in einen Formular lade.
So ca.:
PHP:
<form action="ordner/kommentar.php" method="post"><input type="hidden" name="nr" value="<? echo $nr ?>"><input name="Submit" type="image" value="Abschicken" src="images/kommentarbild.gif" alt="Schreiben Sie zu diesem Eintrag ein Kommentar" width="15" height="13"></form>

Meine 1. Frage ist:
Kann ich das einfach so in die "for-Schleife" mit einbinden oder muss ich da etwas bestimmtes bei beachten (z.B. eine function (kenne mich damit nicht aus) benutzen)?

Ich habe nämlich gehört das man so das nur einmal ausführen kann, bzw. das so fehler entstehen können und functionen lassen sich mehrmals starten bzw. ausführen.
Ich möchte wie gesagt das die Nummer ($nr) zu diesen Formular geschickt wird. So soll nämlich hinterher die Datei heißen wo die einzelnen Kommentare gepeichert werden.
Also die $1 wird dazu genutzt das ich hinterher die Datei $1.txt habe und dort werden dann alle Daten der einzelnen Personen (Personennummern) gespeichert.

Meine 2. Frage ist:
Ich habe einen Server mit Safe Mode. Kann es sein das ich dann Probleme bekomme Dateien zu erstellen? Habe ich mal gehört das dies Passieren kann. Um sicher zu gehen wollte ich mal fragen ob sich da jemand auskennt oder ob jemand einen Trick kennst (sollte es so sein) wie man das so machen kann das Dateien gespeichert werden können.

Ich habe mir ja mal überlegt nur eine Datei für die Kommentare zu nehmen, aber das wird bzw. das ist mir noch zu kompliziert im php Code das so zu schreiben das er aus irgendwelchen Zeilen die Komentare von z.B. Person 1 zu suchen und dann diese auch an der richtigen Stelle zu setzen.

Deswegen habe ich mir überlegt, bekommt jeder Einträg eine Komentardatei.
Ist auch einfacher komplette Kommentarlisten zu löschen :)

Also ich hoffe Ihr versteht was ich jetzt wollte, ich weiß leider nie wie ich das am besten ausdrücken kann.
Ich würde mich über jede Hilfe freuen
Gruss
Dj_PD
 
Hallo und herzlich willkommen in der Welt des PHP!

Du kannst in einer For-Schleife natürlich mehrere Befehle einsetzen. Manche Funktionen sollten zwar nur einmal verwendet werden (zum Beispiel solltest du nicht in einer For-Schleife die Datei immer und immer wieder öffnen), aber diese kannst du ja außerhalb der Schleife ablaufen lassen.

Hast du eine MySQL-Datenbank zur Verfügung? Wenn ja, würde ich auf die Verarbeitung von Text-Dateien verzichten, das geht oft nicht besonders gut!

Zu 2: Je nachdem wie dein Server konfiguriert ist, kann es verschiedene Probleme geben:
Am Einfachsten (aber auch am unsichersten) ist es, wenn alle Dateien, die du erstellst und auf die dein Script zugreifen soll, per chmod 0777 für alle Benutzer zum Lesen und Schreiben freigegeben werden.
Das gleiche gilt für alle Dateien, die das PHP-Script erstellt.

Mamphil
 
Hallo und Danke für das Willkommen :-)

Eine Mysql Datenbank habe ich leider erst einmal noch nicht aber ich finde das mit Textdateien garnicht mal so schlecht. So lerne ich immer wieder neue Sachen.
Wenn ich beim Kapitel MySql angelangt bin, werde ich wahrscheinlich noch bessere Sachen schreiben können, da ja MySql wie Sachen vereinfacht.

Warum ich gefragt habe, ob man in einer forschleife ein formbefehl reinmachen kann, ist folgender. Ich habe mal in einer for schleife (oder war es in einer whileschleife) eine eMail prüfung rein gemacht und als ich das Script mal getestet hatte war es so das diese Mailprüfung nur bei einem eintrag funktioniert hatte. Deswegen war ich mir jetzt nicht genau sicher ob das so funktioniert.

Die Kommentarfunktion soll ca. so ablaufen.
Wenn die Besucher auf die Seite kommen, zeigt das Script ja die (quasi) Indexdatei an, wo die Einträge angezeigt werden. Beim auslesen gibt er die Variable auch in diesen <form> - Text rein. Also $nr = die Nummer des Eintrags. Der <form>-Tag schickt das über Post die Nummer zu einem Formular wo man einen Kommentar eintragen kann. Die $nr wird dann für den Dateinamen benutzt. Also $fp=fopen("ordner/$nr.txt","a");
Natürlich muss da noch ein Befehl hin, das die Datei prüft ob Sie exestiert und ggf. erstellt.
Auf der normalen Indexseite wird es dann 3 Texte geben. Einmal "Schreibe ein Kommentar" (den Ablauf davon habe ich ja gerade erklärt) und dann noch "Es sind (x) Einträge vorhanden" und dann noch "Zeige Kommentare".

Aber jetzt wo du geschrieben hast, das ich aufpassen soll nicht in einer forschleife immer so viele Dateien zu öffnen (was ja so wäre da ich ja pro Eintrag eine Kommentardatei habe), frage ich mich schon die ganze Zeit wie ich das den sonst machen sollte, um anzuzeigen wieviele Einträge vorhanden sind. Müßte ich dafür dann eine function schreiben?

Ist das so in Ordnung?
Hat jemand vielleicht einen Tipp für mich?

Vielen Dank schonmal im Vorraus und schon das man weiß wo man Hilfe bekommt.

Gruss
Dj_PD
 
Zurück