Zeile in Textdatei löschen

Perfekt! :)

So nun steht nur noch die eine Aufgabe offen und dann lasse ich dich für heute in Ruhe :)

Also wenn ich damit mir den Inhalt anzeigen lasse;

PHP:
foreach( file( "intern/projects.txt" ) as $v ) 
{
$d  = explode( "|", $v );
$name = $d[0];
$url = $d[1];
$info = $d[2];

echo "
<br>
<table width='100%' bgcolor='#e9e9e9' style='border-width: 2px; border-style: dotted; border-color: #ff7b10;'>
<tr>
<td width='100%'>
<font color='#ff7b10'><b>$name:</b></font>&nbsp;<a href='$url' target='_blank'>$url</a>
<br>
<font color='#150185'>$info</font>
</td>
<td valign='top'>
<input type='submit' name='delete_projects' class='button' style='width: 80px; color: #FF0000;' value='L&ouml;schen'>
</td>
</tr>
</table>
";

}

Möchte ich nun, dass wenn man den Löschen - Button betätigt, dass nur dieser Datensatz in der bestimmten Zeile gelöscht wird. Also die komplette Zeile!? :confused:
 
Okay, also hier dein Listing:
PHP:
foreach( file( "intern/projects.txt" ) as $intIdx => $v ) 
{
	$d  = explode( "|", $v );
	$name = $d[0];
	$url = $d[1];
	$info = $d[2];
	
	?>
		<br>
		<form method="post" action="">
			<input type="hidden" name="linenumber" value="<?= $intIdx ?>" />
			<table width='100%' bgcolor='#e9e9e9' style='border-width: 2px; border-style: dotted; border-color: #ff7b10;'>
				<tr>
					<td width='100%'>
						<font color='#ff7b10'><b><?= $name ?>:</b></font>&nbsp;<a href='<?= $url ?>' target='_blank'>$url</a>
						<br>
						<font color='#150185'><?= $info ?></font>
					</td>
					<td valign='top'>
						<input type='submit' name='delete_projects' class='button' style='width: 80px; color: #FF0000;' value='L&ouml;schen'>
					</td>
				</tr>
			</table>
		</form>
	<?
}

Jetzt das löschen:
PHP:
if( isset($_POST['linenumber']) )
{
	$intLineNumber = intval($_POST['linenumber']);
	$strSourceFile = "c:\\_reference.txt";
	$strDestFile = "c:\\_reference.tmp";
	
	$rscSource = fopen($strSourceFile, 'r');
	if( is_resource($rscSource) )
	{
		$rscDestination = fopen($strDestFile, 'w+');
		if(! is_resource($rscDestination) )
			throw new Exception('Die temporäre Datei konnte nicht erstellt werden, prüfen Sie, ob Sie Schreibrechte in dem angegeben Ordner besitzen.');
		
		$intLineCounter = 0;
		while(! feof($rscSource) )
		{
			$intLineCounter++;
			$strLine = fgets($rscSource, 4096);
			if( $intLineCounter !== $intLineNumber )
			{
				fputs($rscDestination, $strLine);
			} 
		}
		
		fclose($rscSource);
		fclose($rscDestination);
		unlink($strSourceFile);
		rename($strDestFile, $strSourceFile);
	}
}
 
Der mekert das hier an;

PHP:
throw new Exception('Die temporäre Datei konnte nicht erstellt werden, prüfen Sie, ob Sie Schreibrechte in dem angegeben Ordner besitzen.');
Parse error: parse error, unexpected T_NEW in /homepages/31/d225391915/htdocs/intern/index.php on line 107
 
Super funktioniert! Man kann allerding nur alle bis auf einen Löschen. Also wenn nur noch einer übrig ist, kann man den nicht löschen :confused:

Ist bestimmt nur noch nen kleiner Fehler oder?

EDIT: Habe das unsichtbare Inputfeld einfach so;

<input type="hidden" name="linenumber" value="<?= $intIdx ?>" />

in ein echo - Area eingefügt :) Das war der Fehler!
 
Zuletzt bearbeitet:
Du kannst jetzt auch den letzten Datensatz löschen, ja? Lass mich raten, jetzt musst du nur noch vorhandene Datensätze bearbeiten können, oder? :D
 
Ne soweit gehe ich nicht!

Aber wie gesagt, ich kann alle löschen, aber einer bleibt immer übrig, der nicht gelöscht werden kann!? :confused:
 
Welche "linenumber" hat der Datensatz, wenn du nur noch einen in der Datei hast? Ich vermute 0, wenn das der Fall ist, dann musst Du $intLineCounter an das Ender der While-Schleife packen, dann sollte auch der letzte Datensatz gelöscht werden können.
 
Zurück