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

quantidade x produto


Carlos Rocha

Pergunta

Salve pessoal do forum.

Preciso de uma orientação de voces.

Fui montando um codigo aqui até que cheguei numa situação que não estou sabendo sair dela.

Tenho o seguinte form:

<form name="verpreco" method="post" action="?acao=verpreco">
<table width="500" border="1" align="center">
  <tr>
    <td colspan="10" align="center" valign="middle">Pesquisa de pre&ccedil;os de fornecedores:</td>
  </tr>
  <tr><td colspan="10">Produto:</td></tr>
          <td width="48" valign="top">
        <input type="checkbox" name="produtoid[]" value="1" onclick="mostra('valor1')"/>doce<br>
        <div id="valor1" name="valor1" style="display:none">Valor1: <input type="text" size="10" onkeypress="BloqueiaLetras();" name="valor1"></div>
      </td>

      <td width="48" valign="top">
        <input type="checkbox" name="produtoid[]" value="2" onclick="mostra('valor2')"/>bala<br>
        <div id="valor2" name="valor2" style="display:none">Valor2: <input type="text" size="10" onkeypress="BloqueiaLetras();" name="valor2"></div>
      </td>

      <td width="48" valign="top">
        <input type="checkbox" name="produtoid[]" value="3" onclick="mostra('valor3')"/>pirulito<br>
        <div id="valor3" name="valor3" style="display:none">Valor3: <input type="text" size="10" onkeypress="BloqueiaLetras();" name="valor3"></div>
      </td>

      <td width="48" valign="top">
        <input type="checkbox" name="produtoid[]" value="4" onclick="mostra('valor4')"/>chiclete<br>
        <div id="valor4" name="valor4" style="display:none">Valor4: <input type="text" size="10" onkeypress="BloqueiaLetras();" name="valor4"></div>
      </td>

      <td width="48" valign="top">
        <input type="checkbox" name="produtoid[]" value="5" onclick="mostra('valor5')"/>goma<br>
        <div id="valor5" name="valor5" style="display:none">Valor5: <input type="text" size="10" onkeypress="BloqueiaLetras();" name="valor5"></div>
      </td>

    
    
  <tr>
    <td colspan="10" align="center" valign="middle"><input type="button" value="Pesquizar" onclick="verifica_quantidade_produto('valor1;valor2;valor3;valor4;valor5')" /></td>
  </tr>
</table>
</form>
Esse form é, nesse momento, o resultado do seguinte script php
<form name="verpreco" method="post" action="?acao=verpreco">
<table width="500" border="1" align="center">
  <tr>
    <td colspan="10" align="center" valign="middle">Pesquisa de pre&ccedil;os de fornecedores:</td>
  </tr>
  <tr><td colspan="10">Produto:</td></tr>
    <?
    $i=1;
    while (list($id, $nome) = mysql_fetch_row($produtos))
    {
?>
      <td width="48" valign="top">
        <input type="checkbox" name="produtoid[]" value="<?=$id;?>" onclick="mostra('valor<?=$id;?>')"/><?=$nome;?><br>
        <div id="valor<?=$id;?>" name="valor<?=$id;?>" style="display:none">Valor<?=$id;?>: <input type="text" size="10" onkeypress="BloqueiaLetras();" name="valor<?=$id;?>"></div>
      </td>

<?   
            $produtos_checkbox[]="valor".$id;

            if( $i%10==0 ) {echo '</tr><tr>';}
    
            $i++;
    }
$produtos_checkbox2=implode(";",$produtos_checkbox);
    ?>    
    
  <tr>
    <td colspan="10" align="center" valign="middle"><input type="button" value="Pesquizar" onclick="verifica_quantidade_produto('<?=$produtos_checkbox2;?>')" /></td>
  </tr>
