Como faço para colocar mais uma campo nessa tabela

Como faço para colocar mais uma campo igual o mvp_entrega, tentei aqui mas apresento erro

        <?php

include_once '../cadastro/conexao.php';

$id_metas = filter_input(INPUT_POST, 'id_metas', FILTER_SANITIZE_STRING);
$mvp_entrega = $_POST["mvp_entrega"];

$cont_insert = false;

foreach ($mvp_entrega as $mvp_entrega) {
    $result_aula = "INSERT INTO entregas (id_metas, mvp_entrega) VALUES (:id_metas, :mvp_entrega)";

    $insert_aula = $conn->prepare($result_aula);
    $insert_aula->bindParam(':id_metas', $id_metas);
    $insert_aula->bindParam(':mvp_entrega', $mvp_entrega);
    if ($insert_aula->execute()) {
        $cont_insert = true;
    } else {
        $cont_insert = false;
    }
}
if ($cont_insert) {
    echo "<p style='color:green;'>Cadastrado com Sucesso</p>";
} else {
    echo "<p style='color:red;'>Erro ao cadastrar</p>";
}

<center>
            <form class="form" id="add-aula" method="POST">
                <div class="section">
                    <div class="control-group">
                        <div class="input-group">
                            <span style="min-width: 85px; font-weight: bold; border: 1px solid #ccc; border-radius: 4px;" class="input-group-addon">Meta: <?php if(isset($row_msg_cont['nome_meta'])){ echo $row_msg_cont['nome_meta']; } ?></span>
                        </div>
                        <input class="form-control" type="hidden" readonly name="id_metas" value="<?php if(isset($row_msg_cont['id_metas'])){ echo $row_msg_cont['id_metas']; } ?>">
                        <div class="input-group">
                            <span style="min-width: 170px; font-weight: bold;" class="input-group-addon">MVP</span>
                            <span style="min-width: 200px; font-weight: bold;" class="input-group-addon">Entrega</span>
                            <span style="min-width: 160px; font-weight: bold;" class="input-group-addon">Data</span>
                            <span style="min-width: 100px; font-weight: bold;" class="input-group-addon">Status</span>
                            <span style="min-width: 100px; font-weight: bold;" value="aa" class="input-group-addon">Peso (%)</span>
                        </div>
                        <div style="display: block; display: flow-root;" class="input-group" id="formularios">
                            <input style="max-width: 170px; height: 63px; text-align: center;" class="form-control" type="text" name="mvp_entrega[]" placeholder="Produto viável mínimo">
                            <input style="max-width: 200px; height: 63px; text-align: center;" class="form-control" type="text" name="nome_entrega[]" placeholder="Descreva a Entrega">
                            <input style="max-width: 160px; height: 63px; text-align: center;" class="form-control" type="date" name="data_entrega[]" onkeypress="$(this).mask('000')">
                            <select style="max-width: 100px; height: 63px; text-align: center;" class="form-control" name="status_entrega[]">
                                <option value="" selected>--</option>
                                <option value="Entregue">Entregue</option>
                                <option value="A Entregar">A Entregar</option>
                                <option value="Em Atraso">Em Atraso</option>
                            </select>
                            <input style="max-width: 65px; height: 63px; text-align: center;" class="form-control" type="text" name="peso_entrega[]" id="peso_entrega" placeholder="Peso" onkeypress="$(this).mask('000')">
                            <span style=" height: 63px; width: 34px; color: #fff;border-radius: 4px; border-top-left-radius: 0px;border-bottom-left-radius: 0px;" class="input-group-addon btn-success" type="button" id="add-campo">+</span>
                            <input  name="resultado_pesos" id="resultado_pesos" value="" type="text">
                            <span id="msg" name="msg"></span>
                        </div>
                    </div>
                    <div class="control-group">
                        <span class="btn btn-primary btn-block" type="button" name="CadAulas" id="CadAulas" value="Cadastrar">Cadastrar</span>
                    </div>
                </div>
            </form>
        </div>
    </center>

