Insert with two tables

0

Follow my code, the first query with the student table information. Second query with Payments table information.

In my registration, I have student information and payments together. I want to register the two tables at the same time.

<?php

    class Alunos 
    {
     /* 
     * class cadastrar()
     * Realiza o cadastro dos alunos
     */

     public function 
     cadastrar($nome,$rg,$cpf,$nascimento,$sexo,$fone,$email,
     $endereco,$bairro,$cidade,$estado,$cep)
            {

                global $pdo;

                $sql = $pdo->prepare("insert into alunos set nome=:nome, rg=:rg, 
                cpf=:cpf, nascimento=:nascimento, sexo=:sexo,
                fone=:fone, email=:email, endereco=:endereco,
                bairro=:bairro, cidade=:cidade, estado=:estado, cep=:cep");

                $sql->bindValue(":nome", $nome);
                $sql->bindValue(":rg", $rg);
                $sql->bindValue(":cpf", $cpf);
                $sql->bindValue(":nascimento", $nascimento);
                $sql->bindValue(":sexo", $sexo);
                $sql->bindValue(":fone", $fone);
                $sql->bindValue(":email", $email);
                $sql->bindValue(":endereco", $endereco);
                $sql->bindValue(":bairro", $bairro);
                $sql->bindValue(":cidade", $cidade);
                $sql->bindValue(":estado", $estado);
                $sql->bindValue(":cep", $cep);
                $sql->execute();

            }

     /*
     * class pagamentos()
     * Realiza o cadastro dos alunos
     */

       public function pagamentos($situacao_aluno,$vencimento_plano,
       $planos,$vencimento,$cpf_amigo,$forma_pagamento,$data_matricula,
       $numero_documento,$data_documento,$valor)
       {

      global $pdo; 
      $sql = $pdo->prepare("insert into pagamentos set 
      situacao_aluno=:situacao_aluno, vencimento_plano=:vencimento_plano, 
      planos=:planos, vencimento=:vencimento, cpf_amigo=:cpf_amigo, 
      forma_pagamento=:forma_pagamento, data_matricula=:data_matricula, 
      numero_documento=:numero_documento, data_documento=:data_documento, 
      valor=:valor");

        $sql->bindValue(":situacao_aluno", $situacao_aluno);
        $sql->bindValue(":vencimento_plano", $vencimento_plano);
        $sql->bindValue(":planos", $planos);
        $sql->bindValue(":vencimento", $vencimento);
        $sql->bindValue(":cpf_amigo", $cpf_amigo);
        $sql->bindValue(":forma_pagamento", $forma_pagamento);
        $sql->bindValue(":data_matricula", $data_matricula);
        $sql->bindValue(":numero_documento", $numero_documento);
        $sql->bindValue(":data_documento", $data_documento);
        $sql->bindValue(":valor", $valor);
        $sql->execute();

           }

I know that there are functions last_insert_id(); , mysql_insert_id(); and mysqli_insert_id(); but I do not know how to apply it to my code that is oriented to obj.

    
asked by anonymous 03.10.2018 / 18:49

2 answers

1

It was not clear if the payments table has a foreign key for the student, so the insert does not appear to have, but might be child situation

First you change the sign up function to return the id this way using this :

public function cadastrar(/* parâmetros */)
{
    // faz a tua lógica de inserção

    return $pdo->lastInsertId();
}

Second change is in the place where this function is called, you should do something like this:

$aluno = new Aluno();
$idAluno = $aluno->cadastrar(/** parâmetros */);
$aluno->pagamentos($idAluno /** resto dos parâmetros */);

Finally, you must also change the payments to use the student id, which as I said might have a student_id column to link to, or is this such as situation_body .

    
04.10.2018 / 14:44
0

GALERA I HAVE RESOLVED AS FOLLOWS:

 <?php
 class Alunos 
 {
 /* 
 * class cadastrar()
 * Realiza o cadastro dos alunos
 */

public function cadastrar($nome,$rg,$cpf,$nascimento,$sexo,$fone,$email,$endereco,
$bairro,$cidade,$estado,$cep)
{

global $pdo;

$sql = $pdo->prepare("insert into alunos set nome=:nome, rg=:rg, cpf=:cpf, 
nascimento=:nascimento, sexo=:sexo,fone=:fone, email=:email, 
endereco=:endereco,bairro=:bairro, cidade=:cidade, estado=:estado, cep=:cep");

            $sql->bindValue(":nome", $nome);
            $sql->bindValue(":rg", $rg);
            $sql->bindValue(":cpf", $cpf);
            $sql->bindValue(":nascimento", $nascimento);
            $sql->bindValue(":sexo", $sexo);
            $sql->bindValue(":fone", $fone);
            $sql->bindValue(":email", $email);
            $sql->bindValue(":endereco", $endereco);
            $sql->bindValue(":bairro", $bairro);
            $sql->bindValue(":cidade", $cidade);
            $sql->bindValue(":estado", $estado);
            $sql->bindValue(":cep", $cep);
            $sql->execute();

}


/*
* class pagamentos()
* Realiza o cadastro dos alunos
*/

 public function pagamentos($email,$situacao_aluno,$vencimento_plano,
 $planos,$vencimento,$cpf_amigo,$forma_pagamento,$data_matricula,
 $numero_documento,$data_documento,$valor)
 {
  global $pdo; 

  $sql = $pdo->prepare("insert into pagamentos set email_pagamento =:email_pagamento, 
  situacao_aluno=:situacao_aluno, vencimento_plano=:vencimento_plano, planos=:planos, 
  vencimento=:vencimento,cpf_amigo=:cpf_amigo, forma_pagamento=:forma_pagamento, 
  data_matricula=:data_matricula, numero_documento=:numero_documento, 
  data_documento=:data_documento, valor=:valor");

    $sql->bindValue(":email_pagamento", $email);
    $sql->bindValue(":situacao_aluno", $situacao_aluno);
    $sql->bindValue(":vencimento_plano", $vencimento_plano);
    $sql->bindValue(":planos", $planos);
    $sql->bindValue(":vencimento", $vencimento);
    $sql->bindValue(":cpf_amigo", $cpf_amigo);
    $sql->bindValue(":forma_pagamento", $forma_pagamento);
    $sql->bindValue(":data_matricula", $data_matricula);
    $sql->bindValue(":numero_documento", $numero_documento);
    $sql->bindValue(":data_documento", $data_documento);
    $sql->bindValue(":valor", $valor);
    $sql->execute();

    $this->idAluno($email);

 }


  private function idAluno($email) {

    global $pdo;

    $sql = $pdo->prepare("select * from alunos where email = :email");
    $sql->bindValue(':email', $email);
    $sql->execute();

    if($sql->rowCount() > 0) { 
    foreach($sql->fetchAll() as $rowAluno){   


    $sql = $pdo->prepare("update pagamentos set alunos_id = :alunos_id
    where email_pagamento = :email_pagamento");

    $sql->bindValue(':alunos_id', $rowAluno['id_alunos']);
    $sql->bindValue(':email_pagamento', $rowAluno['email']);
    $sql->execute();

        }
      }      
    }
  }
    
05.10.2018 / 18:34