2013-03-31 58 views
0

我正在開發一個用於響應幫助請求的自動化系統,並且我希望能夠弄清楚使用它的客戶端對於獲取的響應是否滿意。使用提交按鈕進行PHP滿意度調查

程序應該詢問他們「你對你的回答滿意」,在其下面是/否提交按鈕,當用戶提交它時,應該將它們轉發到指定頁面並調用sendDebugMessage函數(向我們發送電子郵件)

這是我的工作了這樣做的代碼,但它只是重定向到一個空白頁:

<?php 
    if (isset($_POST['Yes'])) { 
     ?> 
      sendDebugMessage("A user WAS happy with their response!"); 
      <META http-equiv="refresh" content="0; URL=http://example.com"> 
     <?php 
    } elseif (isset($_POST['No'])) { 
     sendDebugMessage("A user was NOT happy with their response!"); 

     ?> 
      <META http-equiv="refresh" content="0; URL=http://example.com"> 
     <?php 
    } else { 
     ?> 
      Where you happy with this response? 
      <form action="" method="post"> 
       <input type="submit" value="Yes" name="Yes" /> 
       <input type="submit" value="No" name="No"/> 
      </form> 
      <br /> 


     <?php 
    } 
?> 
+0

是'sendDebugMessage'返回任何錯誤 – Ander2

+0

不,它是不會放棄的錯誤? –

+0

首先'sendDebugMessage'函數調用,在'if'外面# – Ander2

回答

0

你沒有解釋存在的問題,但我想那就是你永遠不會得到「沒有」。

由於您在一個表單中發送兩個提交按鈕,兩者都將被提交。 因此分裂他們像

<form action="" method="post"> 
    <input type="submit" value="No" name="No"/> 
</form> 

<form action="" method="post"> 
    <input type="submit" value="Yes" name="Yes" /> 
</form> 

爲了得到不同的答案。

嘗試print_r($_POST);以查看您是否獲得任何Post vars。

在我看來,更好的解決方案:

使用GET鏈接像

<a href="index.php?answer=yes">yes</a> 
<a href="index.php?answer=no">no</a> 

,並通過$_GET[answer]可變閱讀。 所以在index.php中,你會讀你的瓦爾像

<? 
    if($_GET[answer] == 'yes'){ 
    //action for yes 
    } 
    elseif($_GET[answer] == 'no'){ 
    //action for no 
    } 
?> 

一個稍微好一點的工作方法是通過JavaScript來做到這一點。

+0

問題是,它似乎並沒有觸發「issets」的if語句,因爲我從來沒有收到電子郵件,用戶也不會重定向。我也分開了表格,但它仍然不起作用。 –

+1

您是否嘗試過使用下面解釋的簡單鏈接?像'yes' – danielwinter

0

從表單中刪除動作屬性,看看是否有幫助,這是有效的html5,也更好的爲html4,以避免瀏覽器與空行爲屬性的問題。

此外,請確保您測試您的條件 - 如果(isset($ _ POST ...是一條簡單的消息,即替換括號中的代碼真:回聲「!表單提交」

編輯生病假設你sendDebugMessage()函數是一個JavaScript函數在這種情況下,你需要把它放在一個腳本標籤中 - ><script type="text/javascript"></script>

+0

我沒有看到任何迴應,當我這樣做。 –

+0

你有沒有看到任何迴應?你有沒有試過print_r($ _ POST);像丹尼爾建議的?你不應該假設你的sendDebugMessage函數能夠工作,而是首先回顯一條消息/或者首先打印出$ _POST的內容來驗證表單是否確實被提交。 –