Jump to content
Fórum Script Brasil
  • 0

Inserir e Atualizar Diferentes Tabelas PHP, Como fazer isso?


voce2011

Question

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 to comment
Share on other sites

24 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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);    
                
                ?>

Edited by MTavares
Link to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...