Re: any better way...

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, April 20, 2006 9:52 pm, benifactor wrote:
> I am trying to come up with the best way to check for errors on a
> form.  I have done this before by checking each $_POST variable
> seperatly but needed a better way that would display more then one
> error.  The following is what i came up with...
>
> if (!$condition1 || !$condition2 || $condition1 != $condition2) {
>     if (!$condition1) {
>      $regError[0] = "condition 1  not met.";
>      $regErrorc[0] = "<font color=red>";
>      $regErrore[0] = "</font>";
>      $regErrord[0] = "<font color=red>***</font>";
>     }
>     else {
>     if (!$condition2) {
>      $regError[1] = "condtion 2 not met.";

Well, you need to use .= in a lot of places here, but it's not a bad
start.

You're also mixing your presentation junk of font tags into the logic,
which is probably not-so-good.

It's also too likely that, over time, you'll mess up and duplicate an
index like [24] and [24] for two different errors, if you haven't
already.

But your basic idea is sound.

So let's look at a simpler version:

Set up a 'globals.inc' file which initializes your $messages array,
and has the code to put out your masthead and navigation:

globals.inc:
<?php
  $messages = array();

  function head($title = 'My Site!'){
    //I hate global as much as the next guy, but...
    //I can live with it for an error-output array of messages.
    global $messages;
?>
<html>
  <head>
    <title><?php echo $title?></title>
    <meta keywods blah blah blah>
    <meta description blah blah balh>
  </head>
  <body>
    <!-- navigation bar and logo go here -->
    <?php if (count($messages)){
       echo "<font color=red>", implode("<br />", $messages), "</font>";
    }?>
<?php
  }

  function foot(){
?>
  </body>
</html>
<?php
  }
?>


Then, in your usual files, you would do:
<?php
  require 'globals.inc';

  if ($condition1){
    //Note that with no index, PHP just tacks the message on to the
end of the array. This is better than using an index.
    //Because you may find yourself adding error messages in include
files, and you will get confused about which number to use.
    $messages[] = "condition 1 not met";
  }
  if ($condition2){
    $messages[] = "condition 2 not met";
  }

  head('My Site Rocks!');
?>
<p>This is your content layed out.</p>
<p>You still need to be careful not to output Bad Things when
condition1 failed above. But your error message is taken care of.</p>
<?php
  foot();
?>


This solution is a lot like what you had, but with a lot less clutter.

It's also one I've been using for years for simple boutique sites.

It's not as rigid in separation of content and presentation as some
would like, but it's not a total mess in that regard either.  The
basic business logic is at the top of each file, the layout of the
main content is in the file, and the shared structure (what little
there is) is in the globals file for all files to, well, share.

I'd personally consider using CSS instead of FONT tags unless you need
ancient browser support.  (And some of us do!)

But with this setup, you'd have a minimal number of changes to go that
route.

-- 
Like Music?
http://l-i-e.com/artists.htm

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


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux