On Sun, Jul 04, 2010 at 01:57:01PM -0400, David Mehler wrote:

> Hello,
> I've got a form with several required fields of different types. I
> want to have the php script process it only when all the required
> fields are present, and to redisplay the form with filled in values on
> failure so the user won't have to fill out the whole thing again.
> One of my required fields is a text input field called name. If it's
> not filled out the form displayed will show this:
> 
> <input type="text" name="name" id="name" size="50" value="<?php
> echo($name); ?>" /> <br />
> 
> Note, I've got $_POST* variable processing before this so am assigning
> that processing to short variables.
> If that field is filled out, but another required one is not that form
> field will fill in the value entered for the name field.
> This is working for my text input fields, but not for either select
> boxes or textareas. Here's the textarea also a required field:
> 
> <textarea name="description" id="description" cols="50" rows="10"
> value="<?php echo($description); ?>"></textarea>

Textarea fields don't work this way. To display the prior value, you
have to do this:

<textarea name="description><?php echo $description; ?></textarea>

> 
> What this does, if a user fills out this field, but misses another, it
> should echo the value of what was originally submitted. It is not
> doing this. Same for my select boxes, here's one:
> 
> <select name="type" id="type" value="<?php echo($type); ?>">
> <option value="0" selected="selected">-- select type --</option>
> <option value="meeting"> - Meeting - </option>
> <option value="event"> - Event - </option>
> </select>

The "value" attribute of a select field won't do this for you. You have
to actually set up each option with an either/or choice, like this:

<option value="0" <?php if ($type == 'meeting') echo 'selected="selected"';
?>> - Meeting - </option>

Since doing this is pretty tedious, I use a function here instead:

function set_selected($fieldname, $value)
{
        if ($_POST[$fieldname] == $value)
                echo 'selected="selected"';
}

And then

<option value="meeting" <?php set_selected('type', 'meeting');
?>>Meeting</option>

HTH,

Paul

-- 
Paul M. Foster

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to