Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to create a success message within a div upon successful form submission?

The following form displays the success message every time on page launch in the browser logically but the form should display the success message only after it is submitted successfully.

$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));
}

The html part of the form is as following:

<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>

This is how the success message is displayed within a div on the page:

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

What I'm doing wrong here?

like image 388
Klanto Aguntuk Avatar asked May 01 '12 05:05

Klanto Aguntuk


1 Answers

I have created two function to show message

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;
    }   
}

In your example use like below

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

For dispaly message ,make sure there is session_start();

<?php echo showMessageStack(); ?>

It will display your message after form submit only

like image 110
Hardik Raval Avatar answered Oct 22 '22 03:10

Hardik Raval