Newsscript -> Verfeinerung!

Sk3l3tor

Erfahrenes Mitglied
Hi,

ich hatte mein Problem ja schon in den anderen Thread geschrieben, aber ich denke, dadurch, dass der so lang war (und dadurch unübersichtlich!), haben da dann wieder weniger und vor allem auch mal andere User reingeschaut, vielleicht findet hier ja noch jemand den Weg, der mir helfen kann.

Mein Problem:

Ich sende per Formular Daten an eine Datei, die diese Daten in eine *.txt speichert, alles wunderbar. Auf der "news.php" lasse ich diese Ausgeben, eigentlich auch noch alles wunderbar. Aber um von der 1. Seite aus eine Löschfunktion einzubauen, dachte ich mir ich mach es folgendermaßen. Der Mitarbeiter, welcher sich eingeloggt hat, findet auf seiner internen Seite folgende Möglichkeiten: 1. News schreiben 2. News löschen und 3. (irgendwann mal ;) ) News editieren.

Die Löschfunktion habe ich folgendermaßen gemacht: Der Mitarbeiter gibt in ein Feld ein, welche News er löschen möchte, dies wird dann an die delete.php geschickt, diese löscht die News, jetzt habe ich aber ein Problem, damit der Mitarbeiter weiß, welche News er löschen möchte, habe ich jeweils eine Nummer dazu ausgegen lassen, diese kann er dann bei löschen eingeben. Die Sache ist aber, dass ich die News in umgekehrter Reihenfolge ausgeben lasse, also die als erstes geschrieben wurden, erscheinen als letztes. Wenn ich jedoch jetzt z.b.: fünf News habe und lösche Nr. 2 löscht er nicht die zweite angezeigte (die auch die Nr. 2 hat), sondern er löscht, die vierte, die als zweites eingegeben wurde.

Was kann ich ändern? Entweder hätte ich gerne, dass die Nr. anders ausgegeben werden, also die ältesten News ganz unten, die Nr. 1 bekommen oder dass das Löschscript andersherum zählt.

Hier mal meine Scripts:

news.php
PHP:
<?php
$news  = file ('news.txt');
$news  = array_reverse($news);
$cnews = count($news);
	   for($i=0;$i<$cnews;$i++) {
$newsex = explode("|-|", $news[$i]);
$nr = $i +1;
print "<table style='width:300'><tr><td colspan='2' align='right'><font size='1'>News Nr. $nr</font></td></tr><tr><td><b>$newsex[0]</b></td><td align='right'><font size='1'>geschrieben am $newsex[1]</font></td></tr><tr><td colspan='2'><font size='1'>$newsex[2]</font</td></tr><tr><td colspan='2'>$newsex[3]</td></tr></table>";
}
?>
delete.php Übergabe der Variable
PHP:
<?php
$zeile = $_POST['zeile'];
$zeile = $zeile-1;
?>
delete.php function
PHP:
<?php
 function delete($zeile)
 {
   $lfi		 = file('news.txt');
   $lcdfi	   = count($lfi);
				  unset($lfi[$zeile]);
   $ldf		 = fopen("news.txt","w+");
   for($i=0;$i<$lcdfi;$i++)
   {
				  fwrite($ldf,$lfi[$i]);
   }
   fclose($ldf);
 }
?>

Ich hoffe ich habe alles verständlich beschrieben und die aufgeführten Scripts reichen!

Danke im Vorraus!
 
Eigentlich ist das ganz simple Mathematik – ich würde an deiner Stelle einfach im Löschskript von der gesamten Anzahl bisher geschriebener Links die Id der News, die gelöscht werden soll, abziehen, und schon hast du die richtige. (Je nachdem musst du noch eins dazuaddieren, falls du erst bei 1 zu zählen beginnst.)
 
Ok, danke, hatte erst nen Denkfehler, jetzt funktioniert es ;)

Jaja, die einfach Mathematik :D
 
Zuletzt bearbeitet:
Jetzt kommt das nächste Problem,

habe jetzt die Edit-Funktion eingebaut, sie funktioniert so ähnlich wie die löschfunktion! Also der Mitarbeiter gibt auf der 1. Seite ein, welche News er bearbeiten möchte, die Daten werden dann an die gleiche Seite zurückgeschickt, damit der Inhalt in den Bearbeitungsfeldern steht! Danach schicke ich das ganze an die edit.php zur verarbeitung, dann kommt leider ein Fehler:

