Formular Array PHP TXT

sirblack1986

Cadet 2nd Year
Registriert
Juni 2008
Beiträge
16
Hallo,
ich habe eine etwas komplizierte Webseite am laufen. Leider besitzt diese keinen SQL Server. Soll jedoch trotzdem dynamisch sein.
Die Daten liegen deshalb in txt Dateien.
Jede Zeile entspricht einem Eintrag.
Ich habe bereits ein Formular über das ich neue Zeilen hinzufügen kann.
Jetzt möchte ich ein weiteres haben in dem ich die vorhandenen Zeilen bearbeiten kann.
Dazu habe ich alle Zeilen in ein großes Formular einlesen lassen und als Value anzeigen lassen.

Code:
for($i=1;!feof($fp);$i++) 
{
	$zeile = fgets($fp, 2048);
	$eintrag = explode("|", trim($zeile));						
	echo "Eintrag - $i <br>
		<table align=\"center\">
		<tr><td>Title:</td><td><input name=\"title[]\" type=\"text\" class=\"input\" size=\"40\" maxlenght=\"40\" value=\"$eintrag[4]\"></td></tr>
		<tr><td>Subtitle:</td><td><input name=\"stitle[]\" type=\"text\" class=\"input\" size=\"40\" maxlenght=\"40\" value=\"$eintrag[5]\"></td></tr>
		<tr><td>Datum (raus):</td><td><input name=\"datum[]\" type=\"text\" class=\"input\" size=\"40\" maxlenght=\"40\" value=\"$eintrag[6]\"></td></tr>
		<tr><td>Kopf:</td><td><input name=\"kopf[]\" type=\"text\" class=\"input\" size=\"40\" maxlenght=\"40\" value=\"$eintrag[2]\"></td></tr>
		<tr><td>Kommentar:</td><td><textarea name=\"text[]\" cols=\"30\" rows=\"8\" wrap=\"physical\">$eintrag[3]</textarea></td></tr>					     
           </table>";
}
$i--;
	echo"	<table>
	<tr><td>Benutzer:</td><td><input type=\"text\" name=\"user\"></td></tr>
	<tr><td>Passwort:</td><td><input type=\"password\" name=\"pass\"></td></tr>
	<tr><td></td><td><input name=\"hidden\" type=\"hidden\" value=\"$i\"></td></tr>
	<tr><td><input type=\"submit\" value=\"Absenden\"></td></tr>
	</table>
	</form>";
Dann sollen die Daten bearbeitet werden und neu danach neu geschrieben werden.
Jetzt funktioniert das Bearbeiten ohne Probleme. Jedoch nicht das Schreiben.

Ich habe zum schreiben eine Zweite Datei die dann alles erledigen soll.
Das sieht bis jetzt ungefähr so aus.
Code:
<?
	$user = isset($_REQUEST['user']) ? trim($_REQUEST['user']) : "";
	$pass = isset($_REQUEST['pass']) ? trim($_REQUEST['pass']) : "";
	$hidden = isset($_REQUEST['hidden']) ? trim($_REQUEST['hidden']) : "";
		function date2time ($date) 
			{
				$date_array = explode(".",$date);
				return mktime(0,0,0,(int)$date_array[1],(int)$date_array[0],(int)$date_array[2]);
			}
	$fp = fopen("events1.txt","a+");

      $i=$hidden;
	while($i>0) 
	{	
        echo"$i";
        echo"$title[$i]";
        	if (($user == "admin") and ($pass == ""))
		{
	$title[$i] = isset($_REQUEST['title[$i]']) ? trim($_REQUEST['title[$i]']) : "";
        $stitle[$i] = isset($_REQUEST['stitle[$i]']) ? trim($_REQUEST['stitle[$i]']) : "";
        $datum[$i] = isset($_REQUEST['datum[$i]']) ? trim($_REQUEST['datum[$i]']) : "";
        $kopf[$i] = isset($_REQUEST['kopf[$i]']) ? trim($_REQUEST['kopf[$i]']) : "";
        $text[$i] = isset($_REQUEST['text[$i]']) ? trim($_REQUEST['text[$i]']) : "";
                              
		$time = date("H:i");
		$datum1=date2time($datum[$i]);
		

		$nl = chr(13) . chr(10);
		
		$eintrag = preg_replace("/\r\n|\r|\n/", "<br>", $text[$i]);
		$eintrag = ereg_replace("ä","&auml;",$eintrag);
		$eintrag = ereg_replace("Ä","&Auml;",$eintrag);
		$eintrag = ereg_replace("ö","&ouml;",$eintrag);
		$eintrag = ereg_replace("Ö","&Ouml;",$eintrag);
		$eintrag = ereg_replace("ü","&uuml;",$eintrag);
		$eintrag = ereg_replace("Ü","&Uuml;",$eintrag);
		$eintrag = ereg_replace("ß","&szlig;",$eintrag);
	$ein = "$nl$datum1|$time[$i]|$kopf[$i]|$eintrag|$title[$i]|$stitle[$i]|$datum[$i]";
	$schreib = fwrite($fp,$ein);
	echo"Fertig ";
	}
	else
	{
		echo "<b>Falsche Zugangsdaten.</b>";
	}
        $i--;
}
fclose($fp);
Die Daten werden scheints übertragen aber nicht richtig geschrieben.
Mein Problem scheinen die Arrays aus dem Forumlaur zu sein.
Ich habe gelesen das PHP die Indizes selber setzt, aber auch ein setzen der Indizes schon im Formular brachte nicht den gewünschten erfolg. Habt ihr vielleicht ein paar Ideen was ich anders machen könnte.
Das Übertragen habe ich mit print_r($_REQUEST) getestet. Die daten sind alle da.
mfg
 
