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

Inserir e Atualizar Diferentes Tabelas PHP, Como fazer isso?


voce2011

Pergunta

Boa tarde.

Estou com um pequeno problema, tenho duas tabelas dentro de 1 banco de dados PHP:

USUARIO E PROCESSO

A parte de incluir um novo registro está ok, porém, preciso dar um SET na tabela PROCESSOSELETIVO no campo chamado STATUS, porém não estou conseguindo,segue abaixo:

<?php

                include "config.php";
                
                $id = $_POST['id'];                
                $situacao = $_POST['situacao'];    
                $nome = strtoupper($_POST['nome']);
                $cpf = $_POST['cpf'];                
                $aprovado = $_POST['aprovado'];
                
                $id = mysql_escape_string($id);    
                $situacao = mysql_escape_string($situacao);
                $nome = mysql_escape_string($nome);
                $cpf  = mysql_escape_string($cpf);            
                $aprovado = mysql_escape_string($aprovado);

                            $situacao = $_POST['situacao'];
                
                $cadastra = mysql_query("INSERT INTO usuario (nome, cpf, aprovado) values ('$nome', '$cpf', '$aprovado')");
                $grava = mysql_query($cadastra);

                echo "&lt;script LANGUAGE='JavaScript' TYPE='text/javascript'>
                alert ('Ok!')
                </SCRIPT>
                &lt;script language='javascript'>
                setTimeout( 'fechar(); ',0000);
                function fechar(){
                if(document.all){
                window.opener = window
                window.close('#')
                }else{
                self.close();
                }
                }
                </script> ";


                $sql= mysql_query("UPDATE processo SET situacao= '$situacao' WHERE id= '$id'") or die(mysql_error());
                $gravar = mysql_query($sql);    
                
                ?>

Podem me ajudar? Ao mesmo tempo que registra o usuário em outra tabela, ela da um ATUALIZADA no campo STATUS com o resultado.

Link para o comentário
Compartilhar em outros sites

24 respostass a esta questão

Posts Recomendados

  • 0

qual a utilidade executar duas vezes a mesma query? esta cadastrando dois usuarios com os mesmo dados? se tiver o campo cpf não é unique?

$cadastra = mysql_query("INSERT INTO usuario (nome, cpf, aprovado) values ('$nome', '$cpf', '$aprovado')");
          $grava = mysql_query($cadastra);// irá cadastrar novamente o mesmo usuario, não acha?
se a 'id' é um inteiro então ela não necessitará de estar entre apostrofe
mysql_query("UPDATE processo SET situacao = '$situacao' WHERE id= $id ") or die(mysql_error());

Link para o comentário
Compartilhar em outros sites

  • 0

deve ser porque você está fechando a pagina antes de salvar de fazer o update no banco.

echo "&lt;script LANGUAGE='JavaScript' TYPE='text/javascript'>

alert ('Ok!')

</SCRIPT>

&lt;script language='javascript'>

setTimeout( 'fechar(); ',0000);

function fechar(){

if(document.all){

window.opener = window

window.close('#')

}else{

self.close();

}

}

</script> ";

$sql= mysql_query("UPDATE processo SET situacao= '$situacao' WHERE id= '$id'") or die(mysql_error());

$gravar = mysql_query($sql);

?>

entendeu

Link para o comentário
Compartilhar em outros sites

  • 0
qual a utilidade executar duas vezes a mesma query? esta cadastrando dois usuarios com os mesmo dados? se tiver o campo cpf não é unique?

$cadastra = mysql_query("INSERT INTO usuario (nome, cpf, aprovado) values ('$nome', '$cpf', '$aprovado')");
          $grava = mysql_query($cadastra);// irá cadastrar novamente o mesmo usuario, não acha?
se a 'id' é um inteiro então ela não necessitará de estar entre apostrofe
mysql_query("UPDATE processo SET situacao = '$situacao' WHERE id= $id ") or die(mysql_error());

Então amigo! São tabelas diferentes! Uma busca os dados para inserir na outra, quero que ao mesmo tempo ela inseira em uma tabela, e depois atualize a tabela de origem, marcando o campo STATUS dele como Ok!

Entendeu?

deve ser porque você está fechando a pagina antes de salvar de fazer o update no banco.
echo "&lt;script LANGUAGE='JavaScript' TYPE='text/javascript'>

alert ('Ok!')

</SCRIPT>

&lt;script language='javascript'>

setTimeout( 'fechar(); ',0000);

function fechar(){

if(document.all){

window.opener = window

window.close('#')

}else{

self.close();

}

}

</script> ";

$sql= mysql_query("UPDATE processo SET situacao= '$situacao' WHERE id= '$id'") or die(mysql_error());

$gravar = mysql_query($sql);

?>

entendeu

Fiz a devida alteração, porém continua a não atualizar!

Link para o comentário
Compartilhar em outros sites

  • 0

Cara, acho que você tá viajando ai na lógica, como você vai inserir uma ID para atualizar, sendo que ela não existe ainda?

