2012-04-06 64 views
0

我有一個使用XPath的搜索功能,當顯示結果時,複選框也會被回顯。POST變量到另一個類

<form name="save" method="POST" action="saveProcess.php"> 
      <?php 
      foreach ($holidays as $holiday) 
      { 
       $resultTable .= "<p><a href=\"{$holiday->link}\">{$holiday->title}</a>" . "<br/>" . 
       "{$holiday->pubDate}" . "<br>" . 
       "{$holiday->description}" . "<input type='checkbox' name='chk' value='{$holiday->title}' />" . "<br /></p>";    
      } 
      ?> 
      <input type="submit" value="submit"/> 
     </form> 

我想該複選框來保持其中當提交表單將在saveProcess.php中給出的的{$holiday->title}值,我使用isset方法來檢查,如果變量被設置,它不是。

if (isset($_POST['chk'])) { 
    echo $_POST['chk']; 
} 
else 
{ 
    echo"variable is not set"; 
} 

我在哪裏出錯了?

+0

用' 2012-04-06 09:56:31

回答

2

您的代碼看起來不錯給我,只記得,如果複選框被選中複選框的值只貼了,如果它不checket $_POST['chk']未設置

編輯 - 因爲你revriting您的複選框的建議在註釋中使用數組

 <?php 
     foreach ($holidays as $holiday) 
     { 
      $resultTable .= "<p><a href=\"{$holiday->link}\">{$holiday->title}</a>" . "<br/>" . 
      "{$holiday->pubDate}" . "<br>" . 
      "{$holiday->description}" . "<input type='checkbox' name='chk[]' value='{$holiday->title}' />" . "<br /></p>";    
     } 
     ?> 

然後服務器端$_POST['chk']會安陣

+0

這是不行的。他重寫他的複選框 – 2012-04-06 10:00:03

+0

@Martin。你是對的我編輯我的答案和+1給你! – 2012-04-06 10:04:18

+0

這個解決方案仍然導致我的變量沒有被設置。 – 2012-04-06 18:21:58

2

的問題是,你命名每一個複選框「CHK」,當你提交表單,該值會被覆蓋。這就是爲什麼它在saveProcess.php中沒有得到任何東西。你需要做的,要麼指定的$ _ POST [「CHK」]可以包含的值的數組,像這樣:

<input type='checkbox' name='chk[]' value='{$holiday->title}' /> 

聲明的方括號中的名字。現在$ _POST [「chk」]將是一個數組。

另一種方式,是離開的HTML,因爲它是和剛剛得到的數據,在saveProcess.php,使用:

$HTTP_POST_VARS["chk"] 

第一部分主要解釋了爲什麼它不工作,以及如何修復它,而第二個建議,只是獲取數據的另一種方式。

祝您有美好的一天!

+1

其實,你的答案是唯一正確的! – 2012-04-06 09:58:58

+0

謝謝你,馬丁! – 2012-04-06 09:59:41

+0

這也似乎沒有工作,我的變量還沒有設置 – 2012-04-06 10:12:53