Ir para conteúdo
Fórum Script Brasil
  • 0

Inscrições Duplicados


mili

Pergunta

Boa noite galera

Estou com um problema em um sistema que preciso fazer manutenção, onde utilizo PHP e Banco postgre

Como o número de usuários está aumentando consideravelmente, está ocorrendo o seguinte

Se acontecer de duas pessoas fazerem inserções numa determinada tabela ao mesmo tempo, o número de inscrição dessas duas pessoas estão ficando iguais,

se alguém tiver algo que possa me ajudar, ficarei agradecida

Segue a parte do código

if ($_POST['status']==new') {

//novo

pg_query($conn_pg,"begin");

//pega o úlitmo registro no banco de dados

$r_inscricao=pg_query($conn_pg,"select max(inscricao + 1) as ultima_inscricao from candidatos where codigo_curso=".$_SESSION['ise_inscricao_curso]);

$l_inscricao=pg_fetch_array($r_inscricao);

if (!$l_inscricao['ultima_inscricao']){

$l_inscricao['ultima_inscricao'] = 1;

}

pg_query($conn_pg,"insert into candidatos (codigo_modulos, nome, rg, sexo, cpf, estado_civil, nome_mae, nascimento, nacionalidade, endereco, endereco_numero, bairro, cidade, uf, cep, ddd, telefone, deficiencia, situacao, data_cadastro, usuario, senha, inscricao, codigo_curso, e_mail) values (".$_POST['codigo_modulos'].", '".$_POST['nome']."', '".$_POST['rg']."', '".$_POST['sexo']."', '".$_SESSION['ise_inscricao_cpf']."', '".$_POST['estado_civil']."', '".$_POST['nome_mae']."', '".$data_nascimento."', '".$_POST['nacionalidade']."', '".$_POST['endereco']."', '".$_POST['endereco_numero']."', '".$_POST['bairro']."', '".$_POST['cidade']."', '".$_POST['uf']."', '".$_POST['cep']."', ".$_POST['ddd'].", ".$_POST['telefone'].", '".$_POST['deficiencia']."', 'Inscrito', '".date("Y-m-d")."', 99, '".$_POST['senha']."', ".$l_inscricao['ultima_inscricao'].", ".$_SESSION['ise_inscricao_curso'].", '".$_POST['e_mail']."')");

$r=pg_query($conn_pg,"select max(c.codigo) as codigo, co.inscricao_boleto from candidatos c, modulos co where co.codigo=c.codigo_curso and c.cpf=".$_SESSION['ise_inscricao_cpf]."' and c.codigo_curso =".$_SESSION['ise_inscricao_curso']." group by co.inscricao_boleto");

$l=pg_fetch_array($r);

$inscricao=$l_inscricao['ultima_inscricao'];

for ($z=strlen($l_inscricao['ultima_inscricao']); $z<4; $z++) {

$inscricao=0".$inscricao;

}

pg_query($conn_pg,"commit");

$codigo_candidato = $l['codigo];

}

A tabela candidatos tem as informações pessoais, concurso, cargo, e o numero de inscrição que começa em 1 para cada concurso.

Poderia o begin e commit ter alguma interferencia? não entendo muito bem o funcionamento

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Toda vez que alguém for se candidatar ele tem que se escrever correto?

Se sim, não seria mais fácil usar o proprio id como numero de inscrição? Assim ao cadastrar, utilize o pg_insert_id para pegar o ultimo registro e pronto, você já tem o numero de inscrição.

Link para o comentário
Compartilhar em outros sites

  • 0
Toda vez que alguém for se candidatar ele tem que se escrever correto?

Se sim, não seria mais fácil usar o proprio id como numero de inscrição? Assim ao cadastrar, utilize o pg_insert_id para pegar o ultimo registro e pronto, você já tem o numero de inscrição.

Sim, toda vez que for se candidatar tem que se inscrever, mas aí o número de inscrições tem que zerar a cada concurso ela vai se iniciar assim 0001.

Fica mais ou menos assim

Nome             endereço          codigo_concurso      inscricao
José                   Rua 1               50                  1
João                   Rua 9               50                  2
Juliana               Avenida               51                  1
Carlos               ||                   50                  3
Olivia              Travessa               51                  2

Bom é isso, não sei se fui clara, e sei que o sistema não está muito bem estruturado,

mas se tiver alguma solução pra essa forma que ele está :D

Editado por mili
Link para o comentário
Compartilhar em outros sites

  • 0

Bom, sinseramente vai dar bastante confusão devido ao registro de inscrição e o cadastro de usuarios estarem juntos na mesma tabela.

Não sei se agora vale a pena refazer, mas aconselharia deixar isso separado.

Seria a maneira correta ao meu ver também, mas no momento não da pra mudar por completo o sistema, por isso estou tentando 'dar um jeito', pra segurar até que o novo seja finalizado =/

Mas obrigada pela dica!

Mili,

Já experimentou usar transações em suas operações ?

Não entendo muito do assunto de transações, mas não seria a questão de begin, commit e roolback?

Se puder dar uma dica de como ficaria meu código eu agradeço, pois nele já tem um begin e um commit, só não sei se da maneira correta :lol:

Obrigada por enquanto pessoal

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...