<script>
    $(document).ready(function () {
        var cont = 1;
//https://api.jquery.com/click/
$('#add-campo').click(function () {
    cont++;
//https://api.jquery.com/append/
$('#formulario').append('<div style="margin-top: 16px;" id="campo' + cont + '" class="input-group"><span style="width: 140px;" class="input-group-addon">Descreva a Meta:</span><input style="height: 34px; width: 278px" type="text" class="form-control" id="inlineCheckbox1" name="nome_meta[]" placeholder="Descreva a Meta"><span style="color: #fff; height: 34px; min-width: 34px" class="btn-apagar input-group-addon btn btn-danger" type="button" id="' + cont + '">-</span></div>');
});

$('form').on('click', '.btn-apagar', function () {;
    var button_id = $(this).attr("id");
    $('#campo' + button_id + '').remove();
});

$("#CadAulas").click(function () {
//Receber os dados do formulário
var dados = $("#add-aula").serialize();
$.post("insert.php", dados, function (retorna) {
    $("#msg").slideDown('slow').html(retorna);

//Limpar os campos
//$('#add-aula')[0].reset();

colocarMsg();
//Apresentar a mensagem leve
retirarMsg();
});
});

//Retirar a mensagem após 1700 milissegundos
function retirarMsg() {
    setTimeout(function () {
        $("#msg").slideUp('slow', function () {});
    }, 2700);
}
});
</script>

O que você tentou? Qual erro deu?

usando esse insert

<?php

include_once '../cadastro/conexao.php';

$id_metas = filter_input(INPUT_POST, 'id_metas', FILTER_SANITIZE_STRING);
$mvp_entrega = $_POST["mvp_entrega"];
$nome_entrega = $_POST["nome_entrega"];
$cont_insert = false;

foreach ($mvp_entrega as $mvp_entrega){
$result_aula = "INSERT INTO entregas (id_metas, mvp_entrega, nome_entrega) VALUES (:id_metas, :mvp_entrega, :nome_entrega)";

$insert_aula = $conn->prepare($result_aula);
$insert_aula->bindParam(':id_metas', $id_metas);
$insert_aula->bindParam(':mvp_entrega', $mvp_entrega);
$insert_aula->bindParam(':nome_entrega', $nome_entrega);
if ($insert_aula->execute()) {
    $cont_insert = true;
} else {
    $cont_insert = false;
}
}
if ($cont_insert) {
echo "<p style='color:green;'>Cadastrado com Sucesso</p>";
} else {
echo "<p style='color:red;'>Erro ao cadastrar</p>";
}

deu esse erro

Warning : Array to string conversion in C:\xampp\htdocs\planejamento\admin\monitora\insert.php on line 16

Cadastrado com Sucesso

Hm, parece que “nome_entrega” é um array também. Poderia iterar pelos dois arrays.

Tenta assim:

for ($i = 0; $i < count($mvp_entrega) && $i < count($nome_entrega); $i++) {
   $entrega = $mvp_entrega[$i];
   $nome = $nome_entrega[$i];
   
   $result_aula = "INSERT INTO entregas (id_metas, mvp_entrega, nome_entrega) VALUES (:id_metas, :entrega, :nome)";
  //resto
}
1 curtida
<?php

include_once '../cadastro/conexao.php';

$id_metas = filter_input(INPUT_POST, 'id_metas', FILTER_SANITIZE_STRING);
$mvp_entrega = $_POST["mvp_entrega"];
$nome_entrega = $_POST["nome_entrega"];
$cont_insert = false;

for ($i = 0; $i < count($mvp_entrega) && $i < count($nome_entrega); $i++) {
   $entrega = $mvp_entrega[$i];
   $nome = $nome_entrega[$i];
   
   $result_aula = "INSERT INTO entregas (id_metas, mvp_entrega, nome_entrega) VALUES (:id_metas, :entrega, :nome)";

    $insert_aula = $conn->prepare($result_aula);
    $insert_aula->bindParam(':id_metas', $id_metas);
    $insert_aula->bindParam(':mvp_entrega', $mvp_entrega);
    $insert_aula->bindParam(':nome_entrega', $nome_entrega);
    if ($insert_aula->execute()) {
        $cont_insert = true;
    } else {
        $cont_insert = false;
    }
}
if ($cont_insert) {
    echo "<p style='color:green;'>Cadastrado com Sucesso</p>";
} else {
    echo "<p style='color:red;'>Erro ao cadastrar</p>";
}

apresentou esse erro:

