2010-08-18 52 views
0
//get var of posted info so user does not 
//have to reinsert if if validation = false 
if(!isset($_POST['FactionChanges'])){ $faction_name = ''; } 
else { $faction_name = "".$_POST['factionname'].""; } 
//without form submit, num_errors = 0 
if(!isset($_POST['FactionChanges'])){ $num_errors = 0; } 
//without form submit, success = 0 
if(!isset($_POST['FactionChanges'])){ $success = 0; } 


//error handling section [upon form submit] 
if(isset($_POST['FactionChanges'])){ 

//deal with individual form section posts 
//-->Faction Name 
if(isset($_POST['factionname'])){ 

    //set var for error 
    //array to use here 
    $errors = array(); 

    $unsani_faction_name = $_POST['factionname']; 
    $new_faction_name = str_replace(",", "", $unsani_faction_name); 
    $faction_name = mysql_real_escape_string($new_faction_name); 
    $faction_name = preg_replace('/\s\s+/', ' ', $faction_name); 
    $faction_name = stripslashes($faction_name);//strips slashes from name 
    //remove special chars except: "& $ £^- ()" 
    $faction_name = preg_replace('/[^a-z0-9\s£&$\^\(\)-]/i', '', $faction_name); 
    $string_length = strlen($faction_name); 
    if($string_length < 3 || $string_length > 20){ 
    $errors[] = 'Name: [between 3-20 characters]'; } 
    else{ 
    $sql = mysql_query("SELECT * FROM ".TBL_TBL_FACTIONS." 
    WHERE f_name='$faction_name'"); 
    $num_rows = mysql_num_rows($sql); 
    if ($num_rows > 0){ $errors[] = 'Name: [same faction name in existance]'; } 
    else { mysql_query("UPDATE ".TBL_FACTIONS." SET f_name='$faction_name' 
    WHERE f_id=$userfaction_id"); 
    header("Location: ".$page_name."?section=actions"); 
    //$success = 1; [DOES NOT work here] 
    } 
}//else 
}//if post factionname 

$num_errors = count($errors); 
if($num_errors === NULL){ $success = 1; } 


} 
//$success = 1; [works here] 



if($num_errors > 0){ echo '<p class="error"><strong>Error:</strong> 
The form could not be submitted because there are errors present</p>'; } 

//add something here to only display sucess only if form is success 
if($success == 1){ echo '<p class="success"><strong>Success:</strong> 
Your faction changes have been made</p>'; } 

当提交成功的表单输入时,无法显示成功框? 我自己做了一些调试,并且插入了我尝试插入成功变量的位置。我真的很难过这个。提交表单提交后,php变量未设置为期望值

回答

2

看行紧接您//$success = 1; [DOES NOT WORK HERE]

header("Location: ".$page_name."?section=actions"); 

你将用户重定向到另一个页面。当然,您的脚本将继续执行,但在您离开的页面上设置成功并不会执行任何操作。

是否在您的重定向查询字符串中添加&success=1

+0

谢谢。 如果我想添加更多的表单更新,我将不得不改变每个人的整体成功的价值? – 2010-08-18 23:48:32

+0

如何阻止用户输入:faction.php?section = actions&success = 1并显示绿色成功框? – 2010-08-18 23:49:10

+0

@Callum Johnson,不知道我理解你的第一条评论,但至于你的第二条评论:你不是,真的。你可以用会话做一些魔术或检查引用者(这是不可信的)。 – jasonbar 2010-08-18 23:54:08

0

它看起来像问题是与这些行:

$num_errors = count($errors); 
if($num_errors === NULL){ $success = 1; } 

由于计数永远不会返回NULL,$成功永远不会为真。如果您将其更改为:

$num_errors = count($errors); 
if($num_errors == 0){ $success = 1; } 

那么它应该工作。

+0

它仍然不起作用? – 2010-08-18 23:50:28