2012-05-01 19 views
7

Aşağıdaki form, tarayıcıda sayfa başlatıldığında her seferinde başarı mesajını mantıksal olarak görüntüler, ancak form yalnızca başarılı bir şekilde gönderildikten sonra başarı mesajını göstermelidir.Başarılı form gönderimi üzerine bir div içinde nasıl başarılı bir mesaj oluşturulur?

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

formun html parçası aşağıdaki gibidir:

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

Bu başarı mesajı sayfadaki bir div içinde görüntülendiğinde nasıl: Ben ne

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

Burada yanlış mı yapıyorsun? I) (dispaly mesaj için

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

altında, session_start olduğundan emin olun gibi kullanın örnekte mesaj

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

göstermek için iki fonksiyonu yarattık

+0

formla aynı sayfada bu div mı? – anuragsn7

+0

Evet, başarı mesajı div aynı sayfada. –

cevap

5

; form yalnızca

+0

Peki, tek bir form eyleminin neden tek bir ileti için neden oluşturulduğunu öğrenemedim? Önerilen sözdizimi, başarılı form gönderiminde herhangi bir çıktı yazdırmaz. Üstelik bu sayede sayfadaki herhangi bir yeri aramak ve yazdırmak mümkün değildir. Yine de teşekkürler. –

+0

genel işlevi, zaman içinde çoklu mesaj göstermek için yararlı, sizin durumda dizisi kaldırmak sorun yoktur ve session_start() üstüne koymak ve çıkış() koymak; yönlendirme url'sinden sonra cevabımı düzenlerim –

+0

Şimdi, mesaj gönderildikten sonra başarı mesajı görüntülenir, ancak varolan kodu varolan kodla sarmak için herhangi bir seçenek olmadığı için önceden tanımlanmış ve stillenmiş bir div içinde görüntülenemez. Div 'successmessage' 'showMessageStack();' ile aşağıdaki şekilde '" .showMessageStack(). "

"; ?> 'ancak, form gönderildikten sonra başarı mesajının ilgili div üzerinde görüntülenmesine rağmen sayfa her zaman sarılı div'i görüntülemeye devam eder. Teşekkürler. –

0

hRaval gönderdikten sonra

<?php echo showMessageStack(); ?> 

Çok başından ve son ipucu adresinin değerli kılavuz için teşekkürler, çok senin mesajını verir.

AddMessageStack'a aşağıdaki ek olarak sorunu en sonunda çözer.

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

Saygılarımızla

+0

Sorunuza +1 teşekkür ederim :) –

İlgili konular