By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
445,931 Members | 1,531 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 445,931 IT Pros & Developers. It's quick & easy.

deleting a line

P: n/a
how do i delete from a text file 1 of the following lines:
jon|scott
adam|smith <--delete
paul|clark

say i would like to delete the middle line of this txt, in member.txt
what php code or logic would help me accomplish this?

Also i am clicking on a hyperlink that is keeping count of the entries
i have
made. e.g php?record_id =1
php?record_id =2

Apr 11 '07 #1
Share this Question
Share on Google+
13 Replies


P: n/a
programming wrote:
say i would like to delete the middle line of this txt, in member.txt
what php code or logic would help me accomplish this?
For a small file:

1. Read member.txt into an array (the "file" function is
your friend);
2. Make the changes to the array (the "unset" function is
your friend);
3. Output the array to "member-new.txt";
4. Delete "member.txt";
5. Rename "member-new.txt" to "member.txt";

If the file is larger (more than say, 500 kB) this might become a bit
memory-hungry, and it's worth looking at iterating over each line of the
file individually rather than reading it all into memory at once.

--
Toby A Inkster BSc (Hons) ARCS
Contact Me ~ http://tobyinkster.co.uk/contact
Geek of ~ HTML/SQL/Perl/PHP/Python*/Apache/Linux

* = I'm getting there!
Apr 11 '07 #2

P: n/a
Hi,

you need to open two streams, one for reading, one for writing.

Be wary by more than one request at a time!!! ( errors!)

there is no delete function couse a file is only a stream ;)

Apr 11 '07 #3

P: n/a
programming wrote:
how do i delete from a text file 1 of the following lines:
jon|scott
adam|smith <--delete
paul|clark

say i would like to delete the middle line of this txt, in member.txt
what php code or logic would help me accomplish this?

Also i am clicking on a hyperlink that is keeping count of the entries
i have
made. e.g php?record_id =1
php?record_id =2
Or, better yet, learn to use a SQL database.

--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
js*******@attglobal.net
==================
Apr 11 '07 #4

P: n/a
On Apr 11, 10:57 pm, Jerry Stuckle <jstuck...@attglobal.netwrote:
programming wrote:
how do i delete from a text file 1 of the following lines:
jon|scott
adam|smith <--delete
paul|clark
say i would like to delete the middle line of this txt, in member.txt
what php code or logic would help me accomplish this?
Also i am clicking on a hyperlink that is keeping count of the entries
i have
made. e.g php?record_id =1
php?record_id =2

Or, better yet, learn to use a SQL database.

--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstuck...@attglobal.net
==================
yes, but this assignment i am doing does not require that...the next
one will be using SQL

Apr 11 '07 #5

P: n/a
On Apr 11, 7:08 pm, Toby A Inkster <usenet200...@tobyinkster.co.uk>
wrote:
programming wrote:
say i would like to delete the middle line of this txt, in member.txt
what php code or logic would help me accomplish this?

For a small file:

1. Read member.txt into an array (the "file" function is
your friend);
2. Make the changes to the array (the "unset" function is
your friend);
3. Output the array to "member-new.txt";
4. Delete "member.txt";
5. Rename "member-new.txt" to "member.txt";

If the file is larger (more than say, 500 kB) this might become a bit
memory-hungry, and it's worth looking at iterating over each line of the
file individually rather than reading it all into memory at once.

--
Toby A Inkster BSc (Hons) ARCS
Contact Me ~http://tobyinkster.co.uk/contact
Geek of ~ HTML/SQL/Perl/PHP/Python*/Apache/Linux

* = I'm getting there!
Thanks for you steps, i had a go at doing it..is this what you meant
by any chance?

<?php

$line = file ("./member.txt", "w");
unset($line);

$line = fopen("./member-new.txt");

unlink("./member.txt")

rename("member-new.txt","member.txt");

fclose($line);
?>

I am getting a parse error, and i am not sure if i am doing this
right??

Parse error: syntax error, unexpected T_STRING in /volumes/data1/home/
pioannou/public_html/php/Assignment11/admin/delete_member.php on line
11

Apr 11 '07 #6

