Solucionado (ver solução)
Solucionado
(ver solução)
23
respostas

Transferir dados de uma tabela pra outra!

tem como eu criar um botao que tira certa linha de uma tabela do meu bd e passa pra outra tabela ao ser clicado?

gostaria que fosse algo do tipo: eu tenho uma tabela na qual cadastro um objeto, o valor dele a data e uma obs eles vao pra uma tabela, gostaria que na tabela msm que mostro no php tivesse um botao que ao ser clicado esses dados saissem desta tabela e fossem pra outra tabela. algo do tipo "hamburgers pra faezr" e apos ser feito e entregue o cara so clicaria em dar baixa e ele sairia da tabela e iria pra outra pra dps ele poder fechar o caixa!

23 respostas

Augusto, você está fazendo os cursos de php mysql.

Com certeza, assim que tiver terminado, será capaz de fazer algo parecido. Se você postar algum código, alguma lógica eu posso ajudar.

O que não posso é fazer pra ti.

Mas voltando ao teu assunto, o botão não fica na tabela. Você deve fazer uma página de consulta, adicionando o botão na página.

No curso de php é feito algo que pode servir de base: Tem a consulta de produtos. Nesta consulta, aparecem os produtos e ao lado um botão para alterar e outro pra excluir o produto. Te guia por ali.

sim a ideia que tive foi ate por la, mas existe a possibilidade de qnd clicar em tal botao antes de excluir enviar os dados pra outra tabela do bd ?

Existe sim: guarda os dados antes de excluir. Quando o cara clicar no botão, busca o produto pelo id. Guarda todos os dados que precisa em um array, ou em várias variáveis, exclui, e grava a outra tabela com os dados guardados.

