Datensatz aus TXT löschen

Hi

ich möchte aus einer txt einen betimmten datensatz löschen die txt ist so aufgebaut

ip|browser|auflösung|tag|zeit \n

Wenn ich jetzt zB 20 Einträge haben
soll hinter jedem eintrag ein link zum löschen sein

Ist das möglich?
Habe auch schon die suche benutzt aber nichts gefunden
 
Ich würde dir empfehlen noch eine spalte mit einer ID (vor der spalte ip) zu machen.

So kannst du per ID jeden Datensatz zuordnen, und so einfacher löschen.
 
Ja das ist möglich, ich hab das Problem auch irgendwo gelöst, ich such auch nochma gern nach, aber ich geb dir mal eine Theoretische Problem lösung.
Du machst hinter jeden Beitrag einen Link, der einen Angang hat, der die ID angibt, diese ID wird an eine php Datei übertragen, Die alle Einträge bis zu dieser ID aussliest und alle danach aussliest und die dann wieder einschreibt.
Du solltest aufpassen falls du befehle wie Array_reverse oder so benutzt, das du das bei der ID mit berücksichtigs. Sobald ich rausgefunden habe wie die Datei heißt die das macht poste ich den Quelltext.
// edit: Ja ich habs gerade gefunden:
PHP:
<?php
	include("passwort.php");
			$bis=$_GET['id'];
			echo $bis;
			$i=0;
			$arrPosts=file('bin/news.txt');
			$posts=count($arrPosts);
		while($post=explode(';', $arrPosts[$i]))
			{
				$i++;
			if($i>$bis) break;				
			$bis2.=$post[0].';'.$post[1].';'.$post[2].'';
    			
   			}
			while($post=explode(';', $arrPosts[$i]))
			{
				$i++;
			if($i>$posts) break;				
			$bis3.=$post[0].';'.$post[1].';'.$post[2].'';
    			
   			}
			$bis2.=$bis3;
		fclose($arrPosts);
		$fp=fopen('bin/news.txt', 'w');
		fwrite($fp, $bis2);
		
?>
 
Zuletzt bearbeitet:
ich würde den Vorschlag von Noxx nehmen und die ID vorne anhängen.

dann kanns du das recht einfach lösen.
du liest jede Zeile aus und erstellst pro Datensatz beim Aussplitten die ID des Datensatzes.
Beim löschen liest du dann jede Datenzeile ein, splittest diese, schaust ob die ID gleich der übergebenen aus dem Löschlink ist, wenn ja machst du nichts, ansonsten kopierst du den Datensatz in ein temporäres Array.
das Löschen sähe dann so aus:

PHP:
$delete_id = $_REQUEST['delete_id'];

$fh = fopen("datei.txt", "r") or die("Konnte Datei nicht öffnen!");
flock($fh, 2);
$new_data = array()
while( ! feof($fh) )
{ 
 $line = fgets($fh);
  $id = explode("|", $line);
  $id = $id[0];
   //alternativ für die beiden Zeilen: list($id, ) = explode("|", $line);
   ( $id == $delete_id ) ? ( $new_data[] = $line ) : NULL;
}
flock($fh, 3);
$fclose($fh);

$fh = fopen("datei.txt", "w") or die("Konnte Datei nicht öffnen!");
flock($fh, 2);
while( $row = each($new_data) )
{
 fwrite($fh, $row[0]);
}
flock($fh, 3);
fclose($fh);

soviel jedenfalls zum löschen.
Beim einlesen wäre da nur jede Zeile auszulesen, splitten, id auslesen und anhand der ID ein Link zum Löschen ausgeben
 
mein vorschlag :

speichere ein Array in die Textdatei wenn du schon keine
Datenbank benutzen möchtest. Oder brauchst du zwingend
das CSV Format der Textdatei ?

Wenn nicht dann schau dir unter http://www.silberkind.de/scource_code.php
mal den Quelltext für " shoutbox " an, die arbeitet nach dem Prinzip eines
Arrays das serialized wurde. Mit Serialize kannst du übrigens ein ganzes
Array in eine Tabelle packen, solltest du doch mal auf Datenbanken um
steigen.

Kostenlose Datenbanken zum Testen bekommt man übrigens
unter : http://www.freesql.org
 
Sry das ich den ganzen code poste aber ich glaub der ganze code ist für den arsc*** allein zum alles löschen unlink zu benutzen gibt chmod probleme!

Deshalb wollte ich euch bitten mir vorschläge zu verbessern zu geben.

Mit diesem Code füge ich ein :

PHP:
<?php

//Identifizieren

$http_browser = getenv("HTTP_USER_AGENT"); // Browser Erkennen

// Internet Explorer

