You are here: Re: while loops? « PHP Programming Language « IT news, forums, messages
Re: while loops?

Posted by David Haynes on 05/30/06 18:09

Patrick wrote:
> David Haynes wrote:
>> Patrick wrote:
>>
>>> I'm trying to while loop using a flat txt file and write the values
>>> out into a form. I have 50-58 values to echo. Am I going to have to
>>> echo each line of html. Or is there a way to make this work between
>>> the php. Right now it wants to write the whole table over and over.
>>> Is my logic screwed up? I am not a programmer as such but can get by.
>>> I have something like this which is an abbreviated version. Any help
>>> would be appreciated.
>>>
>>> Thanks,
>>> Patrick
>>
>>
>> If your input file looks something like this:
>> fred, Barbados/123, Titanic
>> sally, Turks/Caicos, Mary Celleste
>>
>> then the following code will help you get started:
>> <html>
>> <head>
>> </head>
>> <body>
>> <?php
>> $filename = "test.log";
>> if( ! ($fd = fopen($filename, "r")) ) {
>> echo "Cannot open $filename for read<br>\n";
>> exit;
>> }
>>
>> while( $line = fgets($fd, 80) ) {
>> $values = explode(',', $line); // assumes comma-separated values
>> ?>
>>
>> <form method="post" action="precmlog.php">
>>
>> <table width="800" cellpadding="5" cellspacing="0" border="0">
>> <tr>
>> <td width="40%">
>> Log sheet completed by:<br> <input class="inform" type="text"
>> size="30" name="person" value="<?php echo $values[0]; ?>"><br>
>> </td>
>> </tr>
>> <tr>
>> <td>
>> Cruise name/number:<br> <input class="inform" type="text"
>> size="30" name="cruisenum" value="<?php echo $values[1]; ?>"><br>
>> </td>
>> </tr>
>>
>> <tr>
>> <td>
>> Ship name:<br> <input class="inform" type="text" size="30"
>> name="shipname" value="<?php echo $values[2]; ?>"><br>
>> </td>
>> </tr>
>> </table>
>>
>> <input class="button" type="submit" value="Submit">
>> </form>
>>
>>
>> <?php
>> }
>> fclose($fd);
>> ?>
>> </body>
>> </html>
>>
>> -david-
>>
> Hi
>
> Thanks for the reply. Yes I can already do that ie.
> $values[1]...[2]...[3], and no the file is not comma delimited. It is
> delimited by a new line as some of the values are text area inputs. What
> I want to be able to do is have the while iterate to the next value so
> that any changes in the text file or the originating form that writes
> the text file will not require me to go into this one and change all the
> numbers.
>
> Patrick
>
As long as only your fields are separated by the carriage-returns you
will be all right. If someone sneaks a carriage-return into the text
fields, you will lose your synchronization with the input file. (i.e.
you need to have some trusted form of delimiting the fields)

If you want to use carriage-returns, just replace the while and explode
lines with something like:

while(true) {
if( ! ($line1 = fgets($fd, 80)) ) break;
if( ! ($line2 = fgets($fd, 80)) ) break;
if( ! ($line3 = fgets($fd, 80)) ) break;

and then $value[0] becomes $line1, etc.

BTW the 80 can be replaced with whatever your maxlength is for your text
fields.

-david-

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация