1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

como inserir dados em duas tabelas diferentes com php no mysql?

Bom dia, estou tentando fazer inserção em duas tabelas diferentes mais sem resultado satisfatório, sou novo em php, e esse sistema que estou criando é graças a ajuda de varias pessoas, segue minha duvida.

// campos do fomulario de preenchimento
$fdata = [
    'descricao'       => isset($_POST['descricao']) ? $_POST['descricao'] : null,
    'pi'              => isset($_POST['pi']) ? $_POST['pi'] : null,
    'loc_anterior'    => isset($_POST['loc_anterior']) ? $_POST['loc_anterior'] : null,
    'loc_atual'       => isset($_POST['loc_atual']) ? $_POST['loc_atual'] : null,
    'complemento'     => isset($_POST['complemento']) ? $_POST['complemento'] : null,
    'nota_fiscal'     => isset($_POST['nota_fiscal']) ? $_POST['nota_fiscal'] : null,
    'fornecedor'      => isset($_POST['fornecedor']) ? $_POST['fornecedor'] : null,
    'recurso'         => isset($_POST['recurso']) ? $_POST['recurso'] : null,
    'docente'         => isset($_POST['docente']) ? $_POST['docente'] : null,
    'valor_total'     => isset($_POST['valor_total']) ? $_POST['valor_total'] : null,
    'status_anterior' => isset($_POST['status_anterior']) ? $_POST['status_anterior'] : null,
    'status'          => isset($_POST['status']) ? $_POST['status'] : null,
    'up_arq'          => isset($_POST['up_arq']) ? $_POST['up_arq'] : null,

];

// se algo for postado
if (sizeof($_POST)) {
    // trate as variáveis aqui:
    // percorre os dados postados
    foreach ($_POST as $k => $v) {
        // scape special chars
        $v = "'" . $sqli->real_escape_string($v) . "'";
        // monta um array sanitizado para insert/update
        $vars[] = "$k = " . $v;
    }

    // para fazer popular os campos do insert into 
    $pi = ($_POST['pi']);
    $descricao = ($_POST['descricao']);
    $complemento = ($_POST['complemento']);
    $nota_fiscal = ($_POST['nota_fiscal']);
    $fornecedor = ($_POST['fornecedor']);
    $recurso = ($_POST['recurso']);
    $docente = ($_POST['docente']);

    $valor_total = (float)$_POST['valor_total'];
    $valor_total = number_format($valor_total,2,",","." );

    $up_arq = ($_POST['up_arq']);
    $loc_anterior = ($_POST['loc_anterior']);
    $loc_atual = ($_POST['loc_atual']);
    $status_anterior = ($_POST['status_anterior']);
    $status_atual = ($_POST['status_atual']);


    // middle query
    //$middle_query = $table . ' SET ' . implode(', ', $vars);

    // new record case
    //$query = 'INSERT INTO ' . $middle_query;

// inserir dados na primeira tabela


    $query = "INSERT INTO cadastro set   pi = '$pi', descricao = '$descricao', complemento ='$complemento' , nota_fiscal = '$nota_fiscal', fornecedor = '$fornecedor',up_arq ='$up_arq', recurso = '$recurso', docente ='$docente' , valor_total = '$valor_total',  loc_anterior = '$loc_anterior', loc_atual ='$loc_atual' ,status_anterior ='$status_anterior', status_atual = '$status_atual' ";


// inserir dados na segunda tabela


    $query = "INSERT INTO movimentacao set   pi = '$pi', loc_anterior = '$loc_anterior', loc_atual ='$loc_atual', status_anterior ='$status_anterior', status_atual = '$status_atual'  ";

// porém só consigo inserir somente na segunda. não sei usar o TRANSACTION aqui.
    $action = 'Inserção';
    // update case:
    if (isset($PARAMS[0])) {
        $id = intval($PARAMS[0]);
        $query = "UPDATE $middle_query WHERE nota_fiscal={$id}";
        $action = 'Atualização';
    }
    // running query (update or insert)
    $sqli->query($query);
    if ($sqli->error) {
        $msg[] = '<p class="error">Falha durante a ' . $action . '!<br> ' . $sqli->error . '</p>';
    } else {
        $msg[] = '<p class="ok">' . $action . ' realizada com sucesso!</p>';
        header("Location:moderad.php");
    }

}

por isso peço a colaboração de vocês.

  • Cara, nunca mexi com PHP na vida, mas posso te ajudar com a questão de lógica. Repara que você seta uma query na variável $query e logo depois vc sobrescreve o valor da mesma variável, e se entrar nesse IF (if (isset($PARAMS[0]))), Você vai sobrescrever novamente o valor da variável $query. Com isso, na hora que rodar ($sqli->query($query);), ele vai executar somente a última query que estiver na variável.

    fcruz.rj   02 de fev de 2017
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags php mysql ou faça a sua própria pergunta.