NYCPHP Meetup

[nycphp-talk] Form not working as expected

mikesz at qualityadvantages.com mikesz at qualityadvantages.com
Thu Mar 13 22:21:15 EDT 2008


Hello and Warm Greetings,

I have a form that I have been asked to modify and thought it was a
straight forward and simple MOD but it seems to have some a condition
that I didn't count on when I agreed to make the change and I need
some advice.

The situation is that the form (which is using the output buffer)has a
birthday input.

Almost forgot, this is a complex login form that has an IP Address
check in it. If the "expected" IP address is different that the one
stored in the database, it loops back and adds a test for the users
birthdate which does a different database lookup. This one form is
used to manage both conditions.

The form was originally designed to use a text box and the request was
to replace it with a drop down because his users didn't follow the
instructions for formatting most of the time, even with an example
provided. The form does a lookup to see if the birthdate matches the
one that is stored in the database. In the lookup, it compares the
value in $_POST['birthdate'] with the value in the database. The text
box works fine if you enter the correct yyyy-mm-dd format.

The replacement dropdown has three $_POST values very creatively
assigned, $_POST['year'],$_POST['month'],$_POST['day']. To compensate
for the replacement of $_POST['birthdate'] and try to make the change
transparent to the rest of the script I generated it manually in a
hidden field (I actually thought this one WAS creative until I
discovered that it didn't work as I expected, lol),

<input type="hidden"  value="<?=$_POST['year'] . "-" . $_POST['month'] . "-" . $_POST['day'];?>" name="birthdate">

The problem, as you may have already guessed is that
$_POST['birthdate'] gets no date values until AFTER the submit button
and that is too late for it to do its database compare so it fails. If
you rerun the form entry a second time the script works, no problem
but the first time through nada.

I have placed several print_r statements to see what is going on and
the very last I have just after the submit and just after the
ob_get_content and just before the return and $_POST['birthdate'] has
the correct value in it but apparently the script compare function
isn't see it for some reason. If, like I say, I run the input again,
it works fine?

I have tried replacing the $_POST['birthdate'] with a variable
$birthdate that I generate manually with the correct data and pass it
to the diff function but that breaks the script so that it doesn't work
at all no matter how many times you run it. I would really appreciate
someone who might have done something like this and solved it to give
me an idea of where I need to go with it.

Many thanks for your attention,

-- 
Best regards,
 mikesz                          mailto:mikesz at qualityadvantages.com




More information about the talk mailing list