Re: while loops?
- From: David Haynes <david.haynes2@xxxxxxxxxxxx>
- Date: Tue, 30 May 2006 14:09:24 -0400
Patrick wrote:
David Haynes wrote: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)Patrick wrote:Hi
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 *** 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-
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
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-
.
- References:
- Re: while loops?
- From: David Haynes
- Re: while loops?
- Prev by Date: Re: Mambo or Joomla?
- Next by Date: Re: [PHP] Checking if an image exists on a remote server.
- Previous by thread: Re: while loops?
- Next by thread: Re: while loops?
- Index(es):