die variablen
$_REQUEST['title[1]'] etc. existieren nicht.
Wen du das schon so machst, wird das ganze ja als array gespeichert.
Also:
$_REQUEST['title'][$i]

zur hilfe mach einfach mal print_r($_REUQEST[]);
oder
print_r($_REQUEST['title']




Ansonsten solltest du mal erheblich an deinem programmierstil arbeiten.
Wenn du schon ein einer "etwas komplizierteren Seite" arbeitest, würde es sich lohnen das ganze etwas strukturierter anzupacken.

Das fängt damit an, dass du versuchst eine Datenbank zu programmieren anstatt dir eine zu besorgen (was wirklich NICHT schwer ist).
Dann solltest du, wenn du shcon etwas machst, ein paar Klassen programmieren, die die Abstraktion von Daten zu deinem Datenbank-ersatz schafft.
Weiter geht es bei der Trennung von HTML vom PHP code ( TEMPLATES!!!)

Und dann letztendlich kommt man an beim "Aussehen" des codes: Leerzeichen; korrektes Einrücken etc. (function date2time zb)

Und wenn du schon html und php mixed, dann bitte so:
echo 'text 123'.$meineVariable.'<table style=""'.$nochEineVariable;
so brauchst du zb die ganzen " von html nicht escapen.

Aber ich hör jetzt lieber auf sonst sitz ich hier noch 2 tage ;)
 
Hallo,
ich bin begeistert. Das Ganze hat wirklich funktioniert. Die Daten werden wieder geschrieben und es funktioniert denke ich.

Bei der Homepage handelt es sich eigentlich um eine statische Homepage. Nur ein zwei Stellen sind etwas dynamisch gehalten. Dafür habe ich bisher ein wenig PHP benutzt. Jedoch bin ich noch nicht sehr weit mit dem lernen von PHP, da die Programmiersprache etwas seltsam ist manchmal.
Der Webspace verfügt leider nicht über eine SQL Datenbank. Deshalb habe ich es auch noch nich geschafft mich da rein zu arbeiten. Auch fehlt mir etwas der Antrieb MySQL zu verwenden wenn ich alles was ich brauche auch so erledigen kann.
Aber Templates kann ich mir mal ansehen.
Das Einrücken ist alles etwas verschoben beim kopieren in das Forum.
Ich Rücke immer alles mit Tabs ein und finde meine Programmierungen eigentlich richtig übersichtlich.
Wenn man sich da manch andere Skripte ansieht ist das schon viel besser.
Außerdem hatte ich in meinem ersten Beitrag erwähnt, das ich print_r($_REQUEST) bereits getestet hatte.
Kannst du mir vielleicht ein gutes Tutorial für PHP mit MySQL empfehlen? Gibt es eine Software, mit der ich auch ohne passenden Webspace entsprechende PHP und SQL Dateien testen kann?

Also Danke für deine Hilfe.
 
Zuletzt bearbeitet:
xampp iss sehr schöne software... apache und sql ist im handumdrehen lokal eingerichtet und du kannst alles ausprobieren, kaputt machen und dann wieder neu installieren, bis du das alles richtig verstehst ;)
 
so iss es... aber learning by doing iss so mein ding... aber jedem das seine, der eine liest lieber 10 tage tutorials und macht sich dann an die sache ran, der andere macht alles lieber 10 tage lang kaputt und setzt alles wieder neu auf, bis er es drauf hat... eben so, wie jeder mag ;-)
 
Zurück
Oben