eintrag löschen

IM_Lumpi

Grünschnabel
Hallo,
ich bin dabei mich mal an einen Gästebuch zu versuchen, hat auch bis her soweit gut geklappt.
Nun habe ich nur ein kleines Problem, ich würde gern vorhandene Eintäge löschen, ich bräucht eventuell einen Tipp wie ich dies schaffe.

PHP:
<?php
	define('data_gbook', 	"daten/gaeste.dat");	// gbook datenbank
	if(!isset($_REQUEST['action']))
	{
		$_REQUEST['action'] = "start";
	}
	$action		= $_REQUEST['action'];
	// gästebuch eintrag
	function my_nl2br($text)
	{
		return preg_replace("/\r\n|\n|\r/", "<br />", $text);
	}
	if(isset($_POST['save_gb']))
	{
		$author=trim(htmlentities($_POST['author']));
		$text=trim(htmlentities($_POST['text']));
		$entry['author']=$author;
		$entry['text']=my_nl2br($text);
		$entry['ip']=base64_encode($_SERVER['REMOTE_ADDR']);
		$entry['www']=trim(htmlentities($_POST['www']));
		$entry['email']=trim(htmlentities($_POST['email']));
		$entry['datum']=time();
		$serializedentry=serialize($entry);
		$fp=fopen(data_gbook,"a");
		fputs($fp,$serializedentry."\n");
		fclose($fp);
	}
	// start seite
	if($action == 'start')
	{
		echo"	<b><p><a href=\"".$_SERVER['PHP_SELF']."?action=gbook\">G&auml;stebuch</a></p></b>\n";
	}
	// daten einlesen und anzeigen
	if ( $action == 'gbook' || $action == 'gbanzeigen' || $action == 'gbsave')
	{
		echo"	<a href=\"".$_SERVER['PHP_SELF']."?action=gbook\">G&auml;stebuch</a>\n".
			"	<p><b>&emsp;&emsp;&bull;&nbsp;\n".
			"		<a href=\"".$_SERVER['PHP_SELF']."?action=gbanzeigen\">Anzeigen</a>\n".
			"	</b></p>\n".
			"	<p><b>&emsp;&emsp;&bull;&nbsp;\n".
			"		<a href=\"".$_SERVER['PHP_SELF']."?action=gbeintrag\">Eintragen</a>\n".
			"	</p>\n";
		$lines=file(data_gbook);
		for($i=sizeof($lines)-1;$i >= 0;$i--)
		{
			if(strlen($lines[$i]) > 0)
			{
				$data=unserialize($lines[$i]);
				$nr = ($i+1);			
				echo"<table>\n".
					"	<tr>\n".
					"		<td id='spalte1'>".$nr."</td>\n".
					"		<td>".$data['author']."</td>\n".
					"		<td id='spalte3'>".date("j.m.Y",$data['datum'])."</td>\n".
					"	</tr>\n".
					"	<tr>\n".
					"		<td>"."</td>\n".
					"		<td colspan = '2'>".$data['text']."</td>\n".
					"	</tr>\n".
					"</table>\n";
			}
		}
	}
	// daten eintragen
	if ( $action == 'gbeintrag')
	{
		echo"	<a href=\"".$_SERVER['PHP_SELF']."?action=gbook\">G&auml;stebuch</a>\n".
			"	<p><b>&emsp;&emsp;&bull;&nbsp;\n".
			"		<a href=\"".$_SERVER['PHP_SELF']."?action=gbanzeigen\">Anzeigen</a>\n".
			"	</b></p>\n".
			"	<p><b>&emsp;&emsp;&bull;&nbsp;\n".
			"		<a href=\"".$_SERVER['PHP_SELF']."?action=gbeintrag\">Eintragen</a>\n".
			"	</p>\n";
		echo"	<form action='".$_SERVER['PHP_SELF']."' method='post'>\n".
			"	<label for='name'>Name:</label>\n".
			"	<input type='text' size='20' maxlength='15' name='author' /><br />\n".
			"	<label for='name'>E-Mail:</label>\n".
			"	<input type='text' size='20' name='email' />&emsp;(optional)<br />\n".
			"	<label for='name'>Homepage:</label>\n".
			"	<input type='text' size='20' name='www' />&emsp;(optional)<br />\n".
			"	<textarea wrap=physical name='text'></textarea><br />\n".
			"	<input type=hidden name=action value='gbsave' />\n".
			"	<input id='submit_save' name='save_gb' type='submit' value='Speichern' />\n".
			"	</form>\n";
	}	
?>
 
Lass vom Script einfach vor und hinter jeder Eintragsspalte einen eindeutigen Comment schreiben.
So etwa....

Code:
|--Eintrag: 0 -->
dein Gästebucheintrag in der Form in der du ihn schreiben lässt.
<----|

Um was zu löschen musst du nur noch die Datei nach dem Vorkommen von |--Eintrag: scannen sich den Fundort merken, anschliessend alle Zeichen bis --> scannen und währenddessen von einem Collector alle Zeichen sammeln lassen.
Diese Zeichen sind dann die ID deines Eintrages.
Ist die gefundene ID die des Eintrages so wird einfach ein Ingoriere-Flag gesetzt.
Das Flag soll dein Script anweisen alles zu ignorieren bis <---|gefunden wurde.
Ist das Flag nicht gesetzt so darf das Script alle gefundenen Buchstaben lesen und zusammenfassen.
Der zusammengefasste Text kann dann einfach neu über die Datei geschrieben werden.
 
Danke schön,
hab mit array_values gelöst, es wird für jeden Eintrag eine ID vergeben.
Der Inhalt wird dann gelöscht mit:
PHP:
unset ($data[$id]);

MfG
IM_Lumpi
 
Zurück