Warning : Array to string conversion in C:\xampp\htdocs\planejamento\admin\monitora\insert.php on line 18

Warning : Array to string conversion in C:\xampp\htdocs\planejamento\admin\monitora\insert.php on line 19

**Fatal error** : Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:\xampp\htdocs\planejamento\admin\monitora\insert.php:20 Stack trace: #0 C:\xampp\htdocs\planejamento\admin\monitora\insert.php(20): PDOStatement->execute() #1 {main} thrown in **C:\xampp\htdocs\planejamento\admin\monitora\insert.php** on line **20**

Troca $mvp_entrega por $entrega e $nome_entrega por $nome

somente a variavel ?

Warning : Undefined array key “mvp” in C:\xampp\htdocs\planejamento\admin\monitora\insert.php on line 6

Warning : Undefined array key “nome” in C:\xampp\htdocs\planejamento\admin\monitora\insert.php on line 7

Fatal error : Uncaught TypeError: count(): Argument #1 ($var) must be of type Countable|array, null given in C:\xampp\htdocs\planejamento\admin\monitora\insert.php:10 Stack trace: #0 {main} thrown in C:\xampp\htdocs\planejamento\admin\monitora\insert.php on line 10

<?php

include_once '../cadastro/conexao.php';

$id_metas = filter_input(INPUT_POST, 'id_metas', FILTER_SANITIZE_STRING);
$mvp = $_POST["mvp"];
$nome = $_POST["nome"];
$cont_insert = false;

for ($i = 0; $i < count($mvp) && $i < count($nome); $i++) {
   $entrega = $mvp[$i];
   $nome = $nome[$i];
   
   $result_aula = "INSERT INTO entregas (id_metas, mvp, nome) VALUES (:id_metas, :mvp, :nome)";

    $insert_aula = $conn->prepare($result_aula);
    $insert_aula->bindParam(':id_metas', $id_metas);
    $insert_aula->bindParam(':mvp', $mvp);
    $insert_aula->bindParam(':nome', $nome);
    if ($insert_aula->execute()) {
        $cont_insert = true;
    } else {
        $cont_insert = false;
    }
}
if ($cont_insert) {
    echo "<p style='color:green;'>Cadastrado com Sucesso</p>";
} else {
    echo "<p style='color:red;'>Erro ao cadastrar</p>";
}
<?php

include_once '../cadastro/conexao.php';

$id_metas = filter_input(INPUT_POST, 'id_metas', FILTER_SANITIZE_STRING);
$mvp_entrega = $_POST["mvp_entrega"];
$nome_entrega = $_POST["nome_entrega"];
$cont_insert = false;

for ($i = 0; $i < count($mvp_entrega) && $i < count($nome_entrega); $i++) {
   $entrega = $mvp_entrega[$i];
   $nome = $nome_entrega[$i];
   
   $result_aula = "INSERT INTO entregas (id_metas, mvp_entrega, nome_entrega) VALUES (:id_metas, :entrega, :nome)";

    $insert_aula = $conn->prepare($result_aula);
    $insert_aula->bindParam(':id_metas', $id_metas);
    $insert_aula->bindParam(':entrega', $entrega);
    $insert_aula->bindParam(':nome', $nome);
    if ($insert_aula->execute()) {
        $cont_insert = true;
    } else {
        $cont_insert = false;
    }
}
if ($cont_insert) {
    echo "<p style='color:green;'>Cadastrado com Sucesso</p>";
} else {
    echo "<p style='color:red;'>Erro ao cadastrar</p>";
}
1 curtida

foi …

se eu quiser adiconar mais por exemplo “data_entrega”

Só fazer algo parecido.

Dentro do for:

$data = $data_entrega[$i];

E usar $data nas queries.

seria assim ?

<?php

include_once '../cadastro/conexao.php';

$id_metas = filter_input(INPUT_POST, 'id_metas', FILTER_SANITIZE_STRING);
$mvp_entrega = $_POST["mvp_entrega"];
$nome_entrega = $_POST["nome_entrega"];
$data_entrega = $_POST["data_entrega"];

$cont_insert = false;

for ($i = 0; $i < count($mvp_entrega) && $i < count($nome_entrega) && $i < count($data_entrega); $i++) {
   $entrega = $mvp_entrega[$i];
   $nome = $nome_entrega[$i];
   $data = $data_entrega[$i];
   
   $result_aula = "INSERT INTO entregas (id_metas, mvp_entrega, nome_entrega, data_entrega) VALUES (:id_metas, :entrega, :nome :data)";

    $insert_aula = $conn->prepare($result_aula);
    $insert_aula->bindParam(':id_metas', $id_metas);
    $insert_aula->bindParam(':entrega', $entrega);
    $insert_aula->bindParam(':nome', $nome);
    $insert_aula->bindParam(':data', $data);
    if ($insert_aula->execute()) {
        $cont_insert = true;
    } else {
        $cont_insert = false;
    }
}
if ($cont_insert) {
    echo "<p style='color:green;'>Cadastrado com Sucesso</p>";
} else {
    echo "<p style='color:red;'>Erro ao cadastrar</p>";
}

Tá faltando uma vírgula aqui.
De resto parece que tá certo.

Todos os arrays tem o mesmo tamanho?
Se sim, pode reduzir isso para $i < count($mvp_entrega)

oque voce quer dizer com tamanho ?

Digamos que tem o array [“Maçã”, “Banana”, “Melancia”].
A contagem de items/o tamanho é 3.

E você tá trabalhando com arrays aí.

<form class="form" id="add-aula" method="POST">
                <div class="section">
                    <div class="control-group">
                        <div class="input-group">
                            <span style="min-width: 85px; font-weight: bold; border: 1px solid #ccc; border-radius: 4px;" class="input-group-addon">Meta: <?php if(isset($row_msg_cont['nome_meta'])){ echo $row_msg_cont['nome_meta']; } ?></span>
                        </div>
                        <input class="form-control" type="hidden" readonly name="id_metas" value="<?php if(isset($row_msg_cont['id_metas'])){ echo $row_msg_cont['id_metas']; } ?>">
                        <div class="input-group">
                            <span style="min-width: 170px; font-weight: bold;" class="input-group-addon">MVP</span>
                            <span style="min-width: 200px; font-weight: bold;" class="input-group-addon">Entrega</span>
                            <span style="min-width: 160px; font-weight: bold;" class="input-group-addon">Data</span>
                            <span style="min-width: 100px; font-weight: bold;" class="input-group-addon">Status</span>
                            <span style="min-width: 100px; font-weight: bold;" value="aa" class="input-group-addon">Peso (%)</span>
                        </div>
                        <div style="display: block; display: flow-root;" class="input-group" id="formularios">
                            <input style="max-width: 170px; height: 63px; text-align: center;" class="form-control" type="text" name="mvp_entrega[]" placeholder="Produto viável mínimo">
                            <input style="max-width: 200px; height: 63px; text-align: center;" class="form-control" type="text" name="nome_entrega[]" placeholder="Descreva a Entrega">
                            <input style="max-width: 160px; height: 63px; text-align: center;" class="form-control" type="date" name="data_entrega[]" onkeypress="$(this).mask('000')">
                            <select style="max-width: 100px; height: 63px; text-align: center;" class="form-control" name="status_entrega[]">
                                <option value="" selected>--</option>
                                <option value="Entregue">Entregue</option>
                                <option value="A Entregar">A Entregar</option>
                                <option value="Em Atraso">Em Atraso</option>
                            </select>
                            <input style="max-width: 65px; height: 63px; text-align: center;" class="form-control" type="text" name="peso_entrega[]" id="peso_entrega" placeholder="Peso" onkeypress="$(this).mask('000')">
                            <span style=" height: 63px; width: 34px; color: #fff;border-radius: 4px; border-top-left-radius: 0px;border-bottom-left-radius: 0px;" class="input-group-addon btn-success" type="button" id="add-campo">+</span>
                        </div>
                        <span id="msg" name="msg"></span>
                    </div>
                    <div class="control-group">
                        <span class="btn btn-primary btn-block" type="button" name="CadAulas" id="CadAulas" value="Cadastrar">Cadastrar</span>
                    </div>
                </div>
            </form>

olha ai como está meu form, estou adicionando aqui, nao deu problema…

Não tá duplicando?

não

Então respondendo a minha pergunta, os arrays são do mesmo tamanho.
Pode fazer aquela forma reduzida no for se quiser.