seria 2 tabelas certo? USUARIOS e PROCESSO, partindo do principio PROCESSO é uma Detail de USUARIO, então faz tem que fazer o seguinte.

1 - Cadastro na tabela usuário os valores;

2 - Recupera a ID gravada

3 - Faz um INSERT na tabela PROCESSO // e não update, afinal você não tem nada nela ainda, como fazer update de algo q não existe ainda?

Tenta ai

Abs.

Link para o comentário
Compartilhar em outros sites

  • 0
Cara, acho que você tá viajando ai na lógica, como você vai inserir uma ID para atualizar, sendo que ela não existe ainda?

seria 2 tabelas certo? USUARIOS e PROCESSO, partindo do principio PROCESSO é uma Detail de USUARIO, então faz tem que fazer o seguinte.

1 - Cadastro na tabela usuário os valores;

2 - Recupera a ID gravada

3 - Faz um INSERT na tabela PROCESSO // e não update, afinal você não tem nada nela ainda, como fazer update de algo q não existe ainda?

Tenta ai

Abs.

Então, a minha lógica esta certo! pois os dados que estou puxando, se você notar no POST_['id'], ele vem de outro formulário que mostra os dados, simplesmente estou puxando de uma tabela para outra, e da sua tabela de origem atualizar seu status.

Link para o comentário
Compartilhar em outros sites

  • 0

olá voce2011,

No Insert faça assim:

$cadastra = mysql_query("INSERT INTO usuario (nome, cpf, aprovado) values ('$nome', '$cpf', '$aprovado')");

$grava = mysql_query($cadastra);

$idAltera = mysql_insert_id();

e no update:

$sql= mysql_query("UPDATE processo SET situacao= '$situacao' WHERE id= '$idAltera'") or die(mysql_error());

$gravar = mysql_query($sql);

abs

Link para o comentário
Compartilhar em outros sites

  • 0
olá voce2011,

No Insert faça assim:

$cadastra = mysql_query("INSERT INTO usuario (nome, cpf, aprovado) values ('$nome', '$cpf', '$aprovado')");

$grava = mysql_query($cadastra);

$idAltera = mysql_insert_id();

e no update:

$sql= mysql_query("UPDATE processo SET situacao= '$situacao' WHERE id= '$idAltera'") or die(mysql_error());

$gravar = mysql_query($sql);

abs

infelizmente não deu certo!

Deixa eu explicar:

Tenho uma tabela no BD chamado PROCESSO na qual já tenho os registros lá com nome, status e etc., fiz um modo em que eu puxo os dados desse BD para um formulário para que seja submetido os dados para outro BD chamado USUÁRIO, quando submete issso a outro BD, automaticamente gostaria que fosse enviado ao BD PROCESSO no campo chamado SITUAÇÃO "aprovado ou reprovado". Ou seja, o php iria fazer duas funções, ao mesmo tempo irá registrar em um BD e irá atualizar um campo dentro de outro BD.

No aguardo!

Link para o comentário
Compartilhar em outros sites

  • 0

Para que aconteça o que você quer, na tabela processo tem que conter o id do usuário, daí partimos para aquele raciocínio, veja abaixo:

$sql= mysql_query("UPDATE processo SET situacao= '$situacao' WHERE idUsuario= '$idAltera'") or die(mysql_error());

Depois para trazer todos os resultados, basta fazer uma query usando o Inner Join, colocando no ON o idUsuario da tabela processo e o id da tabela usuarios.

abs

Link para o comentário
Compartilhar em outros sites

  • 0
Para que aconteça o que você quer, na tabela processo tem que conter o id do usuário, daí partimos para aquele raciocínio, veja abaixo:

$sql= mysql_query("UPDATE processo SET situacao= '$situacao' WHERE idUsuario= '$idAltera'") or die(mysql_error());

Depois para trazer todos os resultados, basta fazer uma query usando o Inner Join, colocando no ON o idUsuario da tabela processo e o id da tabela usuarios.

abs

Desculpe não entendi! O ID do BD PROCESSO é diferente do USUÁRIO, pois coloquei nas ambas que fosse automatizado a geração desse ID pelo próprio BD AUTO INCREMENT, pode me ajudar, passo a passo nisso, por favor?

Link para o comentário
Compartilhar em outros sites

  • 0

Não tem o que desculpar, isso acontece. Vamos lá, vamos imaginar que a sua tabela processo esteja dessa forma:

idProcesso, processoa, processob, status

Para criar a chave estrangeira, basta fazer dessa forma:

idProcesso, idUsuario, processoa, processob, status

Observe que foi incluído mais um campo chamado IdUsuario. Lembra no exemplo que te passei? então, será exatamente nesse campo que irá ser incluido o idUsuario do mysql_insert_id().

Para trazer os resultados, bastaria fazer uma query com inner join, ex:

SELECT * FROM usuarios usu INNER JOIN processo pro ON usu.idUsuario = pro.IdUsuario

abs

Link para o comentário
Compartilhar em outros sites

  • 0
