2015-09-04 71 views
1

我有一個提交表單(或路由設計)的問題,刪除基於id的N表。 我一提出,使用索引PHP文件一個簡單的路由功能:問題發送路由POST參數

function relativeRouter ($controller,$action,$query_data=""){ 
    $param = is_array($query_data) ? http_build_query($query_data) : "$query_data"; 
    $url = "index.php?controller=$controller&action=$action&$param"; 
    return $url; 

索引創建使用控制器控制器的實例=? & action = ?. 它還將POST/GET參數綁定到方法參數(在數組中,$ params)。 (IM已經意識到不直接使用調用超全局

$params=array(); 
if(isset($_GET['controller'])&&isset($_GET['action'])){ 
    $c = $_GET['controller']; 
    $a = $_GET['action'];  
    // add all query string additional params to method signature i.e. &id=x&category=y 
    $queryParams = array_keys($_GET); 
    $queryValues = array_values($_GET); 
     for ($i=2;$i<count($queryParams);$i++) { 
      $params[$queryParams[$i]] = $queryValues[$i]; 
     } 

if ($_POST) { 
print_r($_POST); // THIS CONTAINS ONLY 1 PASSED ID. 
// add all query string additional params to method signature i.e. &id=x&category=y 
$queryParams = array_keys($_POST); 
$queryValues = array_values($_POST); 
     for ($i=0;$i<count($_POST);$i++) { 
      $params[$queryParams[$i]] = $queryValues[$i]; 
     } 
     } 
include_once APP_ROOT."/controller/$c.php"; 
$controller = new $c();//CombustibiliController 
$controller->$a($params);//inserimento 

} else { 
//attiva controller predefinito  
$controller = new Admin(); 
$controller->index(); 
} 

路由行之有效與不同的HTML表單項目名稱的形式。 (name =''),但我通過傳遞一個用於多重複選框刪除的ID數組來表示問題。

的$ _POST正到達一個數組只有一個項目,而不是多個:

Array ([ids] => 110) 

雖然與插入表格沒有麻煩的作品:

Array ([title] => 435 [desc] => 5534) 

這裏表視圖:

<?php 
if (isset($products)) { 
$action = relativeRouter("ProductsController", "deleteProducts"); 
$html="<form id='multiselect' action='$action' method='POST'>\n"; 
foreach ($products as $product) { 
    $html.= "<tr>\n" 
      ."<td><input type='checkbox' name='ids' value='".$product->id."'></td>\n" 
      ."<td>".$product->id."</td>\n" 
      ."<td>".$product->title."</td>\n" 
      ."<td>".$product->description."</td>\n" 
      ."<td>".$product->image."</td>\n" 
      ."</tr>\n"; 
} 
$html.="</form>\n"; 
echo $html; 
} 
?> 

在這裏,從一個按鈕運行形式的jQuery:

<script> 
     function send() { 
      $('#multiselect').submit(); 
      $('.play-confirm-modal').modal('hide'); 
     } 

$('.play-crud-delete').on('click',function(){ 

    var checked = $("input:checkbox:checked").length; 
    if(checked>0) { 
     $('.play-confirm-modal').modal('show'); 
     console.log(checked); 
    } else { 
     alert("No selected checkboxes"); 
    } 
}); 




</script> 

希望有人能幫忙。 Firefox網絡顯示模塊參數,但POST只包含其中一個,總是最後一個。

+1

''替換此並檢查。 'name'應該包含多值 – gvgvgvijayan

+0

的數組運算符。這是關於PHP的東西?我從來沒有像Java和Groovy那樣做過類似的事情。 –

+1

是在PHP多維總是與數組運算符 – gvgvgvijayan

回答

1

<input type='checkbox' name='ids[]' value='".$product->id."'>

替換此並檢查。名稱應包含array operator對於multivalue