2016-02-19 81 views
0

我有一個表單,我試圖通過隱藏字段傳遞值。此刻,我傳遞了一個ID和一個數量,他們被髮送到兩個單獨的數組中。我想在同一個隱藏字段中將這兩個數據發送到同一個多維數組中,這可能嗎?隱藏字段中的多維數組

這是我的PHP代碼:

if(isset($_SESSION["cart"])) { 

    foreach ($_SESSION["cart"] as $id => $value) { 

     $ids .= $id . ','; 

     $count += $value['quantity']; 

     $totalPrice += $value['price'] * $value['quantity']; 

    } 

    $query = $database->find_item_db($ids); 

    foreach ($query as $single_query) { 

    $id = $single_query['Sweet_ID']; 

    $stock_level = $database->get_stock($id); 

    $stock_quantity = (int)$stock_level[0]['Quantity']; 

    echo $single_query['Description']; ?> x <?php echo $_SESSION['cart'][$id]['quantity'] . '<a href="?idToRemove=' . $id . '&action=remove"> Remove </a>' . '</br>'; ?> 

    <input type="hidden" value="<?php echo $id; ?>" name="sweetids[][]"/> 
    <input type="hidden" value="<?php echo $stock_quantity;?>" name="quantites[]"/> 
+1

你可以通過把它作爲一個'json'字符串表示('json_encode'),設置一個'hidden'字段作爲JSON,但我看不出這種做法背後的原因。什麼是你想實現 ? – Pogrindis

+0

@Pogrindis我想通過這樣的數據,所以當單擊一個按鈕,然後我可以使用這些值來編輯數據庫與PHP –

+0

你可以添加一個例子你想通過你的窗體的數組結構? – ThinkTank

回答

1

我會通過作爲數組的隱藏字段發送它們,然後使用MultipleIterator類將它們分組到各自的數組中。

可能是這樣的。

$iterator = new MultipleIterator(); 
$iterator->attachIterator (new ArrayIterator ($_POST['sweetids'])); 
$iterator->attachIterator (new ArrayIterator ($_POST['quantites'])); 
$iterator->attachIterator (new ArrayIterator ($_POST['stock'])); 

foreach ($iterator as $item) 
{ 
    $id = $item[0]; 

    $quantity = (int)$item[1]; 

    $stock = (int)$item[2]; 

    $new_stock = $stock - $quantity; 

    $database->update_stock($id, $new_stock); 

} 
0

你此刻加2個用於每個甜食,可能會更好打造甜美集合,然後用這個作爲輸入的值。

沿着以下幾行。

$sweetCollection = array(); 

foreach ($query as $single_query) { 
    $sweet = array(); 
    // Set values 
    $sweet['id'] = $single_query['Sweet_ID']; 
    $sweet['level'] = $database->get_stock($sweet['id']); 
    $sweet['quantity'] = (int)$sweet['level'][0]['Quantity']; 
    // Add to array 
    array_push($sweetCollection, $sweet); 
    echo $single_query['Description']; ?> x <?php echo $_SESSION['cart'][$id]['quantity'] . '<a href="?idToRemove=' . $id . '&action=remove"> Remove </a>' . '</br>'; ?> 

} 

現在,當我們想要添加我們做的輸入字段使用JSON如下:

<input type="hidden" value="<?php echo json_encode($sweetCollection); ?>" name="sweetCollection"/> 

我不知道爲什麼你需要這個,因爲你可以只使用$_Input['name']瓦爾如常雖然。此外,JSON字符串可能會變得相當大,而且會很奇怪。

1

一個簡單的解決方案是序列化數組,只是呼應成隱藏字段

<textarea name="name" style="display:none;"/> 
<?php echo serialize($data); ?> 
</textarea> 

後來與

unserialize($data); 

撤消反序列化你有你的陣列回來,因爲它是

前,後