Hi,
I've got this peice of code that basically does what I need except when I delete a row from the text file, it rewrites the rest of the file alphabetically by title instead of alphabetically by id. Can anyone help me sort this out (I know, I know - horrible pun...)
3|Third Entry
2|Second Entry
1|First Entry
<?
$file = 'file.txt';
if ( isset ( $_POST['delete'] ) )
{
$trap = array ();
foreach ( $_POST['delete'] AS $item )
{
if ( ( $new = intval ( $item ) ) != 0 && ! in_array ( $new, $trap ) )
{
$trap[] = $new;
}
}
if ( ! empty ( $trap ) )
{
$keep = array ();
$io = file ( $file );
for ( $i = 0; $i < sizeof ( $io ); $i++ )
{
$parts = explode ( '|', $io[$i] );
if ( ! in_array ( $parts[0], $trap ) )
{
$keep[] = trim ( $parts[1] );
}
}
$data = '';
for ( $i = ( sizeof ( $keep ) - 1 ); $i >= 0; $i-- )
{
$$data = $data . ( $i + 1 ) . "|" . $keep[$i] . "\r\n";
}
$io = fopen ( $file, 'w' );
fputs ( $io, substr ( $data, 0, -2 ) );
fclose ( $io );
}
}
echo "<center>\r\n";
echo "Add New Title:<br /><br />\r\n";
echo "<form action='" . $_SERVER['PHP_SELF'] . "' method='post'>\r\n";
echo "New Title<br /><br />\r\n";
echo "<input type='text' name='new_title'><br /><br />\r\n";
echo "<input type='submit' value='Save Data >>'>\r\n";
echo "</form><br /><br /><br /><br />\r\n";
if ( isset ( $_POST['new_title'] ) )
{
$title = trim ( $_POST['new_title'] );
$io = fopen ( $file, 'r+' );
$line = fgets ( $io, 4096 );
$new_data = ( substr ( $line, 0, strpos ( $line, '|' ) ) + 1 ) . "|" . $title . "\r\n";
fseek ( $io, 0 );
while ( ! feof ( $io ) )
{
$new_data .= fgets ( $io, 4096 );
}
fseek ( $io, 0 );
fputs ( $io, $new_data );
fclose ( $io );
}
echo "Remove Titles:<br /><br />\r\n";
echo "<form action='" . $_SERVER['PHP_SELF'] . "' method='post'>\r\n";
echo "News Titles<br /><br />\r\n";
echo "<select name='delete[]' size='5' multiple>\r\n";
$io = file ( $file );
for ( $i = 0; $i < sizeof ( $io ); $i++ )
{
$x = explode ( '|', $io[$i] );
echo "<option value='" . $x[0] . "'> " . trim ( $x[1] ) . "\r\n";
}
echo "</select><br /><br />\r\n";
echo "<input type='submit' value='Delete Data >>'>\r\n";
echo "</form><br /><br /><br /><br />\r\n";
echo "</center>\r\n";
?>