P: n/a
programming wrote:
On Apr 11, 10:57 pm, Jerry Stuckle <jstuck...@attglobal.netwrote:
>programming wrote:
>>how do i delete from a text file 1 of the following lines:
jon|scott
adam|smith <--delete
paul|clark
say i would like to delete the middle line of this txt, in member.txt
what php code or logic would help me accomplish this?
Also i am clicking on a hyperlink that is keeping count of the entries
i have
made. e.g php?record_id =1
php?record_id =2
Or, better yet, learn to use a SQL database.

--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstuck...@attglobal.net
==================

yes, but this assignment i am doing does not require that...the next
one will be using SQL
Ah, getting help with your homework...

--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
js*******@attglobal.net
==================
Apr 11 '07 #7

P: n/a
On Apr 11, 11:20 pm, Jerry Stuckle <jstuck...@attglobal.netwrote:
programming wrote:
On Apr 11, 10:57 pm, Jerry Stuckle <jstuck...@attglobal.netwrote:
programming wrote:
how do i delete from a text file 1 of the following lines:
jon|scott
adam|smith <--delete
paul|clark
say i would like to delete the middle line of this txt, in member.txt
what php code or logic would help me accomplish this?
Also i am clicking on a hyperlink that is keeping count of the entries
i have
made. e.g php?record_id =1
php?record_id =2
Or, better yet, learn to use a SQL database.
--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstuck...@attglobal.net
==================
yes, but this assignment i am doing does not require that...the next
one will be using SQL

Ah, getting help with your homework...

--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstuck...@attglobal.net
==================
Yeah i am pleased with my progress with it so far, hopefully forums
can be a help as i progress

Apr 11 '07 #8

P: n/a
programming wrote:
On Apr 11, 7:08 pm, Toby A Inkster <usenet200...@tobyinkster.co.uk>
wrote:
programming wrote:
say i would like to delete the middle line of this txt, in
member.txt what php code or logic would help me accomplish this?
For a small file:

1. Read member.txt into an array (the "file" function is
your friend);
2. Make the changes to the array (the "unset" function is
your friend);
3. Output the array to "member-new.txt";
4. Delete "member.txt";
5. Rename "member-new.txt" to "member.txt";

If the file is larger (more than say, 500 kB) this might become a
bit memory-hungry, and it's worth looking at iterating over each
line of the file individually rather than reading it all into
memory at once.

Thanks for you steps, i had a go at doing it..is this what you meant
by any chance?

<?php

$line = file ("./member.txt", "w");
unset($line);

$line = fopen("./member-new.txt");

unlink("./member.txt")

rename("member-new.txt","member.txt");

fclose($line);
?>

I am getting a parse error, and i am not sure if i am doing this
right??

Parse error: syntax error, unexpected T_STRING in /volumes/data1/home/
pioannou/public_html/php/Assignment11/admin/delete_member.php on line
11
The parse error itself comes from the missing semicolon on the line
with the unlink() function.

Second, you have placed the "w" parameter on the wrong function (on the
file() function instead of the fopen() function).

Thirdly, you're attempting to move/rename the new file BEFORE closing
the file handle for it. This could cause problems in terms of
locking/permissions.

Fourthly, you still haven't output the updated array to the new file
yet. Also, you're unsetting (deleting) the entire array instead of just
a single item.

After fixing the errors, the final source code snippet should look
something like this (with comments attached):

<?php

// Which line number (counting from 0) should we delete?
$line_to_delete = 4;

// Load the lines into an array; newlines are still attached
$lines = file ("./member.txt");

// Delete the line number from the array
unset($lines[$line_to_delete]);

// Open the new file for writing
$lines_update = fopen("./member-new.txt", "w");

