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);
}