2011-08-18 31 views
1

在創建選中框的值我有以下表格:PHP。該陣列

<form action="update-table.php" method="post"> 
<table class="table-data" border="1"> 
    <thead> 
     <tr> 
      <td>ID</td> 
      <td>Live</td> 
      <td>User</td> 
      <td>Last Update</td> 
      <td>Title</td> 
      <td>Content</td> 
      <td>Edit</td> 
      <td>Delete</td> 
     </tr> 
    </thead> 
    <tbody> 
     <tr> 
      <td><input name="id[]" type="text" readonly="readonly" value="1" /></td> 
      <td><input name="live[]" type="checkbox" checked="checked" value="1"/></td> 
      <td>[email protected]</td> 
      <td>August 18, 2011, 10:10 am</td> 
      <td>Title1</td> 
      <td>Content1</td> 
      <td><a href="edit-news.php?editID=1">Edit</a></td> 
      <td><a href="delete-news.php?deleteID=1">Delete</a></td> 
     </tr> 
     <tr> 
      <td><input name="id[]" type="text" readonly="readonly" value="2" /></td> 
      <td><input name="live[]" type="checkbox" /></td> 
      <td>[email protected]</td> 
      <td>August 18, 2011, 10:11 am</td> 
      <td>Title2</td> 
      <td>Content2</td> 
      <td><a href="edit-news.php?editID=2">Edit</a></td> 
      <td><a href="delete-news.php?deleteID=2">Delete</a></td> 
     </tr> 
     <tr> 
      <td><input name="id[]" type="text" readonly="readonly" value="3" /></td> 
      <td><input name="live[]" type="checkbox"/></td> 
      <td>[email protected]</td> 
      <td>August 18, 2011, 10:10 am</td> 
      <td>Title3</td> 
      <td>Content3</td> 
      <td><a href="edit-news.php?editID=3">Edit</a></td> 
      <td><a href="delete-news.php?deleteID=3">Delete</a></td> 
     </tr> 
    </tbody> 
</table> 
<input type="submit" /> 

我想要做的是顯示陣列$_POST發送。

問題是,當未選中複選框 - 什麼都沒有送。

如何檢查$_POST['live']是否已設置,如果沒有 - 將其值設置爲0?

下面的代碼無法正常工作。爲什麼?

if (!isset($_POST['live'])) { 
      $_POST['live'] = "0"; 
     } 


     for ($i=0;$i<count($_POST['id']);$i++) { 

      echo "<p>".$_POST['id'][$i]."</p>"; 
      echo "<p>".$_POST['live'][$i]."</p>"; 
      echo "<hr />"; 

     } 

回答

1

試試這個:

for ($i=0;$i<count($_POST['id']);$i++) { 

    if(!isset($_POST['live'][$i])){ 
     $_POST['live'][$i] = "0"; 
    } 

    echo "<p>".$_POST['id'][$i]."</p>"; 
    echo "<p>".$_POST['live'][$i]."</p>"; 
    echo "<hr />"; 
} 
+0

確定。這確實有用。但是我的語法有什麼問題? – Iladarsda

+1

那麼,在循環之前,你基本上如果現場的陣列設置檢查,因此,如果一個活的變量設置你會被它計算爲true,否則,你會被改變'$ _ POST [「活」]'從一個數組到一個int。另外,如果你嘗試和回聲,你會得到一個wraning'$ _ POST [「活的」] [$ i]',因爲沒有這樣的價值 - 所以最好在試圖呼應之前包裝在一個if/else語句。 – Prisoner

+0

好的,但這種方式將不可能,如果我會做SQL更新查詢。這是我的目標。有沒有辦法檢查'live'的值(如果沒有設置,就更改它),但將它保存爲數組? – Iladarsda