2014-11-23 8 views
0

У меня есть цикл foreach, который выводит мои продукты в таблицу. Код показано ниже:PHP submit in loop table

<table class="table table-striped table-bordered table-hover" id="sample_2"> 
<thead> 
<tr> 
<th>ID</th> 
<th>Product Name</th> 
<th>Quantity</th> 
<th style="width: 9%;"></th> 
</tr> 
</thead> 
<tbody> 
<?php foreach ($inputs as $package){ 
?> 
<form action="" method="post"> 
<tr> 
<td><?php echo $package->id; ?></td> 
<td><?php echo $package->name; ?></td> 
<td><input type="text" name="quantity" placeholder="Quantity for <?php echo $package->name; ?>" class="form-control"></td> 
<td style="text-align: center;"><button name="submit" type="submit" id="submit" class="btn blue"><i class="fa fa-check"></i> submit</button></td> 
</tr> 
</form> 
<?php } 
?> 
</tbody> 
</table> 

Хорошо я теперь нужно создать что-то, чтобы вставить поля в таблицу MySQL. Но как я могу получить $package->id, $package->name, они просто эхо? Мне нужно вставить в это:

CREATE TABLE IF NOT EXISTS `shop_packages` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `productid` int(11) NOT NULL, 
    `quantity` int(11) NOT NULL, 
    `worker` varchar(265) NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; 

Код для подавать 1.

if (isset($_POST['submit'])) { 
$productid = $_POST['id']; 
$productname = $_POST['name']; 
$quantity = $_POST['quantity']; 
$worker = $user['name']; 
$workerid = $user['id']; 
$result = $user->add_packages($productid,$productname,$quantity,$worker,$workerid); 
} 

print_r ($ _ POST [ 'пакет'])

Array ([0] => Array ([id] => 1) [1] => Array ([name] => Maxizoo Spåner 5 kg) [2] => Array ([quantity] =>) [3] => Array ([id] => 4) [4] => Array ([name] => Minihemp 4 kg.) [5] => Array ([quantity] =>) [6] => Array ([id] => 5) [7] => Array ([name] => Maxizoo Hø 2 kg.) [8] => Array ([quantity] => 2) [9] => Array ([id] => 6) [10] => Array ([name] => Maxizoo Halm 2 kg) [11] => Array ([quantity] => 1)) 

UPDATE:

if (isset($_POST['submit'])) { 

foreach ($_POST['package'] as $p){ 

    $productid = $p['id']; 
    $productname = $p['name']; 
    $quantity = $p['quantity']; 

    } 

$worker = $user['name']; 
$workerid = $user['id']; 
$result = $user->add_packages($productid,$productname,$quantity,$worker,$workerid); 
} 

ответ

0

Вам необходимо отправить их с помощью формы, например, с помощью скрытого ввода s.

<form action="" method="post"> 
    <table> 
     <tr> 
      <td><?php echo $package->id; ?></td> 
      <td><?php echo $package->name; ?></td> 
      <td><input type="text" name="quantity" placeholder="Quantity for <?php echo $package->name; ?>" class="form-control"></td> 
      <td style="text-align: center;"> 
       <input type="hidden" name="package_name" value="<?php echo $package->name; ?>"> 
       <input type="hidden" name="package_id" value="<?php echo $package->id; ?>"> 
       ^^ 
       <button name="submit" type="submit" id="submit" class="btn blue"><i class="fa fa-check"></i> submit</button> 
      </td> 
     </tr> 
    </table> 
</form> 

Чем, вы используете TR с и TD с, они должны быть только в таблице, поэтому я добавил таблицу тоже.

+0

Можно ли отправить все в одно и то же время, поэтому он отправляет команду вставки для каждого? –

+0

Конечно, если вы хотите отправить в базу данных больше пакетов, используйте массивы в атрибутах 'name'. В первом пакете скрытых входов будет 'name =" package [0] [name] ", name =" package [0] [id] "', для второго - 'name =" package [1] [name] ", name = "package [1] [id]" и т. д. В PHP это будет в массиве '$ _POST ['package']', попробуйте или посмотрите с помощью 'print_r' – panther

+0

Можете ли вы взглянуть на новый код i добавлено, не знает, как это сделать. Функция add_packages просто вставляет. Код, который я добавил, работает только с одним продуктом, а не с целым циклом –