// 1. Join the array to a single string (newlines are already attached)
// 2. Write the updated array to the new file
fwrite($lines_update, join("", $lines);

// Close the file handle to allow other operations on the file
fclose($lines_update);

// Remove the old file
unlink("./member.txt");

// Rename the new file to use the old filename, replacing the old file
rename("member-new.txt","member.txt");

?>

--
Kim André Akerø
- ki******@NOSPAMbetadome.com
(remove NOSPAM to contact me directly)
Apr 11 '07 #9

P: n/a
Kim André Akerø wrote:
// 1. Join the array to a single string (newlines are already attached)
// 2. Write the updated array to the new file
fwrite($lines_update, join("", $lines);
Missing a closing parenthesis here, but otherwise, yes, something like
this. Though personally I'd check the return value from fwrite() before
you go and do this:
// Remove the old file
unlink("./member.txt");

// Rename the new file to use the old filename, replacing the old file
rename("member-new.txt","member.txt");
--
Toby A Inkster BSc (Hons) ARCS
Contact Me ~ http://tobyinkster.co.uk/contact
Geek of ~ HTML/SQL/Perl/PHP/Python*/Apache/Linux

* = I'm getting there!
Apr 11 '07 #10

P: n/a
On Apr 11, 10:56 pm, Kim André Akerø <kiman...@NOSPAMbetadome.com>
wrote:
programming wrote:
On Apr 11, 7:08 pm, Toby A Inkster <usenet200...@tobyinkster.co.uk>
wrote:
programming wrote:
say i would like to delete the middle line of this txt, in
member.txt what php code or logic would help me accomplish this?
For a small file:
1. Read member.txt into an array (the "file" function is
your friend);
2. Make the changes to the array (the "unset" function is
your friend);
3. Output the array to "member-new.txt";
4. Delete "member.txt";
5. Rename "member-new.txt" to "member.txt";
If the file is larger (more than say, 500 kB) this might become a
bit memory-hungry, and it's worth looking at iterating over each
line of the file individually rather than reading it all into
memory at once.
Thanks for you steps, i had a go at doing it..is this what you meant
by any chance?
<?php
$line = file ("./member.txt", "w");
unset($line);
$line = fopen("./member-new.txt");
unlink("./member.txt")
rename("member-new.txt","member.txt");
fclose($line);
?>
I am getting a parse error, and i am not sure if i am doing this
right??
Parse error: syntax error, unexpected T_STRING in /volumes/data1/home/
pioannou/public_html/php/Assignment11/admin/delete_member.php on line
11

The parse error itself comes from the missing semicolon on the line
with the unlink() function.

Second, you have placed the "w" parameter on the wrong function (on the
file() function instead of the fopen() function).

Thirdly, you're attempting to move/rename the new file BEFORE closing
the file handle for it. This could cause problems in terms of
locking/permissions.

Fourthly, you still haven't output the updated array to the new file
yet. Also, you're unsetting (deleting) the entire array instead of just
a single item.

After fixing the errors, the final source code snippet should look
something like this (with comments attached):

<?php

// Which line number (counting from 0) should we delete?
$line_to_delete = 4;

// Load the lines into an array; newlines are still attached
$lines = file ("./member.txt");

// Delete the line number from the array
unset($lines[$line_to_delete]);

// Open the new file for writing
$lines_update = fopen("./member-new.txt", "w");

// 1. Join the array to a single string (newlines are already attached)
// 2. Write the updated array to the new file
fwrite($lines_update, join("", $lines);

// Close the file handle to allow other operations on the file
fclose($lines_update);

// Remove the old file
unlink("./member.txt");

// Rename the new file to use the old filename, replacing the old file
rename("member-new.txt","member.txt");

?>

--
Kim André Akerø
- kiman...@NOSPAMbetadome.com
(remove NOSPAM to contact me directly)
this sounds good, but the only think i am confused about know is the
line_to_delete = 4;
is there any chance of matching the entry line from my web page to the
line
in the text file by using a superglobal to catch the value that needs
to be matched to the line in the file...

Apr 11 '07 #11

P: n/a

"programming" <pe**************@gmail.comschreef in bericht
news:11**********************@d57g2000hsg.googlegr oups.com...
On Apr 11, 10:56 pm, Kim André Akerø <kiman...@NOSPAMbetadome.com>
wrote:
programming wrote:
On Apr 11, 7:08 pm, Toby A Inkster <usenet200...@tobyinkster.co.uk>
wrote:
programming wrote:
say i would like to delete the middle line of this txt, in
member.txt what php code or logic would help me accomplish this?
For a small file:
1. Read member.txt into an array (the "file" function is
your friend);
2. Make the changes to the array (the "unset" function is
your friend);
3. Output the array to "member-new.txt";
4. Delete "member.txt";
5. Rename "member-new.txt" to "member.txt";
If the file is larger (more than say, 500 kB) this might become a
bit memory-hungry, and it's worth looking at iterating over each
line of the file individually rather than reading it all into
memory at once.
Thanks for you steps, i had a go at doing it..is this what you meant
by any chance?
<?php
$line = file ("./member.txt", "w");
unset($line);
$line = fopen("./member-new.txt");
unlink("./member.txt")
rename("member-new.txt","member.txt");
fclose($line);
?>
I am getting a parse error, and i am not sure if i am doing this
right??
Parse error: syntax error, unexpected T_STRING in /volumes/data1/home/
pioannou/public_html/php/Assignment11/admin/delete_member.php on line
11

The parse error itself comes from the missing semicolon on the line
with the unlink() function.

Second, you have placed the "w" parameter on the wrong function (on the
file() function instead of the fopen() function).

Thirdly, you're attempting to move/rename the new file BEFORE closing
the file handle for it. This could cause problems in terms of
locking/permissions.

Fourthly, you still haven't output the updated array to the new file
yet. Also, you're unsetting (deleting) the entire array instead of just
a single item.

After fixing the errors, the final source code snippet should look
something like this (with comments attached):

<?php

// Which line number (counting from 0) should we delete?
$line_to_delete = 4;

// Load the lines into an array; newlines are still attached
$lines = file ("./member.txt");

// Delete the line number from the array
unset($lines[$line_to_delete]);

// Open the new file for writing
$lines_update = fopen("./member-new.txt", "w");

// 1. Join the array to a single string (newlines are already attached)
// 2. Write the updated array to the new file
fwrite($lines_update, join("", $lines);

// Close the file handle to allow other operations on the file
fclose($lines_update);

// Remove the old file
unlink("./member.txt");

// Rename the new file to use the old filename, replacing the old file
rename("member-new.txt","member.txt");

?>

--
Kim André Akerø
- kiman...@NOSPAMbetadome.com
(remove NOSPAM to contact me directly)
this sounds good, but the only think i am confused about know is the
line_to_delete = 4;
is there any chance of matching the entry line from my web page to the
line
in the text file by using a superglobal to catch the value that needs
to be matched to the line in the file...
$line_to_delete = 'this is my test line.';

/*
// instead of:
unset($lines[$line_to_delete]);
// use:
*/

// deletes every occurence of the line, case insensitive
foreach($lines as $key =$value)
{
if(strtolower($value) == strtolower($line_to_delete))
{
unset($lines[$key]);
}
}

// or, deletes first occurence of the line, case insensitive
$found = false;
while (!$found && list($key, $value) = each ($lines)) {
if(strtolower($value) == strtolower($line_to_delete))
{
unset($lines[$key]);
$found = true;
}
}
Apr 11 '07 #12

P: n/a
On Apr 12, 8:44 am, "amygdala" <nore...@noreply.comwrote:
"programming" <periklis.ioan...@gmail.comschreef in berichtnews:11**********************@d57g2000hsg.g ooglegroups.com...
On Apr 11, 10:56 pm, Kim André Akerø <kiman...@NOSPAMbetadome.com>
wrote:
programming wrote:
On Apr 11, 7:08 pm, Toby A Inkster <usenet200...@tobyinkster.co.uk>
wrote:
programming wrote:
say i would like to delete the middle line of this txt, in
member.txt what php code or logic would help me accomplish this?
For a small file:
1. Read member.txt into an array (the "file" function is
your friend);
2. Make the changes to the array (the "unset" function is
your friend);
3. Output the array to "member-new.txt";
4. Delete "member.txt";
5. Rename "member-new.txt" to "member.txt";
If the file is larger (more than say, 500 kB) this might become a
bit memory-hungry, and it's worth looking at iterating over each
line of the file individually rather than reading it all into
memory at once.
Thanks for you steps, i had a go at doing it..is this what you meant
by any chance?
<?php
$line = file ("./member.txt", "w");
unset($line);
$line = fopen("./member-new.txt");
unlink("./member.txt")
rename("member-new.txt","member.txt");
fclose($line);
?>
I am getting a parse error, and i am not sure if i am doing this
right??
Parse error: syntax error, unexpected T_STRING in /volumes/data1/home/
pioannou/public_html/php/Assignment11/admin/delete_member.php on line
11
The parse error itself comes from the missing semicolon on the line
with the unlink() function.
Second, you have placed the "w" parameter on the wrong function (on the
file() function instead of the fopen() function).
Thirdly, you're attempting to move/rename the new file BEFORE closing
the file handle for it. This could cause problems in terms of
locking/permissions.
Fourthly, you still haven't output the updated array to the new file
yet. Also, you're unsetting (deleting) the entire array instead of just
a single item.
After fixing the errors, the final source code snippet should look
something like this (with comments attached):
<?php
// Which line number (counting from 0) should we delete?
$line_to_delete = 4;
// Load the lines into an array; newlines are still attached
$lines = file ("./member.txt");
// Delete the line number from the array
unset($lines[$line_to_delete]);
// Open the new file for writing
$lines_update = fopen("./member-new.txt", "w");
// 1. Join the array to a single string (newlines are already attached)
// 2. Write the updated array to the new file
fwrite($lines_update, join("", $lines);
// Close the file handle to allow other operations on the file
fclose($lines_update);
// Remove the old file
unlink("./member.txt");
// Rename the new file to use the old filename, replacing the old file
rename("member-new.txt","member.txt");
?>
--
Kim André Akerø
- kiman...@NOSPAMbetadome.com
(remove NOSPAM to contact me directly)
this sounds good, but the only think i am confused about know is the
line_to_delete = 4;
is there any chance of matching the entry line from my web page to the
line
in the text file by using a superglobal to catch the value that needs
to be matched to the line in the file...

$line_to_delete = 'this is my test line.';

/*
// instead of:
unset($lines[$line_to_delete]);
// use:
*/

// deletes every occurence of the line, case insensitive
foreach($lines as $key =$value)
{
if(strtolower($value) == strtolower($line_to_delete))
{
unset($lines[$key]);
}

}

// or, deletes first occurence of the line, case insensitive
$found = false;
while (!$found && list($key, $value) = each ($lines)) {
if(strtolower($value) == strtolower($line_to_delete))
{
unset($lines[$key]);
$found = true;
}

}
Thanks for the help. However, I am still having a little bit of
trouble with deleting a line from a txt
file. When i click on the hyper link that is matched to record?=
$count,
it still wont delete and append the details to the file...

here is the code that i am trying to implement. Are there any changes
i can make to this code to help me accomplish the task?

<?php
if(isset($_GET['record_id'])){
// Load the lines into an array; newlines are still attached
$line_to_delete = $_GET['record_id'];

$line=file("member.txt");

$found = false;
while(!$found && list($key, $value) = each($line)) {
if(strtolower($value) == strtolower($line_to_delete))
{
unset($line[$key]);
$found = true;
}
}
}
//Open the new file for writing
$lines_update = fopen("./member.txt", "w");
// 1. Join the array to a single string (newlines are already
attached)
// 2. Write the updated array to the new file
fwrite($lines_update, join("", $line));
// Close the file handle to allow other operations on the file
fclose($lines_update);
// Remove the old file
?>

Cheers,
Peri

Apr 12 '07 #13

P: n/a
programming wrote:
while(!$found && list($key, $value) = each($line)) {
if(strtolower($value) == strtolower($line_to_delete))
{
unset($line[$key]);
$found = true;
}
}
Could be neater as:

while (list($key, $value) = each($line))
{
if (strtolower($value) == strtolower($line_to_delete))
{
unset($line[$key]);
break;
}
}

or even:

foreach ($line as $key=>$value)
{
if (strcasecmp($value, $line_to_delete)==0)
{
unset($line[$key])
break;
}
}

However, I think what you actually want might be:

foreach ($line as $linenumber=>$value)
{
if ($line_to_delete==$linenumber)
{
unset($line[$linenumber])
break;
}
}

--
Toby A Inkster BSc (Hons) ARCS
Contact Me ~ http://tobyinkster.co.uk/contact
Geek of ~ HTML/SQL/Perl/PHP/Python*/Apache/Linux

* = I'm getting there!
Apr 12 '07 #14

This discussion thread is closed

Replies have been disabled for this discussion.