0

Retornar consulta após submit

criado por Webster Moitinho em 09/05/2011 3:24pm
Estou criando um formulário responsável pela inserção de registro em duas tabelas diferentes. O action dele é $_SERVER['PHP_SELF'].

Após a inserção nas duas tabelas, eu gostaria que fosse listado o último registro inserido logo abaixo do FORM.

Eu fiz um sript que não funciona, pois exibe o último registro, independente do formulário ter sido postado ou não.

Eu sei que tem uma propriedade if (isset qualquer coisa, mas não sei como usá-la adequadamente. Meu código ficou assim:

<form name="f" id="f" onSubmit="return false" method="post" action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" >
<input name="cep" type="text" id="cep" />
etc etc etc...
</form>

<?php

$cep = $_POST["cep"];
etc etc etc...

$endere = mysql_query("INSERT INTO enderecos (id_enderecos, id_pessoas, id_imoveis, tipo_enderecos, logr, nr, compl, bairro, cidade, uf, cep, usu, registro) VALUES ('','$id_usu','','1','$endere','$nr','$compl','$bairro','$cidade','$uf','$cep','$usu',CURRENT_TIMESTAMP)")or die(mysql_error());

$ult = mysql_insert_id();

$imoveis = mysql_query("INSERT INTO imoveis (id_imoveis, tipo_imoveis, endereco, proprietario, area, img, valor, destaque, vendido, usu, registro) VALUES ('','$tipo','$ult','$id_usu','$area','','','N','N','$usu',CURRENT_TIMESTAMP)")or die(mysql_error());


$sql = mysql_query("SELECT enderecos.id_enderecos, pessoas.nome_pessoas, enderecos.logr, enderecos.nr, enderecos.compl, enderecos.bairro, enderecos.cidade
FROM pessoas
INNER JOIN enderecos ON pessoas.id_pessoas = enderecos.id_pessoas
ORDER BY id_enderecos DESC
LIMIT 0,1")or die(mysql_error());

if (empty($sql)) { //Se nao achar nada, lana essa mensagem

echo "Nenhum registro encontrado.";

}

// quando existir algo em '$busca_query' ele realizar o script abaixo.

while ($res = mysql_fetch_array($sql)) {

echo "etc etc etc
<td>" . $res['logr'] . "</td>"

Lista de Respostas:

+1
Resposta Final (Undo)
09/05/2011 5:41pm
(~7 anos atrás)
Jayme A. C. Gimenez respondeu:
Ah, vc diz: quando o usuário abre o formulário pela primeira vez (ainda não inseriu nenhum registro), ele não veja nada abaixo do form, seria isso?

Por outro lado, quando ele clica no submit, para inserir dados no bd, o form volta vazio, mas apresentando os dados recém-inseridos. Isso?

Isso é feito normalmente, enviando uma instrução diferente quando o usuário acessa o formulário pela primeira vez (através de um link, por exemplo) e quando ele clica no submit.

Então, o script que apresenta o formulário saberá se o usuário acabou de inserir um registro ou se ele está abrindo o form só agora. Exemplo: no link que abre o form, vc coloca ?fazendo=abri_agora; já quando o form é reaberto a partir do script que inseriu os dados no banco, vc coloca ?fazendo=inseriu.

No script do form vc vai pegar essa informação com o $_GET e fazer um if para saber se vai ou não exibir os dados do último registro.

Seria isso? Deu para entender a ideia?

0
09/05/2011 4:07pm
(~7 anos atrás)
Jayme A. C. Gimenez respondeu:
Entendi que o que vc está querendo é saber se a query retornou algum resultado, é isso?
Se for isso, use o comando abaixo:

$row = mysql_num_rows($sql);

Ele vai retornar o número de linhas encontradas pela query. Com isso, vc usa um if simples: se $row == 0 , isso; else, aquilo.

Entendeu?

Uma outra dica, sobre o phpbrasil, é que, para esse tipo de dúvida pontual, é melhor vc postar no phorum de iniciantes. É a área mais frequentada do site. E, assim, a área de FAQ fica para perguntas mais gerais.

0
09/05/2011 5:20pm
(~7 anos atrás)
Webster Moitinho respondeu:
Jayme, obrigado pela resposta, mas não é exatamente isso o que eu procuro.

Eu preciso que a consulta retorne o último registro inserido somente após a submissão do formulário.

Como a consulta é muito complexa, pois insere o registro na tabela "enderecos", pega o ID do endereço e insere na tabela "imoveis" para só então, depois de inseridos os registros, exibe o resultado da consulta combinando os registros da duas tabelas.

Tipo assim: Depois de postar o formulário, exibe o registro inserido

Nova Resposta:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)