在数据库中多次输入产品-PHP

时间:2018-11-04 00:40:08

标签: php forms

我简单地解释了我创建了一个表,该表显示了我所有的视频产品,其中包含它的容器内部有两个select,以表格形式包含在内,它们传递值以将表填充到我的数据库中,并且一切正常。尽管唯一的一件事情是,当我选择一个以上的产品时,数据库仅正确地注册了从复选框中选择的最后一个产品,放置我的代码以实现我的目标,即能够插入更多产品(impianto_id_campagna)客户ID(cliente_id_campagna)和事件ID(id_campagna_cliente):

代码:

<?php
$messaggio = "";
if (isset($_POST['submit'])) {
include '../connessione.php';
$id_campagna_cliente = $connessione->real_escape_string($_POST['id_campagna_cliente']);
$cliente_id_campagna = $connessione->real_escape_string($_POST['cliente_id_campagna']);
$impianto_id_campagna = $connessione->real_escape_string($_POST['impianto_id_campagna']);
$connessione->query("INSERT INTO campagne_cliente (
id_campagna_cliente,
cliente_id_campagna,
impianto_id_campagna) 

VALUES (
'$id_campagna_cliente', 
'$cliente_id_campagna', 
'$impianto_id_campagna')");
$messaggio = "Registrazione Completata!";
}
?>      

 <main>
<?php
include '../connessione.php';
$query_string = "SELECT * FROM store_locator WHERE store_locator.id NOT IN (SELECT impianto_id_campagna FROM campagne_cliente)";
$query = mysqli_query($connessione, $query_string);
?>

<?php
include '../connessione.php';
$query_string = "SELECT * FROM clienti";
$clienti = mysqli_query($connessione, $query_string);
?>

<?php
include '../connessione.php';
$query_string = "SELECT * FROM campagne_cliente
INNER JOIN clienti
ON clienti.cliente_id = campagne_cliente.cliente_id_campagna 
INNER JOIN campagne
ON campagne.id_campagna = campagne_cliente.id_campagna_cliente GROUP BY cognome";
$campagne = mysqli_query($connessione, $query_string);
?>


<!-- Datatables initialization -->
<script>
// Basic example
$(document).ready(function () {
  $('#dtBasicExample').DataTable();
  $('.dataTables_length').addClass('bs-select');
});
</script>

<!-- Structured data: Breadcrumbs -->



<form method="post" action="index.php">
<div class="container-fluid text-center">
<div class="row">

<div class="col-md-6">
<select name="cliente_id_campagna" class="ciao colorful-select dropdown-primary" multiple searchable="Cerca il Cliente">
<option value="" disabled selected>Cliente</option>
<?php
while($row = mysqli_fetch_assoc($clienti)){ ?>
<option value="<?php echo $row['cliente_id'] ;?>"><?php echo $row['nome'].'&nbsp;'.$row['cognome'] ;?></option>
<?php } ?>
</select>

<script type="text/javascript">
// Material Select Initialization
$(document).ready(function() {
$('.ciao').material_select();
});
</script>
</div>

<div class="col-md-6">
<select name="id_campagna_cliente" class="ok colorful-select dropdown-primary" multiple searchable="Cerca la campagna">
<option value="" disabled selected>Cliente</option>
<?php
while($row = mysqli_fetch_assoc($campagne)){ ?>
<option value="<?php echo $row['id_campagna_cliente'] ;?>"><?php echo $row['nome'].'&nbsp;'.$row['cognome'].'&nbsp;&nbsp;&nbsp;INIZIO['.$row['data_inizio'].']&nbsp;&nbsp;&nbsp;FINE['.$row['data_fine'].']' ;?></option>
<?php } ?>
</select>

<script type="text/javascript">
// Material Select Initialization
$(document).ready(function() {
$('.ok').material_select();
});
</script>
</div>

</div>


<div  class="col-md-12">
<?php if ($messaggio != "") echo $messaggio . "<br><br>"; ?>

<table id="dtBasicExample" class="table table-striped table-bordered table-sm" cellspacing="0" width="100%">
  <thead>
    <tr>
      <th class="th-sm">ID
        <i class="fa fa-sort float-right" aria-hidden="true"></i>
      </th>
      <th class="th-sm">Cimasa
        <i class="fa fa-sort float-right" aria-hidden="true"></i>
      </th>
      <th class="th-sm">Proprietaria
        <i class="fa fa-sort float-right" aria-hidden="true"></i>
      </th>
      <th class="th-sm">Concessionaria
        <i class="fa fa-sort float-right" aria-hidden="true"></i>
      </th>
      <th class="th-sm">City
        <i class="fa fa-sort float-right" aria-hidden="true"></i>
      </th>
      <th class="th-sm">Latitudine
        <i class="fa fa-sort float-right" aria-hidden="true"></i>
      </th>
      <th class="th-sm">Longitudine
        <i class="fa fa-sort float-right" aria-hidden="true"></i>
      </th>

    </tr>
  </thead>
  <tbody>

<?php
while($row = mysqli_fetch_assoc($query)){ ?>
<tr>
<td>        
<!-- Material unchecked -->
<div class="form-check">
    <input type="checkbox" name="impianto_id_campagna" class="form-check-input" value="<?php echo $row['id'] ;?>" id="<?php echo $row['id'] ;?>">
    <label class="form-check-label" for="<?php echo $row['id'] ;?>"></label>
</div>
</td>
<td><?php echo $row['cimasa'] ;?></td>
<td><?php echo $row['proprietaria'] ;?></td>
<td><?php echo $row['concessionaria'] ;?></td>
<td><?php echo $row['city'] ;?></td>
<td><?php echo $row['lat'] ;?></td>
<td><?php echo $row['lng'] ;?></td>
</tr>
<?php } ?>


  </tfoot>
</table>
<input class="btn btn-primary" name="submit" type="submit" value="Register..."><br>


</form>
</div>
</div>

2 个答案:

答案 0 :(得分:1)

它仅注册最后一个选定的产品,因为每个复选框都具有相同的名称属性。将名称设置为impianto_id_campagna[]以便在您的$_POST变量中返回一个数组。

<input type="checkbox" name="impianto_id_campagna[]" class="form-check-input" value="<?php echo $row['id'] ;?>" id="<?php echo $row['id'] ;?>">

然后循环所有复选框值,一次插入一个产品:

<?php
$id_campagna_cliente = $connessione->real_escape_string($_POST['id_campagna_cliente']);
$cliente_id_campagna = $connessione->real_escape_string($_POST['cliente_id_campagna']);

foreach ($_POST['impianto_id_campagna'] as $value)
{
    $impianto_id_campagna = $connessione->real_escape_string($value);

    $connessione->query("INSERT INTO campagne_cliente (
    id_campagna_cliente,
    cliente_id_campagna,
    impianto_id_campagna) 

    VALUES (
    '$id_campagna_cliente', 
    '$cliente_id_campagna', 
    '$impianto_id_campagna')");

    $messaggio = "Registrazione Completata!";
}

答案 1 :(得分:-1)

复选框项作为数组传递。为了使它们进入数据库,您必须遍历数组并采取相应的措施。

foreach($impianto_id_campagna as $row){
    //Iterate through and do what you need to do with the data.
}