Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde amigos,
Tenho uma página de cadastro que se chama cadcliente.php, após eu cadastrar os dados ele vai para a página listaclientes.php como é indicada abaixo em negrito. No entanto eu queria que após o submit ele retornasse a página de cadastro do cliente que eu cadastrei, e não a listaclientes.php.
Alterei para direcionar para o cadcliente.php, porém ele retorna para tudo zerado como se eu fosse cadastrar um novo, e eu queria que ele retornasse a página com o registro que acabou de ser cadastrado.
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
$insertSQL = sprintf("INSERT INTO clientes (Id, usuario, senha, nivel_acesso, nome, cpf, sexo, data_nascimento, cidade, estado, endereco, complemento, bairro, cep, telefone, celular, email) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
GetSQLValueString($_POST['Id'], "int"),
GetSQLValueString($_POST['usuario'], "text"),
GetSQLValueString($_POST['senha'], "text"),
GetSQLValueString($_POST['nivel_acesso'], "text"),
GetSQLValueString($_POST['nome'], "text"),
GetSQLValueString($_POST['cpf'], "text"),
GetSQLValueString($_POST['sexo'], "text"),
GetSQLValueString($_POST['data_nascimento'], "text"),
GetSQLValueString($_POST['cidade'], "text"),
GetSQLValueString($_POST['estado'], "text"),
GetSQLValueString($_POST['endereco'], "text"),
GetSQLValueString($_POST['complemento'], "text"),
GetSQLValueString($_POST['bairro'], "text"),
GetSQLValueString($_POST['cep'], "text"),
GetSQLValueString($_POST['telefone'], "text"),
GetSQLValueString($_POST['celular'], "text"),
GetSQLValueString($_POST['email'], "text"));
mysql_select_db($database_conexao, $conexao);
$Result1 = mysql_query($insertSQL, $conexao) or die(mysql_error());
$insertGoTo = "**listaclientes.php**";
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $insertGoTo));
}>
Você terá que manter o cachê, basta adicionar:
<?php
header("Cache-Control: store, cache, no-revalidate");
header("Cache-Control: post-check=1, pre-check=1", false);
header("Pragma: cache");
?>
Sem resultado, ele continua a retornar para a página de cadcliente.php com tudo zerado.
Tinha feito uma alteração como teste.
Está assim
$insertGoTo = "**listaclientes.php**";
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $insertGoTo));
}
Alterei para:
$insertGoTo = "**cadcliente.php?id=**";
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "**14**" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $insertGoTo));
}
No caso direcionei para a página de cadastro que é a cadcliente.php, e abaixo alterei para o próximo id. Ao cadastrar ele retornou corretamente. Mas nesse caso eu indiquei o id que seria o do próximo cadastro. Mas como fazer ele retornar automaticamente sem inserir o id, ainda não sei o que modificar.
1 sugestão: em vez de direcionar novamente à mesma pg de cadastro c/ o registro preenchido,
1 outra solução seria direcionar a 1 pg q exibe o ultimo registro cadastrado
(acho q é essa a finalidade principal q vc está querendo).
então vc criaria 1 pg ordenada pelo ultimo id.
exemplo:
select dados from tabela order by id desc limit 1;
ai pode vincular os dados recuperados num form, se é essa a intenção de exibir..
Boa tarde Fernando, na verdade ele teria de voltar a página ou mesmo direcionar direto para a página de edição. Quando eu direciono ele vai mas com os campos vazios.
Quando eu cadastro o cliente, ele pega a ID que é gerada para ele e joga como o login, No caso eu tenho de cadastrar o cliente, e depois ele vai para a listagem. Nesse caso o operador tem que agora ir na edição do cliente para editar. No caso so clicar em alterar, pois na edição o sistema já traz o ID gerado ao cliente cadastrado para o login, bastando assim somente confirmar.
O problema é que como ele redireciona para a listagem, o mesmo é feito em odrdem alfabética, nesse caso o operador ainda tem que localizar o cliente para ir em editar e da o alterar para que o ID seja confirmado como o login.
Esse login tem que ser único, e também não pode ser esquecido. No caso indo para a edição ele nunca vai ser esquecido como também sempre será diferente.
Talvez sua ideia possa servir sim, pois faço outra página de listagem, mas que somente iria mostrar o último ID gerado após o cadastro. Não é o ideal, mas já vai ajudar nesse sentido.
Infelizmente o Mysql é um pouco limitado, pois não permite 2 auto increment na mesma tabela. Outra situação seria se ao gravar o cliente, ele registrasse o ID não só na coluna ID, mas também no login. Mas isso não sei como fazer ao cadastrar. Faço isso no alterar, mas aí já cai no problema citado aqui.
>
1 sugestão: em vez de direcionar novamente à mesma pg de cadastro c/ o registro preenchido,
1 outra solução seria direcionar a 1 pg q exibe o ultimo registro cadastrado
(acho q é essa a finalidade principal q vc está querendo).
então vc criaria 1 pg ordenada pelo ultimo id.
exemplo:
select dados from tabela order by id desc limit 1;
ai pode vincular os dados recuperados num form, se é essa a intenção de exibir..
Valeu Fernando,
A melhor alternativa foi essa. peguei a página para qual ele direcionava, que era a listaclientes.php e fiz alguma mudanças criando uma página confirme.php, e setei para que ao redirecionar ele fosse para o último cadastro feito. Só coloquei ali um prosseguir e confirmar cadastro.
Não se manteve na mesma página como eu queria no começo, mas foi o mais viável, mesmo em 3 etapas ficou bem rápido, pois apenas vai no prosseguir se conferindo os dados e finaliza. Dessa forma eu pego o ID gerado no cadastro e já lanço no outro campo da tabela automaticamente.
Aqui funciona corretamente pelo modo que passei, salvo se você não soube aplicar.
Aqui funciona corretamente pelo modo que passei, salvo se você não soube aplicar.
Depende, verifiquei em outros tópicos que vc passou essa dica e outras pessoas não conseguiram. Creio que para a aplicação sua esteja funcionando, mas não funciona em outras. Nesse caso tende a dar mais trabalho tentar verificcar o erro do que tentar outra solução.
Mas valeu.
Correto, talvez sua necessidade não seja a que eu pensei, porém aqui para o meu caso ela serve
Você terá que manter o cachê, basta adicionar: