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

Como capturar dados do banco no checkbox?


mpaquinho

Pergunta

Gostaria de capturar os dados da tabela produto no input checkbox para posterior altera-las.

Estou Fazendo assim ,


Classe:
venda.php

<?php

include 'conexao.php';

class Venda{
    
    var $id;
    var $cliente_id;
    var $produto_id;
    var $data;
    
    public function Cadastrar($cliente_id,$produto_id,$data){
     
    
        foreach ($produto_id AS $valores ){
    $cliente_id;
    
    $sql = "INSERT INTO venda(cliente_id,produto_id,data) ";
    $sql .= " VALUES('$cliente_id','$valores',now())";
    $query = mysql_query($sql);
    
    
        }
    
    if(mysql_affected_rows() > 1){
    echo "<div class='bloco'>";
    echo "<h5>Dados Cadstrardos com sucesso</h5>";
    echo "</div>";
   
    }
    
}

       
    public function Buscar($busca){
        
    if(empty($busca)){
    echo "<div class='bloco'>";
    echo "<h5>Campo busca vazio!</h5>";
    echo "</div>";
    }

    else{
    
    $sql = " SELECT * FROM venda ";
    $sql.= " INNER JOIN produto ON (venda.produto_id = produto.id) " ;
    $sql.= " INNER JOIN cliente ON (venda.cliente_id = cliente.id) " ;
    $sql.= " WHERE venda.cliente_id = '$busca' ";
    $query = mysql_query($sql);
    $num_linhas = mysql_num_rows($query);
    
    if($num_linhas > 0){
    
     while($linhas = mysql_fetch_array($query)){
     $produto = $linhas; 
     echo "<pre>";
     print_r($produto);
     }
           
        
    }
    else{
    echo "<div class='bloco'>";
    echo "<h5>Cliente nao encontrado</h5>";
    echo "</div>";    
    }
    
    
    
    
    }
        
        
        
        
        
    }




    }

e a tela assim :

<?php

include 'cabecalho.php';
include 'classe/venda.php';
include 'menu.php';

?>
<body>
<form action="" method="post">
    <div class="conteudo">
<?php 
if(isset($_POST['opcao'])){
    $obj = new Venda();
     
    if($_POST['opcao'] == 'Cadastrar'){
    $obj->Cadastrar($_POST['cliente_id'], $_POST['produto_id'], NULL);
    }
    
    elseif($_POST['opcao'] == "buscar"){
    $cliente_id = $_POST['cliente_id'];
    
    if(isset($_POST['produto_id']))
    $produto_id = $_POST['produto_id'];
    
       
    if(empty($_POST['busca'])){
    echo "<div class='bloco'>";
    echo "<h5>Campo busca vazio!</h5>";
    echo "</div>";
    }

    else{
        
    $busca = $_POST['busca'];    
    
    $sql = " SELECT * FROM venda ";
    $sql.= " INNER JOIN produto ON (venda.produto_id = produto.id) " ;
    $sql.= " INNER JOIN cliente ON (venda.cliente_id = cliente.id) " ;
    $sql.= " WHERE venda.cliente_id = '$busca' ";
    $query = mysql_query($sql);
    $num_linhas = mysql_num_rows($query);
    
    if($num_linhas > 0){
    
     while($linhas = mysql_fetch_array($query)){
     
        $cliente_id = $linhas['cliente_id'];
        $produto[]    = $linhas['produto_id'];
     }
        
    }
    else{
    echo "<div class='bloco'>";
    echo "<h5>Cliente nao encontrado</h5>";
    echo "</div>";    
    }
    
    
    
    
    }
    

    
    
    }
    
}


?>            
<p>Busca</p> 
<p> 
    <select name="busca">
        <option value="">Escolha o cliente</option>
<?php 
$consulta       = " select * from cliente";
$query_consulta =  mysql_query($consulta);

while($lin = mysql_fetch_array($query_consulta)):?>

<option value="<?php echo $lin['id']?>"<?php if(isset($_POST['busca']))if($_POST['busca'] == $lin['id'])echo 'selected';?>><?php echo $lin['nome'];?></option>   
<?php 
endwhile;

?>
                  
</select>
    <input type="submit" name="opcao" value="buscar">
</p>


<p>Cliente</p>
<p><select name="cliente_id">
<option value=""></option>
<?php 
$sql   = " select * from cliente";
$query =  mysql_query($sql);

while($linha = mysql_fetch_array($query)):?>

<option value="<?php echo $linha['id']?>"<?php if(isset($cliente_id) && $cliente_id == $linha['id']) echo 'selected'?>><?php echo $linha['nome'];?></option>   
<?php 
endwhile;

?>
</select>
</p>

<p>Produtos</p>    
<p>

<?php 

if(isset($produto)){
    
    $pro   = "SELECT * from produto ";
    $pro_q = mysql_query($pro);
    

      while($lin = mysql_fetch_array($pro_q)){
      
      $produto_id = $lin['id'];    
      
      $valores = $produto;
          
          ?>

<input type="checkbox" name="produto_id[]" value="<?php echo $produto_id;?>" 
    <?php if(isset($valores) && $valores == $produto_id)echo 'checked'; ;?>>
    
<?php echo $lin['produto'];?>

</p>
          <?php    
       }
      }
      else{
          
$pro   = "SELECT * from produto ";
$pro_q = mysql_query($pro);

while($lin = mysql_fetch_array($pro_q)): ?>

<input type="checkbox" name="produto_id[]" value="<?php echo $lin['id'];?>"
    <?php if(isset($_POST['id']) && ($_POST['id'] == $lin['id']))echo 'checked' ;?>>
<?php echo $lin['produto'];?>

</p>
<?php 
endwhile;
}
?>

<p>
<input type="submit" name="opcao" value="Cadastrar">
<input type="submit" name="opcao" value="Alterar">
</p>
</div>
</form>
    
    
    

Por favor, ajuda-me!

Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0

Sandro2011,

Não sei se você testou , mas eu consigo cadastrar os dados do cliente , produtos tudo na tabela venda . Onde eles estão relacionadas ..

Quando eu faço a busca , que está no campo ( <select name="busca">... ) ele me traz o nome correto , mas os produtos ao qual eu cadastrei no banco não.

Não sei como pegar estes dados para ficar selecionado .

Tentei com o Foreach, mas ele repetiu os arquivos selecionados e os não selecionados , quer dizer duplicou-o...

Link para o comentário
Compartilhar em outros sites

  • 0

Bom dia, sinceramente, eu não testei o código. Não tem como fazer isso. O que eu posso fazer é ajudar a encontrar os erros.

Você está me dizendo que o código está retornando códigos duplicados?

-A sua select não está muito abrangente?

Neste trecho:

$pro   = "SELECT * from produto ";
$pro_q = mysql_query($pro);

a sua select pega TODOS os registros que estão na tabela produto. É isso mesmo que você quer?

Link para o comentário
Compartilhar em outros sites

  • 0

Este select esta vindo correto , mas eu estou fazendo uma outra busca acima que tras somente os que estão vinculados...

Exemplo :

Cadastrado na tabela venda..

Marcos escolheu

Mouse

lapis

caneta

gravei estes dados na tabela venda ..

quando faço a busca para ver o que o Marcos tem em seus itens , ele não retorna selecionados (checkbox)...

Link para o comentário
Compartilhar em outros sites

  • 0

Então, a tabela 'cliente' possui TODOS os clientes.

E a tabela 'produto' possui TODOS os produtos cadastrados.

Por favor, mande a estrutura de suas tabelas 'cliente' e 'produto'.

Editando: agora que eu vi a função com consulta na tabela 'venda' logo acima. Venda é que possui os itens dos clientes, acredito eu

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

  • 0