(se a outra tabela tiver layout idêntico ao da primeira, pode-se fazer de forma mais simples, mas não é para o momento. Mesmo porque, duas tabelas com o mesmo layout não é muito bem visto no mundo dos dba's puristas, rs.

Outra opção seria tu teres um campo a mais na tabela, chamado de situação. no começo ele teria "0" no valor. Caso clicasse tu farias um update para "1".

Ou seja se é zero ainda é pedido. se é "1" já foi entregue, já é compra.

otima ideia... mas tem como criar um botao que so mecha com ele?

Sim. Da mesma forma que são criados os botões no curso (já mencionados ali em cima)

a sua ideia e muito boa mas queria fazer a minha , pois é minha kkkkkkkkk mas preciso de ajuda o codigo que fiz esta assim.

primeiro o botao na tabela:

<?php include("cabecalho.php")?>
<?php include("conecta.php")?>
<?php

function insereProduto($conexao, $nome, $preco, $data, $obs) {
    $query = "insert into pedido (nome, preco, data, obs) values ('{$nome}', {$preco}, '{$data}', '{$obs}')";
    return mysqli_query($conexao, $query);

}
$nome = $_GET["nome"];
$preco = $_GET["preco"];
$data = $_GET["data"];
$obs = $_GET["obs"];

if(insereProduto($conexao, $nome, $preco, $data, $obs)) { ?>
    <p class="alert-success">você enviou <?=$nome?>,<?=$obs?> !</p>
<?php } else{ ?>
    <p class="alert-danger">você não adicionou,pois faltou algum dado!</p>
<?php
}
?>

<?php include("rodape.php")?>

e assim esta no link remove.php, mas nao estou sabendofazer um comando para primeiro incluir e depois excluir, e nao sei se estou pegando os valores todos.

<?php include("cabecalho1.php")?>
<?php include("conecta.php");?>
<?php

function colocaProduto($conexao, $nome, $preco, $data, $obs) {
    $query = "insert into caixa (nome, preco, data, obs) values ('{$nome}', {$preco}, '{$data}', '{$obs}')";
    return mysqli_query($conexao, $query);

function removeProduto($conexao, $id) {
    $query = "delete from pedido where id = {$id}";
    return mysqli_query($conexao, $query);
}

$id = $_GET['id'];
removeProduto($conexao, $id);

colocaProduto($conexao, $nome, $preco, $data, $obs)
header("Location: tabelapedido.php")
?>

<?php include("rodape.php")?>

Não está claro o que tu queres.

Ora falas em botão. eu não vejo nenhum botão aí...

Faz uma consulta (lista) dos produtos e coloca na consulta o botão.

A ação do botão é que vai fazer a transferência ()deletar de uma tabela e salvar noutra)

Posta os forms também.

Augusto, acho que tu estás no caminho certo, desde que tenhas feito o form correto Faltou fechar uma chave;

<?php include("cabecalho1.php")?>
<?php include("conecta.php");?>
<?php

function colocaProduto($conexao, $nome, $preco, $data, $obs) {
    $query = "insert into caixa (nome, preco, data, obs) values ('{$nome}', {$preco}, '{$data}', '{$obs}')";
    return mysqli_query($conexao, $query);
// Aqui falta fechar a function colocando }
// Aqui falta fechar a function colocando }
// Aqui falta fechar a function colocando }

}   //fechei aqui.

function removeProduto($conexao, $id) {
    $query = "delete from pedido where id = {$id}";
    return mysqli_query($conexao, $query);
}

$id = $_GET['id'];

// aqui tens que salvar os dados.   Mas como salvar se tu não sabes o conteúdo????
// Por isto, antes de deletar, busca o produto na tabela pedido.
// Faz com que a função buscaPedido retorne um array .
//Depois usa este array para salvar na tabela caixa.
$guarda = buscaPedido ($conexao, $id);   // cria esta função . 
removeProduto($conexao, $id);

colocaProduto($conexao, $nome, $preco, $data, $obs)
header("Location: tabelapedido.php")
?>

<?php include("rodape.php")?>

Vou repetir o que falei antes: não é uma boa prática ter duas tabelas com layout idêntico. Se elas têm o layout idêntico, tudo indica que devem ser uma única tabela...

Entendo que tu queiras fazer, pois já tens uma meta aí. Mas na vida real, numa empresa, a gente faz o layout das tabelas e manda para um outro departamento, que seria o DBA.

Já me aconteceu de ser a melhor solução ter 2 tabelas iguais( até pela pressa de desenvolver) e não foi aprovado...

Mas vamos seguir. continuo te ajudando aqui, se previsares, ok?

entao eu nao consegui entender bem oq disse pois acho q vc tb nao entendeu oq eu disse haha vou te passar a situação, e um programa pra uma lanchonete na ql a pessoa da recepção pega o pedido do cliente e envia la pra dentro da cozinha(ou seja , envia pra tabela pedidos) o cara da cozinha tem um monitor que fica com a tabela pedidos aberta , porem preciso q ao fazer o lanche ele possa deletar da tela o pedido pra nao tumultuar a tabela, mas se ele somente deletar, eu nao teria como fechar o caixa dps e assim preciso q antes de deletar ele envie o pedido pra tabela caixa. que ai dps so busco da tabela caixa td q foi vendido na noite pela data!

em relacao ao botao e esse aqui

<?php include("cabecalho.php");?>
<?php include("conecta.php");?>

<?php
function listaProdutos($conexao) {
    $produtos = array();
    $resultado = mysqli_query($conexao, "select*from pedido");

    while($produto = mysqli_fetch_assoc($resultado)) {
        array_push($produtos, $produto);
    }

    return $produtos;

}
?>
<table class="table table-striped table-bordered">

        <th>Pedido:</th>
        <th>Observação:</th>
        <th>Estado:</th>

<?php
 $produtos= listaProdutos($conexao);
 foreach ($produtos as $produto) {
     ?>

     <tr>
         <td><?=$produto['nome'] ?></td>
         <td><?=$produto['obs'] ?></td>
         <td><a href="remove.php?id=<?=$produto['id']?>" class="btn btn-primary">Pedido Pronto</a></td>
     </tr>
     <?php
 }
?>

</table>

<?php include("rodape.php")?>

Eu entendi sim. E o que eu falei antes resolve isto.

ANTES de deletar vai ter uma consulta, após consultar vai guardar os dados.

Deleta na tabela pedidos

Inclui na tabela caixa.

Foi exatamente isto que acrescentei no teu código acima. Acrescentei a buscaProduto (buscaPedido, seja lá o nome que quiseres dar)

Podes fazer assim:

<td><a href="transfere.php?id=<?=$produto['id']?>" class="btn btn-primary">Pedido Pronto</a></td>

já a transfere.php seria aquele código teu, onde eu acrescentei a função buscaPedido()

a transfere redireciona pra pagina da tabela(da cozinha)

aquela que chamas de botão

haha entendi, mas meu problema e colocar na outra tabela, isto nao estou conseguindo... so estou conseguindoremover

e um dos meus problemas tambem, que apesar de enviar pra tabela pedidos data e valor eu so mostro no php o produto e a obs e nao sei se isto interfere na hora de buscar o resto dela, meu p´roblema ta sendo por pra funcionar os dois codigos juntos, o remove e o adiciona

solução!

Augusto, tenta fazer o que te disse. Se fizer, vai estar perto da solução. Ou já vai ser a solução.

A tua função buscaPedido($conexão,$id) vai fazer um select na tabela de pedidos, pelo $id. Aí, vais ter todos os dados necessário para fazer a inclusão na tabela caixa.

Tem muitas formas: mas podes fazer assim:

function buscaPedido($conexao, $id) {


    $query = "select * from pedidos where id =  {$id}"; 
    $resultado = mysqli_query($conexao, $query);
    $pedido = mysqli_fetch_assoc($resultado);
    return($pedido);

}

Aí, logo abaixo de chamar a buscaPedido, chama a colocaProduto. Leva em conta que a buscaPedido devolve um array. Quando chamamos a buscaPedido fizemos

$guarda = buscaPedido ($conexao, $id);

Portanto todos os dados estão dentro de $guarda que também é um array.

Para chamar a colocaProduto

colocaProduto($conexao, $guarda['nome'], $guarda['preco'], $guarda['data'], $guarda['obs']);

Acho que com isto já dá pra entender...

Era esta de buscar que faltava, mas to com um problema agora... o codigo ta pronto porem nao sei pq n esta incluindo os dados na tabela caixa antes de excluir!

<?php include("cabecalho1.php")?>
<?php include("conecta.php");?>
<?php

function buscaPedido($conexao, $id) {
    $query = "select * from pedidos where id =  {$id}"; 
    $resultado = mysqli_query($conexao, $query);
    $pedido = mysqli_fetch_assoc($resultado);
    return($pedido);
}

function colocaProduto($conexao, $nome, $preco, $data, $obs) {
    $query = "insert into caixa (nome, preco, data, obs) values ('{$nome}', {$preco}, '{$data}', '{$obs}')";
    return mysqli_query($conexao, $query);


}

function removeProduto($conexao, $id) {
    $query = "delete from pedido where id = {$id}";
    return mysqli_query($conexao, $query);
}

$id = $_GET['id'];

$guarda = buscaPedido ($conexao, $id);
colocaProduto($conexao, $guarda['nome'], $guarda['preco'], $guarda['data'], $guarda['obs']);

removeProduto($conexao, $id);

header("Location: tabelapedido.php")

?>

<?php include("rodape.php")?>

mudei ali a parte do guarda produto, usei um echo $preco e tal e esta pegando os valroes certos mas ainda nao sei pq nao esta inserindo na tabela caixa

<?php include("cabecalho1.php")?>
<?php include("conecta.php");?>
<?php

function buscaPedido($conexao, $id) {
    $query = "select * from pedido where id =  {$id}"; 
    $resultado = mysqli_query($conexao, $query);
    $pedido = mysqli_fetch_assoc($resultado);
    return($pedido);
}

function colocaProduto($conexao, $nome, $preco, $data, $obs) {
    $query = "insert into caixa (nome, preco, data, obs) values ('{$nome}', {$preco}, '{$data}', '{$obs}')";
    return mysqli_query($conexao, $query);


}

function removeProduto($conexao, $id) {
    $query = "delete from pedido where id = {$id}";
    return mysqli_query($conexao, $query);
}

$id = $_GET['id'];

$guarda = buscaPedido ($conexao, $id);

$nome=$guarda['nome'];
$preco=$guarda['preco'];
$data=$guarda['data'];
$obs=$guarda['obs'];

colocaProduto($conexao, $nome, $preco, $data, $obs);

removeProduto($conexao, $id);

header("Location: tabelapedido.php")

?>

<?php include("rodape.php")?>

agora consegui! muito obrigado pela ajuda! sabe se existe algum codigo que atualize a pagina de tanto em tanto tempo?

Augusto, eu sei que tem. Mas não sei como fazer...

Como já solucionaste este problema, abre outro tópico no fórum, aí a gente começa a pesquisar.

ja consegui tb hahavou abrir outro sobre barulho