View Single Post
  #14  
Old 05-09-2006, 04:43 AM
Adrian Schneider's Avatar
Adrian Schneider Adrian Schneider is offline
 
Join Date: Jul 2004
Posts: 2,528
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I find it much easier when you indent everything "properly" (to my eyes, anyway). After doing so, I found the problem fairly quickly:
PHP Code:
<?php

// function to output form and hold previously entered values.

function user_form()
{
    
//output the form HTML.
    
echo '<p>Please fill in at least two fields.</p>';
    echo 
'<form action="'.htmlspecialchars($_SERVER['PHP_SELF']).'" method="post">';
    echo 
'<table border="0" cellspacing="4" cellpadding="0">';
    echo 
'<tr><td>Vertical Distance:</td><td><input type="text" name="VD" value="'.htmlspecialchars($_POST['VD']).'"></td></tr>';
    echo 
'<tr><td>Horizontal Distance:</td><td><input type="text" name="HD" value="'.htmlspecialchars($_POST['HD']).'"></td></tr>';
    echo 
'<tr><td>Throw Distance:</td><td><input type="text" name="TD" value="'.htmlspecialchars($_POST['TD']).'"></td></tr>';
    echo 
'<tr><td colspan="2"><input type="submit" value="Add to Database" name="submit"></td></tr>';
    echo 
'</table>';
    echo 
'</form>';

}

// has the form been submitted?
if (isset($_POST['submit']))
{
    
// the form has been submitted
    // perform data checks.

   
$error_str ''// initialise $error_str as empty

    
if (isset($_POST['VD']))
    {
        if (!
is_numeric($_POST['VD']))
        {
            
$error_str .= '<li>VD must be a number</li>';
        }
        if (isset(
$_POST['HD']))
        {
            if (!
is_numeric($_POST['HD']))
            {
                
$error_str .= '<li>HD must be a number</li>';
            }
            if (isset(
$_POST['TD']))
            {
                if (!
is_numeric($_POST['TD']))
                {
                    
$error_str .= '<li>TD must be a number</li>';
                }

        
// now, have any of these errors happened? We can find out by checking if $error_str is empty
        
if (!empty($error_str)) {
            
// errors have occured, halt execution and show form again.
            
echo '<p>There were errors in the information you entered, they are listed below:</p>';
            echo 
'<ul>'.$error_str.'</ul>';
            
// show form again
            
user_form();
            exit; 
// die
        
}else{echo'Success!!';}
        
// if we get here, all data checks were okay, process information as you wish.
    
} else {
        
// the form has not been submitted, let's show it
        
user_form();
    }


?>
I stopped midway as you can see, but I found two errors already (forgot to close off braces). I'll finish it now the way I think you were going for... The other change I made is combining some of your ifs -
PHP Code:
if ($a)
{
    if (
$b)
    {
        
// do stuff
    
{
}

// is the same as :
if ($a and $b)
{
    
// do stuff

Working copy (as far as executing without errors)
PHP Code:
<?php

// function to output form and hold previously entered values.

function user_form()
{
    
//output the form HTML.
    
echo '<p>Please fill in at least two fields.</p>';
    echo 
'<form action="'.htmlspecialchars($_SERVER['PHP_SELF']).'" method="post">';
    echo 
'<table border="0" cellspacing="4" cellpadding="0">';
    echo 
'<tr><td>Vertical Distance:</td><td><input type="text" name="VD" value="'.htmlspecialchars($_POST['VD']).'"></td></tr>';
    echo 
'<tr><td>Horizontal Distance:</td><td><input type="text" name="HD" value="'.htmlspecialchars($_POST['HD']).'"></td></tr>';
    echo 
'<tr><td>Throw Distance:</td><td><input type="text" name="TD" value="'.htmlspecialchars($_POST['TD']).'"></td></tr>';
    echo 
'<tr><td colspan="2"><input type="submit" value="Add to Database" name="submit"></td></tr>';
    echo 
'</table>';
    echo 
'</form>';

}

// has the form been submitted?
if (isset($_POST['submit']))
{
    
// the form has been submitted
    // perform data checks.

   
$error_str ''// initialise $error_str as empty

    
if (isset($_POST['VD']) and !is_numeric($_POST['VD']))
    {
        
$error_str .= '<li>VD must be a number</li>';
    }
    if (isset(
$_POST['HD']) and !is_numeric($_POST['HD']))
    {
        
$error_str .= '<li>HD must be a number</li>';
    }
    if (isset(
$_POST['TD']) and !is_numeric($_POST['TD']))
    {
        
$error_str .= '<li>TD must be a number</li>';
    }

    
// now, have any of these errors happened? We can find out by checking if $error_str is empty
    
if (!empty($error_str))
    {
        
// errors have occured, halt execution and show form again.
        
echo '<p>There were errors in the information you entered, they are listed below:</p>';
        echo 
'<ul>'.$error_str.'</ul>';

        
// show form again
        
user_form();

        exit; 
// die
    
}
    else
    {
        echo 
'Success!!';
    }
    
// if we get here, all data checks were okay, process information as you wish.
}
else
{
    
// the form has not been submitted, let's show it
    
user_form();
}


?>
Cheers
Reply With Quote
 
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01888 seconds
  • Memory Usage 1,841KB
  • Queries Executed 11 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD_SHOWPOST
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (3)bbcode_php
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_box
  • (1)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit_info
  • (1)postbit
  • (1)postbit_onlinestatus
  • (1)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • reputationlevel
  • showthread
Included Files:
  • ./showpost.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showpost_start
  • bbcode_fetch_tags
  • bbcode_create
  • postbit_factory
  • showpost_post
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • showpost_complete