I am trying to get an Array of $_POST data and inserting it into mysql with 3 insert statements .. to make 3 new rows in a table.
Form: The Variable in the name field is the Workshop ID number.
<div class="form-group row">
<label for="make" class="col-sm-2 col-form-label">Appropriate</label>
<div class="col-sm-4"><input type="text" name="appropriate[<?php echo $theassign?>]" class="form-control" >
</div>
</div>
<div class="form-group row">
<label for="model" class="col-sm-2 col-form-label">Useful</label>
<div class="col-sm-4"><input type="text" name="useful[<?php echo $theassign?>]" class="form-control" >
</div>
</div>
<div class="form-group row">
<label for="serial" class="col-sm-2 col-form-label">understandable</label>
<div class="col-sm-4"><input type="text" name="understandable[<?php echo $theassign?>]" class="form-control" >
</div>
</div>
The final mysql statement will be something like the following where $workshopid would come from the numbers inside the brackets in the array
INSERT INTO evaluation (workshopid, appropriate, useful, understandable) VALUES ($workshopid, $appropriate, $useful, $understandable)
INSERT INTO evaluation (workshopid, appropriate, useful, understandable) VALUES ($workshopid, $appropriate, $useful, $understandable)
INSERT INTO evaluation (workshopid, appropriate, useful, understandable) VALUES ($workshopid, $appropriate, $useful, $understandable)
Currently, print_r($_POST); yeilds:
Array ( [appropriate] => Array ( [12] => 1 [4] => 2 [11] => 3 ) [useful] => Array ( [12] => 1 [4] => 2 [11] => 3 ) [understandable] => Array ( [12] => 1 [4] => 2 [11] => 3 ) [helpful] => Array ( [12] => 1 [4] => 2 [11] => 3 ) )
Can somebody help with the foreach loop?
THIS gets me close
$keys = array_keys($_POST);
for($i = 0; $i < count($_POST); $i++) {
echo $keys[$i] . "<br>";
foreach($_POST[$keys[$i]] as $key => $value) {
echo $key . ":" . $value . "<br>";
}
echo "<br>";
}
but I don’t want to group the ‘appropriate’ .. together .. I want to group the 12s together, as THAT is the $workshopid.
appropriate 12:1 4:2 11:3 useful 12:1 4:2 11:3 understandable 12:1 4:2 11:3 helpful 12:1 4:2 11:3
Advertisement
Answer
Considering the values to always be a number, I’d do something like this:
$inserts = array();
foreach($_POST['appropriate'] as $workshipid => $appropriate){
$appropriate = (int) $appropriate;
$useful = (int) $_POST['useful'][$workshipid];
$understandable = (int) $_POST['understandable'][$workshipid];
$inserts[] = "($workshopid, $appropriate, $useful, $understandable)";
}
//Query:
if($inserts){
$query = "INSERT INTO evaluation (workshopid, appropriate, useful, understandable) VALUES " . implode(',', $inserts);
}