Minha chave primaria só aparece depois de salvar o formulário.
eu gostaria que ao apertar novo registro já mostrasse automaticamente o numero do registro(antes mesmo de salvar o formulário).
alguém pode me ajudar?
Minha chave primaria só aparece depois de salvar o formulário.
eu gostaria que ao apertar novo registro já mostrasse automaticamente o numero do registro(antes mesmo de salvar o formulário).
alguém pode me ajudar?
Essa chave primária é um ID ‘Número Auto Incremento’? se for ele só vai aparecer,
mesmo depois que for SALVO, porque ele ainda não existe na base > tabela, o SGDB
vai verificar e criar o número no momento da inclusão física dos dados, isso evita
automaticamente que outros usuários que estão cadastrando ao mesmo tempo ficarem
com números duplicados e que geraria erro de ‘duplicidade’ na hora de incluir também.
Mas nesse formulário específico eu preciso que ele gere a chave automaticamente antes de salvar.
Tem como fazer isso?
Respondendo sua pergunta ele é sim um ID número e auto incremento
Mas nesse formulário específico eu preciso que ele gere a chave automaticamente antes de salvar.
Tem como fazer isso?
Respondendo sua pergunta ele é sim um ID número e auto incremento
NM
Veja se pode mudar esta tabela então, ela vai ter que criar um outro campo Auto Incremento lá
como principal, LancamentoID INT (11) AutoIncremento, e o o campo que você precisa gerar o
número Separado deixa ele sem ser Chave Principal, só como Indice na sua Tabela normal, e no
SC marque ele como Chave Única.
Ai para poder Gerar um Número e não repetir com outros usuários incluindo ao mesmo tempo.
Faça Isso:
Crie uma outra tabela, ela vai servir para gravar o número correto sem dar conflito.
tabela_vendas_sequencia, use a engine ARIA/MyISAM (MariaDB/MySQL).
SequenciaID - INT (11) AutoIncremento - Chave Primária
Data = DATETIME
Sessao_PHP = CHAR (32) - Indice Key Normal
Na tela que deseja pegar o número NOVO antes de incluir, coloque no OnLoad:
$_Sessao_PHP = session_id();
if (empty({MeuCampoID})) { // Aqui é o nome do campo da sua tabela que vai receber o número.
$sql="
INSERT INTO
tabela_vendas_sequencia
(Data,
Sessao_PHP
)
VALUES
(NOW(),
'$_Sessao_PHP'
)
";
sc_exec_sql($sql);
sc_commit_trans();
sc_lookup(ultimo_id,"SELECT MAX(SequenciaID) FROM tabela_vendas_sequencia WHERE Sessao_PHP='$_Sessao_PHP'");
$_UltimoID={ultimo_id[0][0]};
if (empty($_UltimoID)) {
$_UltimoID=1;
}
{MeuCampoID} = $_UltimoID; // Aqui seu campo da tela que já vai receber o número novo.
}
eu jogo esse no onclick de um ajax
UPDATE produto SET campo_para_aparecer
= seu autoincremento
!
ID = 10 depois do click SEU CAMPO = 10 !
Deu certo sua solução Jailton , mas não ficou como eu gostaria.
obg pela sua preocupação me ajudar
como ficaria na pratica?
“UPDATE produto SET NUM_PEDIDO =”.{NUM_PEDIDO};
Antes de incluir um registro saber qual será seu Id (sendo esse autoincremento).
Primeiro deve-se preocupar com a questão multi usuário. Buscar o último inserido somar mais 1 e apresentar na tela é falso ter a certeza que esse será o id implementado pelo banco, pois se ao mesmo tempo a tela for aberta em outra máquina apresentará ambas o mesmo valor (max(id)+1).
Update, não dá pois o registro ainda não foi inserido.
A meu ver sempre que for novo registro desvia-se para uma blank, faz a inserção manual e com Last_Insert_Id captura-se o ID inserido nessa sessão e redireciona para o formulário em modo de edição passando como parâmetro o último id inserido.
Só uma observação, caso um usuário começar um NOVO cadastro e desistir você,
ficaria com ‘números faltando’ na sequência.
Caso achar interessante preencher esses registros que ficariam sem sequência,
só avisar aqui, que refaço o exemplo usando o “SELECT LAST_INSERT_ID()” e procurando
os registros, em branco ou criando um novo ID caso todos estiverem preenchidos.
obg,juntei a ajuda de cada um e resolvi meu problema
Muito bem Everton, isto é programar. Ir em busca de soluções !!