Andreas: Zeile löschen

Hi, ich habe folgendes Problem. Ich habe sowas wie ein Gästebuch programmiert. Die Einträge werden wie folgt gespeichert:

Name|E-Mail|Erstelldatum|Text
...

Alle Einträge in diesem format stehen untereinander. Jetzt habe ich alle Einträge soweit, dass ich sie auslesen kann und auch neue Eintragen. Mein Problem besteht jetzt nur darin einzelne Einträge löschen zu können. Wie mache ich das am Besten?

Hier der bisherige Code:

<center>
<link rel=stylesheet href=style.css>

<?
$nummer = $_GET['nummer'];
$aktion = $_GET['aktion'];

$dateiname = $nummer . ".dat";
$openFile = @fopen($dateiname, "a+");

if($aktion == 'show')
{

while(!feof($openFile))
{
$line = fgets($openFile,999999);
$line = trim($line);
$mtext = explode("|",$line);
$name = $mtext[0];
$mail = $mtext[1];
$datum = $mtext[2];
$text = $mtext[3];

echo "
<table class="tbl" cellspacing="0" cellpadding="2" width="50%">
  <tr>
    <td class="uleiste"><a href="mailto:$mail">$name\n</a> <font size="1">(Schrieb am $datum) - <a href="membersguesbook.php?nummer=$nummer&aktion=???">Löschen</a></font></td>
  </tr>

<tr>
    <td class="td1">$text\n</td>
  </tr>
</table><br>";
}
echo "<br><br>
<a href="membersguestbook.php?nummer=$nummer&aktion=eintragen">Eintragen</a>";
}

elseif($aktion == 'save')
{
$datei = "$dateiname";
$altread = @fopen($datei, "r");
$openFile = @fopen($datei, "wb");
$alt = fread ($altread,999999);
$datum = date("d.m.Y",time()) . " um " . date("H:i:s");

$data = "$name|$mail|$datum|$text";

fwrite($openFile,"$data\n$alt");
fclose($openFile);

echo "
<center>Danke für den Eintrag<br><br>

<a href="membersguestbook.php?nummer=$nummer&aktion=show">Zum Gästebuch</a>";
}
elseif($aktion == 'eintragen')
{
echo "<form action="membersguestbook.php?nummer=$nummer&aktion=save" method="post" name="gbeintrag">

<script language=JavaScript>

<!--

function CheckLen(Target) {
        StrLen = Target.value.length
        if (StrLen == 1 && Target.value.substring(0,1) == ' ') {
        Target.value = ''
        StrLen = 0 }
        if (StrLen > 400) {
        Target.value = Target.value.substring(0,400)
        CharsLeft = 0 }

else {

CharsLeft = 400 - StrLen }

document.gbeintrag.anzahl.value = CharsLeft }

//-->
</script>

<center>
<table class="tbl" cellspacing="0" cellpadding="2" width="50%">

<tr class="uleiste">
    <td colspan="2">Eintrag schreiben</td>
  </tr>

<tr class="td1">
    <td>Name:</td>
    <td><input type="text" name="name"></td>
  </tr>

<tr class="td1">
    <td>E-Mail:</td>
    <td><input type="text" name="mail"></td>
  </tr>

<tr class="td1">
    <td>Text:</td>
    <td><textarea name="text" cols="30" rows="5" onChange=CheckLen(this) onFocus=CheckLen(this) onKeyDown=CheckLen(this) onKeyUp=CheckLen(this)></textarea></td>
  </tr>

<tr class="td1">
    <td><input type="submit" value="Abschicken"></td>
    <td><input type="test" name="anzahl" size="3" value="400" maxlength="3" disabled></td>
  </tr>

</table>
</center>
</form>";
}
?>

</center>

Danke im Voraus.

Gruß Andreas

  1. Hatte jetzt keine lust dan script voll zu lesen, aber

    wenn du die datei ladest und alles dann schön in eine array speicherst kannst du ein eintrag einfahc löchen mit "unset". dann tust du den array wieder mit implode zu einem string machen und dann die alte file überschreien. oder hab ich was verpasst.