</table>
</form>
Bom, o que esta acontecendo é o seguinte. O cliente escolhe o produto na checkbox, é aberta uma type text pra ele entrar com a quantidade e depois submete esses campos para a seguinte query:
<?
if($acao=="verpreco") {
    print "-------------------------------------------------";
    //aqui, verifico de já foi clikado na paginaçao e se a variavel iproduto(do link da paginação) veio. Se sim, decodifica, se não, prossegue o código.
    if     ($idproduto)
    {
        $produtoid=urldecode($idproduto);
        
    }
    else
    {
        foreach($_POST['produtoid'] AS $key => $value)
        { 
          $var[]="pp.idProduto=".$value." or";
        }
        $produtoid=implode(' ',$var); 
        $produtoid= substr($produtoid,0, -3);
    }
    //aqui,faço uma pesquisa pelos nomes dos produitos para exibir no cabeçalho da tabela
    $pesquisaprodutos=mysql_query("
                                   select 
                                     distinct(nome )
                                   from 
                                     produtos p 
                                   inner join 
                                      produtopreco pp on pp.idProduto=p.id
                                   where 
                                     $produtoid
                               ");
    while(list($nomesdeprodutos) = mysql_fetch_row($pesquisaprodutos))
    {
              $varnome[]=$nomesdeprodutos." e ";
    }
    $nomes=implode(' ',$varnome); 
    $produtonome= substr($nomes,0, -2);
    
    //aqui, começo a tabela
print "<table align='center' width=400 bgcolor='#0080C0'>";    
print "<tr                  ><td align=center colspan=3>Preços dos fornecedores para os produtos $produtonome</td></tr>";
//aqui começo a paginação.
$sql = mysql_query("
                    select 
                       distinct(pp.idFornecedor), 
                       f.nome,
                       sum(pp.preço) 
                    from produtopreco pp
                      inner join fornecedores f on f.id=pp.idFornecedor
                    where 
                      $produtoid
                    group by 
                       pp.idFornecedor
                    order by 
                       sum(pp.preço) 
                  ");
                   
$total = mysql_num_rows($sql); // Esta função irá retornar o total de linhas na tabela
$lpp = 10; // Especifique quantos resultados você quer por página
$paginas = ceil($total / $lpp); // Retorna o total de páginas
if(!isset($pagina)) { $pagina = 0; } // Especifica uma valor para variavel pagina caso a mesma não esteja setada
$inicio = $pagina * $lpp; // Retorna qual será a primeira linha a ser mostrada no MySQL
$sql = mysql_query("
                    select 
                       distinct(pp.idFornecedor), 
                       f.nome,
                       sum(pp.preço) 
                    from produtopreco pp
                      inner join fornecedores f on f.id=pp.idFornecedor
                    where 
                      $produtoid
                    group by 
                       pp.idFornecedor
                    order by 
                       sum(pp.preço) 
                    LIMIT $inicio, $lpp
                  ");
    if ($total == "0") {?><tr><td colspan=8 align="center" valign="middle" bgcolor="#FFFFFF"><center><font color=red>=>N&atilde;o foi encontrado nenhum registro para a sua pesquisa</font></center></td></tr><?php }
    else {
print "<tr BGCOLOR='#CCCCCC'>";    
print "    <td align=center>Produto</td>          ";    
print "    <td align=center>Preço Total</td>          ";    
print "    <td align=center>Fornecedor</td>           ";
print "</tr>";        
while(list($idFornecedor, $nomefornecedor, $precototal)=mysql_fetch_row($sql)){
    $sql2=mysql_query("
                 select
                  p.nome,  pp.preço, $valor1 * pp.preço
                 from
                  produtopreco pp
                 inner join produtos p on p.id=pp.idProduto
                 inner join fornecedores f on f.id=pp.idFornecedor
                 where pp.idFornecedor = $idFornecedor    and ($produtoid)               
                   ");

  print "<tr BGCOLOR='#FFFFFF'>";
  print "    <td align=center>";
  while (list($nomeproduto,$preço,$precototal2)=mysql_fetch_row($sql2))
  {
   print  $nomeproduto." - Preço unitário= R$ ".formata_moeda($preço)."- Preço Total= R$ ".formata_moeda($precototal2)."<br>";    
  }
  print "</td>";
  print "    <td align=center>R$ ".formata_moeda($precototal)." </td>        ";      
  print "    <td align=center>$nomefornecedor      </td>        ";
  print "</tr>";               
                                                                                }    
       }   
if($pagina > 0) {
   $menos = $pagina - 1;
   $url = "$PHP_SELF?acao=verpreco&pagina=$menos&idproduto=".urlencode($produtoid);
   echo "<a href=".$url.">Anterior</a>"; // Vai para a página anterior
}
for($i=0;$i<$paginas;$i++) { // Gera um loop com o link para as páginas
   $url = "$PHP_SELF?acao=verpreco&pagina=$i&idproduto=".urlencode($produtoid);
   echo " | <a href=".$url.">$i</a>";
}
if($pagina < ($paginas - 1)) {
   $mais = $pagina + 1;
   $url = "$PHP_SELF?acao=verpreco&pagina=$mais&idproduto=".urlencode($produtoid);
   echo " | <a href=".$url.">Próxima</a>";
}                                                                                                        
print "</table>";                                                                                   
}
?>

Não estou sabendo como atrelar o campo quantidade como o nome do produto para multiplicar.

Se puderem ajudar. desde já agradeço.

Carlos Rocha

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

2 respostass a esta questão

Posts Recomendados

  • 0

Valeu pessoal.

Consegui

<?
 $produtos=mysql_query("
                    SELECT
                      id,
                      nome  
                    FROM 
                      produtos
                      ");
 if (mysql_num_rows($produtos)==0){print "Num deu!";}
 else {
?>
<form name="verpreco" method="post" action="?acao=verpreco">
<table width="500" border="1" align="center">
  <tr>
    <td colspan="10" align="center" valign="middle">Pesquisa de pre&ccedil;os de fornecedores:</td>
  </tr>
  <tr><td colspan="10">Produto:</td></tr>
    <?
    $i=1;
    while (list($id, $nome) = mysql_fetch_row($produtos))
    {
?>
      <td width="48" valign="top">
        <input type="checkbox" name="produtoid[]" value="<?=$id;?>" onclick="mostra('valor<?=$id;?>')"/><?=$nome;?><br>
        <div id="valor<?=$id;?>" name="valor<?=$id;?>" style="display:none">Valor<?=$id;?>: <input type="text" size="10" onkeypress="BloqueiaLetras();" name="valor<?=$id;?>"></div>
      </td>

<?   
            $produtos_checkbox[]="valor".$id;

            if( $i%10==0 ) {echo '</tr><tr>';}
    
            $i++;
    }
$produtos_checkbox2=implode(";",$produtos_checkbox);
    ?>    
    
  <tr>
    <td colspan="10" align="center" valign="middle"><input type="button" value="Pesquizar" onclick="verifica_quantidade_produto('<?=$produtos_checkbox2;?>')" /></td>
  </tr>
</table>
</form>
<?     }    ?>


<?
if($acao=="verpreco") {
    print "-------------------------------------------------";
    //aqui, verifico de já foi clikado na paginaçao e se a variavel iproduto(do link da paginação) veio. Se sim, decodifica, se não, prossegue o código.
    if     ($idproduto)
    {
        $produtoid=urldecode($idproduto);
        
    }
    else
    {
        foreach($_POST['produtoid'] AS $key => $value)
        { 
          $var[]="pp.idProduto=".$value." or";
        }
        $produtoid=implode(' ',$var); 
        $produtoid= substr($produtoid,0, -3);
    }
    //aqui,faço uma pesquisa pelos nomes dos produitos para exibir no cabeçalho da tabela
    $pesquisaprodutos=mysql_query("
                                   select 
                                     distinct(nome )
                                   from 
                                     produtos p 
                                   inner join 
                                      produtopreco pp on pp.idProduto=p.id
                                   where 
                                     $produtoid
                               ");
    while(list($nomesdeprodutos) = mysql_fetch_row($pesquisaprodutos))
    {
              $varnome[]=$nomesdeprodutos." e ";
    }
    $nomes=implode(' ',$varnome); 
    $produtonome= substr($nomes,0, -2);
    
    //aqui, começo a tabela
print "<table align='center' width=400 bgcolor='#0080C0'>";    
print "<tr                  ><td align=center colspan=3>Preços dos fornecedores para os produtos $produtonome</td></tr>";
//aqui começo a paginação.
$sql = mysql_query("
                    select 
                       distinct(pp.idFornecedor), 
                       f.nome,
                       sum(pp.preço) 
                    from produtopreco pp
                      inner join fornecedores f on f.id=pp.idFornecedor
                    where 
                      $produtoid
                    group by 
                       pp.idFornecedor
                    order by 
                       sum(pp.preço) 
                  ");
                   
$total = mysql_num_rows($sql); // Esta função irá retornar o total de linhas na tabela
$lpp = 10; // Especifique quantos resultados você quer por página
$paginas = ceil($total / $lpp); // Retorna o total de páginas
if(!isset($pagina)) { $pagina = 0; } // Especifica uma valor para variavel pagina caso a mesma não esteja setada
$inicio = $pagina * $lpp; // Retorna qual será a primeira linha a ser mostrada no MySQL
$sql = mysql_query("
                    select 
                       distinct(pp.idFornecedor), 
                       f.nome
                    from produtopreco pp
                      inner join fornecedores f on f.id=pp.idFornecedor
                    where 
                      $produtoid
                    group by 
                       pp.idFornecedor
                    order by 
                       sum(pp.preço) 
                    LIMIT $inicio, $lpp
                  ");
    if ($total == "0") {?><tr><td colspan=8 align="center" valign="middle" bgcolor="#FFFFFF"><center><font color=red>=>N&atilde;o foi encontrado nenhum registro para a sua pesquisa</font></center></td></tr><?php }
    else {
print "<tr BGCOLOR='#CCCCCC'>";    
print "    <td align=center>Produto</td>          ";    
print "    <td align=center>Preço Total</td>          ";    
print "    <td align=center>Fornecedor</td>           ";
print "</tr>";        
while(list($idFornecedor, $nomefornecedor)=mysql_fetch_row($sql)){
    $sql2=mysql_query("
                 select
                  p.nome,  pp.preço, $valor1 * pp.preço
                 from
                  produtopreco pp
                 inner join produtos p on p.id=pp.idProduto
                 inner join fornecedores f on f.id=pp.idFornecedor
                 where pp.idFornecedor = $idFornecedor    and ($produtoid)               
                   ");

  print "<tr BGCOLOR='#FFFFFF'>";
  print "    <td align=center>";
  $precototal2=0;
  while (list($nomeproduto,$preço,$precototal)=mysql_fetch_row($sql2))
  {
   print  $nomeproduto."<br>Preço unitário= R$ ".formata_moeda($preço)."<br>Quantidade=".$valor1."<br>Preço Total= R$ ".formata_moeda($precototal)."<p>";    
  $precototal2+=$precototal;
  }
  
  print "</td>";
  print "    <td align=center>R$ ".formata_moeda($precototal2)." </td>        ";      
  print "    <td align=center>$nomefornecedor      </td>        ";
  print "</tr>";               
                                                                                }    
       }   
if($pagina > 0) {
   $menos = $pagina - 1;
   $url = "$PHP_SELF?acao=verpreco&pagina=$menos&idproduto=".urlencode($produtoid);
   echo "<a href=".$url.">Anterior</a>"; // Vai para a página anterior
}
for($i=0;$i<$paginas;$i++) { // Gera um loop com o link para as páginas
   $url = "$PHP_SELF?acao=verpreco&pagina=$i&idproduto=".urlencode($produtoid);
   echo " | <a href=".$url.">$i</a>";
}
if($pagina < ($paginas - 1)) {
   $mais = $pagina + 1;
   $url = "$PHP_SELF?acao=verpreco&pagina=$mais&idproduto=".urlencode($produtoid);
   echo " | <a href=".$url.">Próxima</a>";
}                                                                                                        
print "</table>";                                                                                   
}
?>

Link para o comentário
Compartilhar em outros sites

  • 0

achei nque resolvi mas deu erro.

Veja:

fiz isso

$produtos_checkbox3    =explode(";",$produtos_checkbox2);
    foreach ($produtos_checkbox3 as $ing)
    {
        print $ing."<br>";
    }
Mas, como colocar cada uma desses ing sem repertir o loop do while? assim:
while(list($idFornecedor, $nomefornecedor)=mysql_fetch_row($sql)){
    $sql2=mysql_query("
                 select
                  p.nome,  pp.preço, $ing * pp.preço
                 from
                  produtopreco pp
                 inner join produtos p on p.id=pp.idProduto
                 inner join fornecedores f on f.id=pp.idFornecedor
                 where pp.idFornecedor = $idFornecedor    and ($produtoid)               
                   ");

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,5k
×
×
  • Criar Novo...