Este trecho do seu código:

<p>Cliente</p>
<p><select name="cliente_id">
<option value=""></option>
<?php 
$sql   = " select * from cliente";
$query =  mysql_query($sql);

while($linha = mysql_fetch_array($query)):?>

<option value="<?php echo $linha['id']?>"<?php if(isset($cliente_id) && $cliente_id == $linha['id']) echo 'selected'?>><?php echo $linha['nome'];?></option>   
<?php 
endwhile;

?>
</select>
</p>

É estranho. Você definiu uma 'busca' de cliente na 1a parte, e você está dizendo que o cliente está sendo encontrado. Acredito então que o seu cliente está sendo mostrado dentro do <select> da 'busca', porque você está fazendo uma comparação do $_POST['busca'] com a tabela de 'cliente'.

Se isso for verdade, então esse código acima é redundante...

Se você estiver querendo mostrar os dados do cliente selecionado, você deveria fazer um select do tipo:

select * from cliente where id=$codigo_do_cliente

onde o $codigo_do_cliente viria através de um $_POST , que no seu caso seria o $_POST['busca']

Bom, não vou me estender muito, preciso de um feedback seu, ficarei no aguardo

Link para o comentário
Compartilhar em outros sites

  • 0

Tudo bem Sandro2011 compreendo!

Referente a este comentario:

Se você estiver querendo mostrar os dados do cliente selecionado, você deveria fazer um select do tipo:
select * from cliente where id=$codigo_do_cliente
onde o $codigo_do_cliente viria através de um $_POST , que no seu caso seria o $_POST['busca']

Mas o que acontece Sandro2011, e quando eu quiser alterar este cliente , pois está tela não é somente para busca , mas também , para cadastrar novos cliente com seus respectivos produtos, e isto já está fazendo .

Caso não percebeu este scripts dentro do option abaixo:

<option value="<?php echo $linha['id']?>"<?php if(isset($cliente_id) && $cliente_id == $linha['id]) echo 'selected'?>><?php echo $linha['nome'];?></optio

A variavel ' $cliente_id ' está recebendo de uma consulta , na qual eu fiz na condicional abaixo :

elseif($_POST['opcao'] == "buscar"){

$cliente_id = $_POST['cliente_id']; // informacao do campo busca

if(isset($_POST['produto_id']))
$produto_id = $_POST['produto_id']; // insformacao do campo produto


if(empty($_POST['busca'])){ // se campo busca for vazio
echo "<div class='bloco'>";
echo "<h5>Campo busca vazio!</h5>";
echo "</div>";
}

// caso contrario

else{

$busca = $_POST['busca'];

// consulta tabela venda
$sql = " SELECT * FROM venda ";
$sql.= " INNER JOIN produto ON (venda.produto_id = produto.id) " ;
$sql.= " INNER JOIN cliente ON (venda.cliente_id = cliente.id) " ;
$sql.= " WHERE venda.cliente_id = '$busca' ";
$query = mysql_query($sql);
$num_linhas = mysql_num_rows($query);

if($num_linhas > 0){ // se o resultado da consulta for maior que 0 , executa

while($linhas = mysql_fetch_array($query)){

$cliente_id = $linhas['cliente_id']; // aqui está a variavel que estou pegando e levando para o campo <select name=cliente><option ...
$produto[] = $linhas['produto_id'];
}

}
else{ // se o resultado da consulta for igual 0 , executa
echo "<div class='bloco'>";
echo "<h5>Cliente não encontrado</h5>";
echo "</div>";
}

Se eu fizer isso aqui

select * from cliente where id=$codigo_do_cliente

Eu sei que não está errado , mas quando eu quiser cadastrar um novo?

Então Sandro , o que eu estou querendo é trabalhar tudo no mesma tela , crud (cadastrar ,consultar e alterar ... )

obrigado por está dando atenção !

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,3k
    • Posts
      652,3k
×
×
  • Criar Novo...