Insert mais de uma vez

2 respostas Resolvido
php7mysql
Sapinn

Salve galera blz? Estou com uma dúvida “simples” para inserir mais de um cadastro no banco. Construí um site para professores enviarem atividades para alunos e antes de enviar a atividade o professor deve escolher as turmas que vão receber essas atividades primeiro. Eu pensei em criar uma tabela com check box que mostra todas as turmas e o professor escolhe quais devem receber aquela atividade. Criei uma tabela no banco onde é cadastrado a atividade e a turma que irá recebe-la. Agora, como eu faria para enviar todas as turmas que irão receber a atividade?

Por exemplo: Digamos que na tabela o professor tenha as seguintes turmas:
1° A - Tarde
1° B - Tarde
1° C - Tarde
1° D - Tarde

As turmas que ele escolhe receber as atividade são:
1° C - Tarde
1° D - Tarde

Como eu faria para cadastrar apenas essas duas turmas?

2 Respostas

I

Você pode passar uma lista (List) com as turmas por parâmetro para o método destinado à inserção e executar a inserção em lote (batch). Mas nesse caso, é aconselhável tu usar transação para garantir o ACID. Só salva se todas a transação (todas as turmas enviadas) forem salvar. Eu nunca fiz isso em PHP, mas como é comum telas mestras-detalhe em aplicações web, creio que dê para fazer tranquilamente.

Sapinn
Solucao aceita

Obrigado pela resposta, não foi exatamente o que eu usei mas foi graças a ela que eu pude criar uma solução para o problema. Eu criei um protótipo como exemplo que eu vou postar aqui caso alguém tenha essa mesma dúvida
Segue o código:

index.html:

<!DOCTYPE html>

<html>

<head>

    <meta charset='utf-8'>

    <meta http-equiv='X-UA-Compatible' content='IE=edge'>

    <title>Formulario de cadastro</title>

    <meta name='viewport' content='width=device-width, initial-scale=1'>

</head>

<body>

    <fieldset>

    <form  action="enviar.php" method="POST">

        <label>Nome: </label><input type="text" name="nome"><br>

        <label>Sobrenome: </label><input type="sobrenome" name="sobrenome"><br>

        <label>Email: </label><input type="email" name="email"><br>

        <label>Senha: </label><input type="password" name="senha"><br>

        <label>Refrigerante: </label><input type="checkbox" name="escolha[]" value="Refrigerante"><br>

        <label>Coxinha: </label><input type="checkbox" name="escolha[]" value="Coxinha"><br>

        <label>Água: </label><input type="checkbox" name="escolha[]" value="Água"><br>
        <label>Bolo: </label><input type="checkbox" name="escolha[]" value="Bolo"><br>
        <input type="submit" value="Enviar Pedido">
    </form>
    </fieldset>
</body>
</html>

conexao.php:
<?php

$servername = "localhost"; 

    $username = "root"; 

    $password = ""; 

    $dbname = "restaurante"; 

    $conn = new mysqli($servername, $username, $password, $dbname);

    if ($conn->connect_error) {

        die("Connection failed: " . $conn->connect_error);

    } 

?>

enviar.php:
<?php

include 'conexao.php';

$nome = $_POST['nome'];

$sobrenome = $_POST['sobrenome'];

$email = $_POST['email'];

$senha = $_POST['senha'];

$escolha = $_POST['escolha'];

foreach ($escolha as $pedidos) {

    $sql = mysqli_query($conn,"insert into pedidos (nome,sobrenome,email,senha,escolha)values('".$nome."','".$sobrenome."','".$email."','".$senha."','".$pedidos."')") or die(mysqli_error($conn));

}

header("location:sucesso.html");

sucesso.html:

<html>

<head>

    <meta charset='utf-8'>

    <meta http-equiv='X-UA-Compatible' content='IE=edge'>

    <title>Sucesso!</title>

    <meta name='viewport' content='width=device-width, initial-scale=1'>

</head>

<body>

    <center><h1>Os dados forma enviados com sucesso!!</h1></center>

    <a href="index.html"><-Voltar</a>

</body>

</html>

Mais uma vez muito obrigado!!!

Criado 25 de maio de 2020
Ultima resposta 25 de mai. de 2020
Respostas 2
Participantes 2