2014-03-05 119 views
0

我想創建一個批量更新頁面,所以當用戶點擊複選框時,然後編輯帖子來更新帖子。

下面是來自數據庫的某種形式的數據,我插在這裏爲html:

<form method="post"> 
    <table border="1"> 
     <tr> 
     <td>Select</td> 
     <td>url pic</td> 
     <td>url web</td> 
     </tr> 
     <tr> 
     <td><input type='checkbox' value='2' name='pp[]'> 2 0 <td> 
     <td><input type="text" value="lvTbHafU1L2gqnmuSVMrWZzkcGJxORFsjpg" name="img[2]"></td> 
     <td><input type="text" value="http://google.com" name="siteurl[2]"></td> 
     </tr> 
     <tr> 
     <td><input type='checkbox' value='3' name='pp[]'> 3 0 <td> 
     <td><input type="text" value="Da0qf3yKRglNewH6X5n9zShLGubZVQtxjpg" name="img[3]"></td> 
     <td><input type="text" value="http://google.com" name="siteurl[3]"></td> 
     </tr> 
     <tr> 
     <td><input type='checkbox' value='4' name='pp[]'> 4 0 <td> 
     <td><input type="text" value="SGdQJ8h5CjHPkEbYpF9oglatsTfyc0nA.jpg" name="img[4]"></td> 
     <td><input type="text" value="http://google.com" name="siteurl[4]"></td> 
     </tr> 
     <tr> 
     <td><input type='checkbox' value='5' name='pp[]'> 5 0 <td> 
     <td><input type="text" value="36247u089pt51l.jpg" name="img[5]"></td> 
     <td><input type="text" value="http://google.com" name="siteurl[5]"></td> 
     </tr> 
     <tr> 
     <td><input type='checkbox' value='6' name='pp[]'> 6 0 <td> 
     <td><input type="text" value="7a5083ou41269s.jpg" name="img[6]"></td> 
     <td><input type="text" value="http://google.com" name="siteurl[6]"></td> 
     </tr> 
    </table> 
    <input type="submit" name="sb" /> 
</form> 

現在我想:

1. Find checked checboxes - ok 
    2. Get checked checkboxes values => i have a problem at this setp 

這裏的PHP代碼:

<?php 
    if (isset($_POST['sb'])) { 
       $option = array("pp"); 
       $result = array(); 

       foreach ($option as $key) { 
        $result = $_POST[$key]; 
       } 

      $result2 = array(); 
      $options = array("img","siteurl"); 

      foreach ($result as $keys => $value) { 
       foreach ($options as $options_key) { 
        $result2[$value] = array($options_key => $_POST[$options_key][$value]); // problem ! 
       } 
      } 
     } 

    echo '<pre>'; 
    print_r ($result2); 
    echo '</pre>'; 
?> 

我有此代碼中的問題

$result2[$value] = array($options_key => $_POST[$options_key][$value]); 

因爲它顯示只有最後一個值:

$options = array("img","siteurl"); 

輸出是:

Array 
(
    [5] => Array 
     (
      [siteurl] => http://google.com 
     ) 

    [6] => Array 
     (
      [siteurl] => http://google.com 
     ) 

) 

我需要的輸出是這樣的:

Array 
(
    [5] => Array 
     (
      [img] => 36247u089pt51l.jpg 
      [siteurl] => http://google.com 
     ) 

    [6] => Array 
     (
      [img] => 7a5083ou41269s.jpg 
      [siteurl] => http://google.com 
     ) 

) 

注意:如果我使用此代碼:

 $result2[$value] = array('img' => $_POST['img'][$value] , 
     'siteurl' => $_POST['siteurl'][$value] 
     ); 

的outuput將是:

[5] => Array 
    (
     [img] => 36247u089pt51l.jpg 
     [siteurl] => http://google.com 
    ) 

這將是好的,但我不想這樣做,因爲我有太多的值(我寫的只是其中的2這段代碼),並希望知道如何解決這個問題。

+1

你是不是在foreach循環 –

+0

輸出什麼,我使用'foreach'在'foreach'這部分是確定的,我的問題是'$選項=陣列(」 img「,」siteurl「);'只顯示'$ result2 [$ value] = array($ options_key => $ _POST [$ options_key] [$ value])中的最後一個值;' – user3325376

回答

2
$result2[$value] = array($options_key => $_POST[$options_key][$value]); // problem ! 

更改爲:

if(!isset($result2[$value])) $result2[$value] = array(); 
$result2[$value][$options_key] = $_POST[$options_key][$value]; 
+0

非常感謝你,你能解釋一下嗎關於這個'if(!isset($ result2 [$ value]))'',如果可能的話我會很感激的解釋我爲什麼我的代碼不工作,因爲我認爲我的循環是真的 – user3325376

+0

你的代碼重複覆蓋'$ result2 [$ value]'數組一個只有一個鍵的新陣列 - 最後一個。我的代碼將初始化數組,如果它尚不存在,然後添加一個鍵,而不是完全取代它。 –

相關問題