Chave primaria antes de salvar um formulario unico

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

2 Curtidas

Muito bem Everton, isto é programar. Ir em busca de soluções !!