Go Back   vb.org Archive > vBulletin 3 Discussion > vB3 Programming Discussions
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Display Modes
  #1  
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
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 12:18 PM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.05008 seconds
  • Memory Usage 2,280KB
  • Queries Executed 12 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (3)bbcode_php
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)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)showthread_list
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.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_threadedmode.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
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids_threaded
  • showthread_threaded_construct_link
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • 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
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete