2015-05-13 47 views
0

下面是帶複選框的表單。我需要打印出文本,但不是複選框的值。從「foreach」獲取表單中的多個複選框

<p>Select the cinema where you saw the film<br /> 
    Richmond <input type="checkbox" name="cinema" value="Wimbledon" /><br /> 
    Kingston <input type="checkbox" name="cinema" value="Sutton" /><br /> 
    Feltham <input type="checkbox" name="cinema" value="Kingston" /><br /> 
    </p> 

這裏是我們的老師,這似乎是它給foreach循環響應頁面無法正常工作

> <?php 
>  $cinema =$_POST['cinema']; 
>  
>  foreach ($cinema as $cinemalocation) { 
>    print "Cinema Location:".$cinemalocation."<br />"; 
>   }; 
>  ?> 

我也不能作出調整的形式,我一直努力找到幾個小時的答案。到目前爲止,似乎沒有任何幫助。

+0

除非您有一個數組或數據庫或其他東西來查找從值到文本的關係,否則您需要修改表單以獲取文本。 –

+0

我同意。周圍的html沒有被傳遞給表單處理程序,因此不可用。 –

+0

但是,如果這是一個學校任務(老師提到)與這種有限的情況下,你可以建立一個簡單的if-else結構來完成任務。 –

回答

0

我不相信這是可能的,因爲你無法修改表單。 GET和發佈表單只是發送你在value屬性中的內容。

如果您可以更改表單,則可以在元素上設置ID並使用javascript。

此外,考慮到你的投入是自我封閉

<input type="checkbox" name="cinema" value="Wimbledon" /> 

沒有真正在他們的HTML字段什麼。

UPDATE: 既然你提到你的老師想的,如果elseif的解決方案,或許這就是你要找for`

<?php 
$cinema =$_POST['cinema']; 

foreach ($cinema as $cinemalocation) { 
      // print "Cinema Location:".$cinemalocation."<br />"; 
    if($cinemalocation == 'Wimbledon'){ 
echo "Cinema Location: Richmond <br />"; 
} 
elseif if($cinemalocation == 'Sutton'){ 
    echo "Cinema Location: Kingston <br />"; 
} 

elseif if($cinemalocation == 'Kingston'){ 
    echo "Cinema Location: Feltham <br />"; 
} 

else{ 
echo "Cinema Location: Unknown <br />"; 
} 
     }; 
?> 
0

假設你可以改變給定的響應頁面代碼,並假設這是什麼在這裏需要的值只是已知的有限的情況下,你可以做這樣的事情:

<?php 
    $cinema = $_POST['cinema']; 
    foreach ($cinema as $cinemalocation) { 
     if ($cinemalocation == 'Wimbledon') { 
      print "Cinema Location: Richmond<br/>"; 
     } elseif ($cinemalocation == 'Sutton') { 
      print "Cinema Location: Kingston<br/>"; 
     } elseif ($cinemalocation == 'Kingston') { 
      print "Cinema Location: Feltham<br/>"; 
     } 
    } 
?> 

再次,這是基於斷時提供的有限的指令和信息。正如其他人所指出的,這不是最佳實踐,甚至不是真實世界的情景。 HTML不會在POST中傳回,即使是這樣,也有很多更好的方法可以根據發佈的選擇實現值的輸出。

相關問題