Não tem o que desculpar, isso acontece. Vamos lá, vamos imaginar que a sua tabela processo esteja dessa forma:

idProcesso, processoa, processob, status

Para criar a chave estrangeira, basta fazer dessa forma:

idProcesso, idUsuario, processoa, processob, status

Observe que foi incluído mais um campo chamado IdUsuario. Lembra no exemplo que te passei? então, será exatamente nesse campo que irá ser incluido o idUsuario do mysql_insert_id().

Para trazer os resultados, bastaria fazer uma query com inner join, ex:

SELECT * FROM usuarios usu INNER JOIN processo pro ON usu.idUsuario = pro.IdUsuario

abs

Mais nesse caso ele usuario o UPDATE? Porque depois ele precisará atualizar o campo, capitxe?

Link para o comentário
Compartilhar em outros sites

  • 0
Rapaz, você tá perdidinho no seu problema, dificil até de entender. Vamos ao principio, como falei antes,

"poste a estrutura das suas tabelas"

Quais os campos das tabelas USUÁRIO e PROCESSO?

Segue a estrutura:

PROCESSO

ID

NOME

CPF

POSICAO

USUÁRIO

ID

NOME

CPF

ENDEREÇO

TELEFONECELULAR

TELEFONERESIDENCIAL

Essa é a estrutura do BD! no aguardo!!

Link para o comentário
Compartilhar em outros sites

  • 0

Então, caso você esteja pegando os dados do usuário e alterando na tabela Processo, você deveria fazer dessa forma:

PROCESSO

ID

IDUSUARIO

POSICAO

Porque eu coloquei o IDUSUARIO e retirei os dados NOME e CPF? Simples, porque quando você depois da inserção, pegar o último ID através do mysql_insert_id() e jogar na tabela PROCESSO, para pegar as informações, bastaria usar um SELECT com INNER JOIN, colocando no ON os ID's. Por ex:

SELECT * FROM PROCESSO pro INNER JOIN USUARIO usu ON pro.IDUSUARIO = usu.ID;

abs

Link para o comentário
Compartilhar em outros sites

  • 0

Depois que você fizer isso, tente dessa forma:

<?php

                include "config.php";
                
                $id = $_POST['id'];                
                $situacao = $_POST['situacao'];    
                $nome = strtoupper($_POST['nome']);
                $cpf = $_POST['cpf'];                
                $aprovado = $_POST['aprovado'];
                
                $id = mysql_escape_string($id);    
                $situacao = mysql_escape_string($situacao);
                $nome = mysql_escape_string($nome);
                $cpf  = mysql_escape_string($cpf);            
                $aprovado = mysql_escape_string($aprovado);

                            $situacao = $_POST['situacao'];
                
                $cadastra = mysql_query("INSERT INTO usuario (nome, cpf, aprovado) values ('$nome', '$cpf', '$aprovado')");
                $grava = mysql_query($cadastra);
                $idUsuario = mysql_insert_id();

                echo "&lt;script LANGUAGE='JavaScript' TYPE='text/javascript'>
                alert ('Ok!')
                </SCRIPT>
                &lt;script language='javascript'>
                setTimeout( 'fechar(); ',0000);
                function fechar(){
                if(document.all){
                window.opener = window
                window.close('#')
                }else{
                self.close();
                }
                }
                </script> ";


                $sql= mysql_query("UPDATE processo SET situacao= '$situacao' WHERE idUsuario = '$idUsuario'") or die(mysql_error());
                $gravar = mysql_query($sql);    
                
                ?>

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

  • 0

Troque de lugar a query do Update, assim:

<?php

                include "config.php";
                
                $id = $_POST['id'];                
                $situacao = $_POST['situacao'];    
                $nome = strtoupper($_POST['nome']);
                $cpf = $_POST['cpf'];                
                $aprovado = $_POST['aprovado'];
                
                $id = mysql_escape_string($id);    
                $situacao = mysql_escape_string($situacao);
                $nome = mysql_escape_string($nome);
                $cpf  = mysql_escape_string($cpf);            
                $aprovado = mysql_escape_string($aprovado);

                            $situacao = $_POST['situacao'];
                
                $cadastra = mysql_query("INSERT INTO usuario (nome, cpf, aprovado) values ('$nome', '$cpf', '$aprovado')");
                $grava = mysql_query($cadastra);
                $idUsuario = mysql_insert_id();


                $sql= mysql_query("UPDATE processo SET situacao= '$situacao' WHERE idUsuario = '$idUsuario'") or die(mysql_error());
                $gravar = mysql_query($sql);    

                echo "&lt;script LANGUAGE='JavaScript' TYPE='text/javascript'>
                alert ('Ok!')
                </SCRIPT>
                &lt;script language='javascript'>
                setTimeout( 'fechar(); ',0000);
                function fechar(){
                if(document.all){
                window.opener = window
                window.close('#')
                }else{
                self.close();
                }
                }
                </script> ";

                
                ?>

Agora acredito que funcione, pois você estava fechando a página antes da alteração...

abs

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...