Warning: fwrite(): supplied argument is not a valid stream resource in /home/www/htdocs/tramstens.de/weyer/edit.php on line 24

Warning: fwrite(): supplied argument is not a valid stream resource in /home/www/htdocs/tramstens.de/weyer/edit.php on line 24

Warning: fclose(): supplied argument is not a valid stream resource in /home/www/htdocs/tramstens.de/weyer/edit.php on line 26

Variablenübergabe in der edit.php
PHP:
<?php
$nameedit = $_POST['nameedit'];
$datumedit = $_POST['datumedit'];
$titeledit = $_POST['titeledit'];
$newsedit = $_POST['newsedit'];
$zeile = $_POST['zeilevalue'];
$zeile = $zeile - 1;
$newinhalt = $titeledit."|-|".$datumedit."|-|".$nameedit."|-|".$newsedit."|-|\n";
?>

edit function in der edit.php
PHP:
<?php
 function edit($zeile,$newinhalt)
 {
   $edfi		 = file('news.txt');
   $cedfi		= count($edfi);
				   unset($edfi[$zeile]);
   $edfi[$zeile] = $newinhalt."\n" ;
   $edf		  = fopen($datei,"w+");
   for($i=0;$i<$cedfi;$i++)
   {
				   fwrite($edf,$edfi[$i]);
   }
   fclose($edf);
 }
?>
Wo steckt der Fehler?
 
Ich verzweifle noch...

Wenn der User jetzt einen Zeilenumbruch macht (also Enter) im Eingabefenster, dann macht er nicht <br /> sondern \n, sprich dann kommt immer ein neuer Newseintrag, jetzt bitte sagt mir noch, wie ich das ändern kann...
 
Erstmal danke, werde mal sehen, ob ich das damit hinbekomme.

Schade, dass es hier user gibt, die einem wirklich gerne helfen und andere, die einem etwas hinwerfen und *google* dazu schreiben. Den Befehl kenne ich zwar jetzt, aber ich dacht in einem Hilfeforum sagt man einem dann auch wie ich ihn anwenden kann, muss.
 
Wo muss ich das denn einfügen?

In der News.php also bei der ausgabe?

Hier noch mal die Quellcodes:

ok.php - Verarbeitund des Grund-Formulars
PHP:
<?php
		   $inhalt = $titel."|-|".$datum."|-|".$name."|-|".$news."|-|\n";
		  // Sichergehen, dass die Datei existiert und beschreibbar ist
		  if (is_writable("news.txt")) {
			 // Wir öffnen $filename im "Anhänge" - Modus.
			 // Der Dateizeiger befindet sich am Ende der Datei, und
			 // dort wird $news später mit fwrite() geschrieben.
			 if (!$handle = fopen("news.txt", "a+")) {
				   print "Kann die Datei news.txt nicht öffnen";
				   exit;
			 }
			 // Schreibe $news in die geöffnete Datei.
			 if (!fwrite($handle, $inhalt)) {
				 print "Kann in die Datei news.txt nicht schreiben";
				 exit;
			 }
			 print "Sie haben folgenden Text in die News eingetragen:<br /><br />$titel<br /><br />$name<br /><br />$news";
			 fclose($handle);
		  } else {
			 print "Die Datei news.txt ist nicht schreibbar";
		  }
		  ?>

news.php - Ausgabe!
PHP:
<?php
					$news  = file ('news.txt');
					$news  = array_reverse($news);
					$cnews = count($news);
	   for($i=0;$i<$cnews;$i++) {
					$newsex = explode("|-|", $news[$i]);
					$nr = $cnews-$i;
					print "<table style='width:300'><tr><td colspan='2' align='right'><font size='1'>News Nr. $nr</font></td></tr><tr><td><b>$newsex[0]</b></td><td align='right'><font size='1'>geschrieben am $newsex[1]</font></td></tr><tr><td colspan='2'><font size='1'>$newsex[2]</font</td></tr><tr><td colspan='2'>$newsex[3]</td></tr></table>";
					}
  ?>
Danke, wenn ihr mir helfen könnt!
 
Bei der Ausgabe natürlich wo denn sonst :)
Bei dir irgendwo $newsex = explode("|-|", nl2br($news[$i]));

wenn das nicht geht halt danach
 
Zurück