成功提交表单后如何在div中创建成功消息?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了成功提交表单后如何在div中创建成功消息?相关的知识,希望对你有一定的参考价值。

以下表单在浏览器中每次启动页面时都会显示成功消息,但表单只有在成功提交后才会显示成功消息。

$editFormAction = $_SERVER['php_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

$message = "Record has been updated successfully.";

if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) {
$updateSQL = sprintf("UPDATE table SET name=%s, email=%s, 

                   GetSQLValueString($_POST['name'], "text"),
                   GetSQLValueString($_POST['email'], "text"),

mysql_select_db($database_test, $test);
$Result1 = mysql_query($updateSQL, $test) or die(mysql_error()); 

$updateGoTo = "test.php";
if (isset($_SERVER['QUERY_STRING'])) {
$updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?";
$updateGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $updateGoTo));
}

表单的html部分如下:

<form action="<?php echo $editFormAction; ?>" method="post" name="form1" id="form1">
 <table align="center" class="test_table">
  <tr valign="baseline">
     <td align="right" nowrap="nowrap" class="table-title">Name:</td>
     <td class="table-content"><input type="text" name="name" value="<?php echo htmlentities($row_user['name'], ENT_COMPAT, 'utf-8'); ?>" size="32" /></td>
   </tr>
   <tr valign="baseline">
     <td align="right" nowrap="nowrap" class="table-title">E-mail:</td>
     <td class="table-content"><input type="text" name="email" value="<?php echo htmlentities($row_user['email'], ENT_COMPAT, 'utf-8'); ?>" size="32" /></td>
   </tr>
 </table>
 <input type="hidden" name="MM_update" value="form1" />
 <input type="hidden" name="id" value="<?php echo $row_user['id']; ?>" />
  <input class="submit" name="UpdateRecord" type="submit" id="UpdateRecord" value="Update Record" /></form>

这是成功消息在页面上div中的显示方式:

<p> <?php 
  if (!empty($message)) {
  echo "<div class="successmessage">" . $message . "</div>";
  } 
  ?></p>

我在这里做错了什么?

答案

我创建了两个显示消息的功能

function addMessageStack($message,$type='success')
{
    $_SESSION['sess_MessageStack'][] =  array($type,$message);  
}
function showMessageStack()
{
    $str = '';
    if(count($_SESSION['sess_MessageStack']) > 0)
    {
        for($i=0;$i<count($_SESSION['sess_MessageStack']);$i++)
        {
            $str.="<div class='".$_SESSION['sess_MessageStack'][$i][0]."Message left'>".$_SESSION['sess_MessageStack'][$i][1]."</div>";
        }
        unset($_SESSION['sess_MessageStack']);
        return $str;
    }   
}

在您的示例中使用如下所示

addMessageStack('Record has been updated successfully.');    
header(sprintf("Location: %s", $updateGoTo));
exit;

对于显示消息,请确保有session_start();

<?php echo showMessageStack(); ?>

它仅在表单提交后显示您的消息

另一答案

hRaval,非常感谢您从一开始和最后的提示中获得的宝贵指导。

addMessageStack的以下添加最终解决了这个问题。

$message = "Record Has Been Updated Successfully";
addMessageStack("<div class="successmessage">" . $message . "</div>");

亲切的问候,

另一答案

通过在执行查询并在不编写冗长函数的情况下对行进行计数之后将成功消息存储在所选变量或数组或会话中,可以更简单地完成此操作。

//最简单的方法

mysql_select_db($database_test, $test); 
$Result1 = mysql_query($updateSQL, $test) or die(mysql_error());
$Row_Count = mysql_num_rows($Result1);

if ($Row_Count > 0){
$successmessage = "Edited Successfully"; 
}

要么

//如果要将所有其他成功消息(包括此消息)存储在数组中。

mysql_select_db($database_test, $test);
$Result1 = mysql_query($updateSQL, $test) or die(mysql_error());
$Row_Count = mysql_num_rows($Result1);

if ($Row_Count > 0){
$successmessage[] = "Edited Successfully"; 
}

要么

//如果要在成功执行后定义标头位置。

mysql_select_db($database_test, $test);
$Result1 = mysql_query($updateSQL, $test) or die(mysql_error());
$Row_Count = mysql_num_rows($Result1);

if ($Row_Count > 0){
$_SESSION['successmessage'] = "Edited Successfully"; 
}

然后,在上述所有情况下,您可以通过检查变量是否设置为空来调用所需文档中的任何位置的成功消息。我在下面举例说明上面解释的最简单的方法。

if(isset($successmessage)){
echo "<div id="MyDesiredDiv">" .$successmessage. "</div>";
}

要么

if(!empty($successmessage)){
echo "<div id="MyDesiredDiv">" .$successmessage. "</div>";
}

重要说明:MySql很久以前就被弃用了。尝试使用MySqli或PDO并按照上述方法操作。

以上是关于成功提交表单后如何在div中创建成功消息?的主要内容,如果未能解决你的问题,请参考以下文章

javascript 中两个表单如何分别提交

输出表单提交成功到页面而不是重定向

表单提交后返回“成功”消息

表单提交成功时如何使用onSuccess()?

尝试在js中提交表单后创建成功消息

“提交表单后,导航到其他组件并以Angular显示成功消息