if(strpos($http_browser, "MSIE")) { // Browser Erkennung auf Wortfolge durchsuchen
  $browser = "MSIE"; // Wenn Wort gefunden in Variable schreiben
}// If schließen

// Opera

if(strpos($http_browser, "Opera")) { // Browser Erkennung auf Wortfolge durchsuchen
  $browser = "Opera"; // Wenn Wort gefunden in Variable schreiben
} // If schließen

// Mozilla

if(strpos($http_browser, "Gecko")) { // Browser Erkennung auf Wortfolge durchsuchen
  $browser = "Mozilla"; // Wenn Wort gefunden in Variable schreiben
} // If schließen

// Netscape

if(strpos($http_browser, "Netscape")) { // Browser Erkennung auf Wortfolge durchsuchen
  $browser = "Netscape"; // Wenn Wort gefunden in Variable schreiben
} // If schließen



$zeit = date("H:i:s"); // Zeit
$tag = date("d.m.Y"); // Tag
$hoehe = $_GET['hoehe']; // Hoehe der Auflösung
$breite = $_GET['breite']; // Breite der Auflösung

$datei = "aufloesung.htm"; // Datei in der Gespeichert wird
$fp = fopen($datei,"a+"); // Öffnen und der Schreibmodus

$file=file($datei); // In Array lesen
#$da=explode("\n",$datei);
$zaehlen=count($file); // Zaehlen der Einträge

$i=1; // Start der Schleife
while($i<=$zaehlen){ // Ausführenschleife
$i++; // Erhöhen
} // Schließen der Schleife


$datensatz = "".$i."|".$breite."x".$hoehe."|".$REMOTE_ADDR."|".$browser."|".$tag."|".$zeit."\n"; // Inhalt der gespeichert wird
$datensatz = nl2br("$datensatz"); // Absätze dh \n => <br />

fputs($fp,$datensatz ); // In die Datei schreiben
fclose($fp); // Datei wieder schließen


?>

Mit diesem Lese ich aus:

PHP:
<?php
if($delete==yes)
{
$datei = "aufloesung.htm"; // Datei in der Gespeichert wird

if(unlink($datei))
{
header("Location: erg.php");
}
}


?>
<html>
<head>
<title>Unbenanntes Dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?php
$datei = "aufloesung.htm"; // Datei in der Gespeichert wird
$fp = fopen($datei,"a+"); // Öffnen und der Schreibmodus

$file=file($datei); // In Array lesen
$zaehlen=count($file); // Zaehlen der Einträge
echo "<a href=erg.php?delete=yes>Statistik Löschen</a><br><br>"; // Der Link  zum Löschen der Stats 

// Erste Tabelle mit den Namen
echo "<table width=900 border=0 cellspacing=0 cellpadding=0>
  <tr>
    <td width=50 bgcolor=#CCCCCC><div align=center><b>ID</b></div></td>
    <td width=150><div align=center><b>Aufl&ouml;sung</b></div></td>
    <td width=150 bgcolor=#CCCCCC><div align=center><b>IP</b></div></td>
    <td width=150><div align=center><b>Browser</b></div></td>
    <td width=150 bgcolor=#CCCCCC><div align=center><b>Tag</b></div></td>
	<td width=150><div align=center><b>Zeit</b></div></td><td>&nbsp;</td>
  </tr>
  <tr>
    <td width=50 bgcolor=#CCCCCC>&nbsp;</td>
    <td width=150>&nbsp;</td>
    <td width=150 bgcolor=#CCCCCC>&nbsp;</td>
    <td width=150>&nbsp;</td>
    <td width=150 bgcolor=#CCCCCC>&nbsp;</td>
	<td width=150>&nbsp;</td><td>&nbsp;</td></tr></table>";

// Zweite die generiert wir anhand der Einträge bzw Datensätze
foreach($file as $line) {
$da=explode("|",$line);  
echo "<table width=900 border=0 cellspacing=0 cellpadding=0>
  <tr>
    <td width=50 bgcolor=#CCCCCC><div align=center>$da[0]</div></td>
    <td width=150><div align=center>$da[1]</td>
    <td width=150 bgcolor=#CCCCCC><div align=center>$da[2]</div></td>
    <td width=150><div align=center>$da[3]</div></td>
    <td width=150 bgcolor=#CCCCCC><div align=center>$da[4]</div></td>
	<td width=150><div align=center>$da[5]</div></td>
	<td><a href=erg.php?loeschwert=$da[0]>Löschen</a></td>
  </tr>
</table>";
}
?>
</body>
</html>

PS Entschuldigt das ich soviel poste aber ich sehe den Wald vor lauter Bäumen nicht mehr.

Danke im Voraus

Grus M.W.
 
Zurück