Connecting Tech Pros Worldwide Forums | Help | Site Map

reading the correct line sequence from a txt file

programming
Guest
 
Posts: n/a
#1: Apr 10 '07
Is there any reason why i am NOT reading each invididual line from a
txt file in this script...e.g i keep on getting 2 lines printed outed
when there are clearly
four lines in the txt file.

also, is my counter right here?

<? php
$listf = fopen ("./member.txt", "r");
# read the file
$line = fgets($listf, 4096);


while(($data = fgetcsv($listf,1024,"|"))!=FALSE)
{
$count++;
$duserid=trim($data[0]);
$dname=trim($data[1]);



list ($duserid,$dname,$actions) = split("\|",$line);
$line = chop($line); //chops space out of program

$actions= "<a href=\"./delete_member.php?record_id=29\">Delete</a|
<a href=\"./edit_member.php?record_id=29\">Edit</a></td>";
$data = fgetcsv($listf, 1024);
echo "<tr><td>$duserid</td><td>$dname</td><td>$actions<td></tr>";

}

fclose($listf);
?>


Toby A Inkster
Guest
 
Posts: n/a
#2: Apr 10 '07

re: reading the correct line sequence from a txt file


programming wrote:
Quote:
while(($data = fgetcsv($listf,1024,"|"))!=FALSE)
{
[...]
Quote:
$data = fgetcsv($listf, 1024);
I'm not very familiar with fgetcsv() but you appear to be reading two
lines for each iteration. Which means that if the file has "n" lines,
you'll only end up with "n/2" iterations of the while loop.

--
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!
programming
Guest
 
Posts: n/a
#3: Apr 10 '07

re: reading the correct line sequence from a txt file


Ok well your suggestion has sort of fixed the problem but know it is
like reading
every 3 of 4 lines, instead of 2 of 4 lines.

<?php
$listf = fopen ("./member.txt", "r");
# read the file
$line = fgets($listf, 1024);

while(($data = fgetcsv($listf,1024,"|"))!=FALSE)
{
$count++;
$duserid=trim($data[0]);
$dname=trim($data[1]);

list ($duserid,$dname,$actions) = split("\|",$line);
$line = chop($line); //chops space out of program

$actions= "<a href=\"./delete_member.php?
record_id=29\">Delete</a| <a href=\"./edit_member.php?
record_id=29\">Edit</a></td>";
//$data = fgetcsv($listf, 1024);
echo "<tr><td>$duserid</td><td>$dname</td><td>
$actions<td></tr>";

}

fclose($listf);
?>

may be a do while loop might fix the problem....





On Apr 10, 7:13 pm, Toby A Inkster <usenet200...@tobyinkster.co.uk>
wrote:
Quote:
programming wrote:
Quote:
while(($data = fgetcsv($listf,1024,"|"))!=FALSE)
{
[...]
Quote:
$data = fgetcsv($listf, 1024);
>
I'm not very familiar with fgetcsv() but you appear to be reading two
lines for each iteration. Which means that if the file has "n" lines,
you'll only end up with "n/2" iterations of the while loop.
>
--
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!

programming
Guest
 
Posts: n/a
#4: Apr 10 '07

re: reading the correct line sequence from a txt file



Big problem now it appears that
it appears to be copying the 1st line
of the txt file to web page 3 times...


On Apr 10, 7:13 pm, Toby A Inkster <usenet200...@tobyinkster.co.uk>
wrote:
Quote:
programming wrote:
Quote:
while(($data = fgetcsv($listf,1024,"|"))!=FALSE)
{
[...]
Quote:
$data = fgetcsv($listf, 1024);
>
I'm not very familiar with fgetcsv() but you appear to be reading two
lines for each iteration. Which means that if the file has "n" lines,
you'll only end up with "n/2" iterations of the while loop.
>
--
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!

Rami Elomaa
Guest
 
Posts: n/a
#5: Apr 10 '07

re: reading the correct line sequence from a txt file


programming kirjoitti:
Quote:
Ok well your suggestion has sort of fixed the problem but know it is
like reading
every 3 of 4 lines, instead of 2 of 4 lines.
>
<?php
$listf = fopen ("./member.txt", "r");
# read the file
$line = fgets($listf, 1024);
The file is read here the first time, and the filepointer moves from row
1 to row 2. the data is however discared.
Quote:
>
while(($data = fgetcsv($listf,1024,"|"))!=FALSE)
Now it starts reading the file from the second line, and so on... That's
why the first line is not printed.

Just remove the extra fgets from the beginning.

--
Rami.Elomaa@gmail.com
"Olemme apinoiden planeetalla."
Rami Elomaa
Guest
 
Posts: n/a
#6: Apr 10 '07

re: reading the correct line sequence from a txt file


programming kirjoitti:
Quote:
Big problem now it appears that
it appears to be copying the 1st line
of the txt file to web page 3 times...
>
You read the first line to $line with fgets, and the next lines to $data
in the while-condition. Inside the loop you use $line.

Stop being so stupid!

--
Rami.Elomaa@gmail.com
"Olemme apinoiden planeetalla."
Toby A Inkster
Guest
 
Posts: n/a
#7: Apr 10 '07

re: reading the correct line sequence from a txt file


programming wrote:
Quote:
$line = fgets($listf, 1024);
WTF is this line doing?

--
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!
Rami Elomaa
Guest
 
Posts: n/a
#8: Apr 10 '07

re: reading the correct line sequence from a txt file


Toby A Inkster kirjoitti:
Quote:
programming wrote:
>
Quote:
>$line = fgets($listf, 1024);
>
WTF is this line doing?
>
It's causing all the trouble he's been having. :)

--
Rami.Elomaa@gmail.com
"Olemme apinoiden planeetalla."
Jerry Stuckle
Guest
 
Posts: n/a
#9: Apr 10 '07

re: reading the correct line sequence from a txt file


programming wrote:
Quote:
Ok well your suggestion has sort of fixed the problem but know it is
like reading
every 3 of 4 lines, instead of 2 of 4 lines.
>
<?php
$listf = fopen ("./member.txt", "r");
# read the file
$line = fgets($listf, 1024);
>
while(($data = fgetcsv($listf,1024,"|"))!=FALSE)
{
$count++;
$duserid=trim($data[0]);
$dname=trim($data[1]);
>
list ($duserid,$dname,$actions) = split("\|",$line);
$line = chop($line); //chops space out of program
>
$actions= "<a href=\"./delete_member.php?
record_id=29\">Delete</a| <a href=\"./edit_member.php?
record_id=29\">Edit</a></td>";
//$data = fgetcsv($listf, 1024);
echo "<tr><td>$duserid</td><td>$dname</td><td>
$actions<td></tr>";
>
}
>
fclose($listf);
?>
>
may be a do while loop might fix the problem....
>
>
>
>
>
On Apr 10, 7:13 pm, Toby A Inkster <usenet200...@tobyinkster.co.uk>
wrote:
Quote:
>programming wrote:
Quote:
>>while(($data = fgetcsv($listf,1024,"|"))!=FALSE)
>>{
>[...]
Quote:
>>$data = fgetcsv($listf, 1024);
>I'm not very familiar with fgetcsv() but you appear to be reading two
>lines for each iteration. Which means that if the file has "n" lines,
>you'll only end up with "n/2" iterations of the while loop.
>>
>--
>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!
>
>
You're also getting the first right after you open the file and throw it
away.

Did you do ANY debugging on this yourself? Do you have ANY idea what
the functions you're using do?

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