2012-01-22 20 views
0

我有疑問。我有3個文本框,每個文本框旁邊都有複選框。我想僅顯示 這些文本框的值,這些文本框的相應複選框會被點擊。以下是附帶的HTML和PHP代碼:無法通過各個複選框的幫助獲取文本字段的值。請幫忙

<html> 
    <head> 
    </head> 
     <body> 
      <form name="f" method="post" action="4.php"> 
       <table> 
        <tr> 
        <th> Facility </th> 
        </tr> 
        <tr> 
        <td><input type="text" name="a1" value="a"></td><td><input type="checkbox" id="facility[]" name="facility[]" value="Hostel"></td> 
        </tr> 
        <tr> 
        <td><input type="text" name="b1" value="b"></td><td><input type="checkbox" id="facility[]" name="facility[]" value="Transport"></td> 
        </tr> 
        <tr> 
        <td><input type="text" name="c1" value="c"></td><td><input type="checkbox" id="facility[]" name="facility[]" value="Food"></td> 
        </tr> 
        <tr> 
        <td colspan="3"><input type="submit" value="submit" /></td> 
        </tr> 
       </table> 
       </form> 
      </body> 
</html> 

以下是PHP部分。

<?php 
    $a=$_POST['a1']; 
    $b=$_POST['b1']; 
    $c=$_POST['c1']; 

    $facilityArray = $_POST['facility']; 
    $facility = ""; 
    if(count($facilityArray) > 0) 
    { 
     foreach($facilityArray as $fac) 
     { 
      $facility .= " " . $fac; 
     } 
    } 

    echo $facility; echo "<br>"; 
    echo $a; echo "<br>"; 
    echo $b; echo "<br>"; 
    echo $c; 
?> 

在以下代碼的幫助下,我可以顯示選中的複選框的所有值。我也能夠顯示所有文本框的值。但我實際上只想顯示其各個複選框被點擊的文本框的值。我知道這可能是一個非常基本的問題,但請幫助我在PHP中成長。在此先感謝... :(

回答

1

你的文本框也應該是一個數組後實現這一

爲了實現這一改變輸入線爲:

<td><input type="text" name="textboxes[]" value="a"></td><td><input type="checkbox" id="facility[]" name="facility[]"></td> 

從PHP你會越來越張貼文本框以陣列爲:

$textbox=$_POST['textboxes']; 

你應該然後通過複選框陣列,並且如果相應的複選框處於「開」(點擊)循環,然後顯示文本框的值。要做到這一點,你還需要一個計數器,以確保您對兩個複選框和文本框相同的數組索引:

if(count($facilityArray) > 0) 
{ 
    $i = 0; 
    foreach($facilityArray as $fac) 
    { 
     if($fac == "on") 
     { 
      echo $textbox[$i] . "</br>"; 
     } 
     $i ++; 
    } 
} 

我還添加了一個名稱,你的提交按鈕,所以你只檢查表單時它被提交。 您的頁面現在看起來應該是這樣的:

 <?php 
    if(isset($_POST['submit'])) 
    { 
     $textbox=$_POST['textboxes']; 

     $facilityArray = $_POST['facility']; 

     if(count($facilityArray) > 0) 
     { 
      $i = 0; 
      foreach($facilityArray as $fac) 
      { 
       if($fac == "on") 
       { 
        echo $textbox[$i] . "</br>"; 
       } 
       $i ++; 
      } 
     } 

    } 
    ?> 
    <form name="f" method="post" action="4.php"> 


     <table> 
         <tr> 
         <th> Facility </th> 
         </tr> 
         <tr> 
         <td><input type="text" name="textboxes[]" value="a"></td><td><input type="checkbox" id="facility[]" name="facility[]"></td> 
         </tr> 
         <tr> 
         <td><input type="text" name="textboxes[]" value="b"></td><td><input type="checkbox" id="facility[]" name="facility[]"></td> 
         </tr> 
         <tr> 
         <td><input type="text" name="textboxes[]" value="c"></td><td><input type="checkbox" id="facility[]" name="facility[]"></td> 
         </tr> 
         <tr> 
         <td colspan="3"><input name="submit" type="submit" value="submit" /></td> 
         </tr> 
     </table> 
    </form> 

UPDATE:

要確保在$ _ POST變量將其分配給我們使用isset一個變量之前存在的()。在你的情況下,只需更新PHP段:

<?php 
    if(isset($_POST['submit'])) 
    { 
     if(isset($_POST['textboxes'])) 
     { 
      $textbox=$_POST['textboxes']; 

      if(isset($_POST['facility'])) 
      { 
       $facilityArray = $_POST['facility']; 

       if(count($facilityArray) > 0) 
       { 
        $i = 0; 
        foreach($facilityArray as $fac) 
        { 
         if($fac == "on") 
         { 
          echo $textbox[$i] . "</br>"; 
         } 
         $i ++; 
        } 
       } 
      } 
     } 

    } 
?> 

,唯一的變化是增加了另外兩個如果是否$ _POST變量已經發布,根據需要布爾標誌從isset()函數函數聲明成功

if(isset($_POST['textboxes'])) 

if(isset($_POST['facility'])) 
+0

謝謝你這麼多,非常快速回復和遺憾,從我side.Your的代碼響應後期工作完美,我的目的是實現前當我沒有選擇複選框並提交表單時,這個時候會拋出以下錯誤。注意:未定義的索引:C:\ xampp \ htdocs \ xampp \ Test \ HRMS \中的文本框\ try \ chcking with checkboxes \ 2.php on line 53 注意:未定義索引:myCheckBox位於C:\ xampp \ htdocs \ xampp \ Test \ HRMS \ try \ chcking with checkboxes \ 2.php on line 55.我對PHP編碼仍然很陌生。希望你能在一瞬間解決這個問題。謝謝:( –

+0

)這兩行代碼提示我的表單時沒有檢查任何複選框,如果我檢查任何1複選框,那麼它工作正常。$文本框= $ _ POST [ '的文本框']; $ facilityArray = $ _POST ['facility']; –

+1

查看使用isset()函數的更新 – Kypros