Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

NFelipeFL

[Resolvido] Controle de vírgula: modo de simplificar este código.

Recommended Posts

O que tô tentando fazer é o seguinte: puxar dados de um mysql e a partir dele formar as virgulas (como produto: P, M e G, etc).

 

O código atual que utilizo é este:

 

  echo "<Br>"; if ($produtoP>"0") echo "P "; if ($produtoM>"0") echo "M "; if ($produtoG"0") echo "G "; if ($produtoGG>"0") echo "GG"; if ($produtoP=="0" && $produtoM=="0" && $produtoG=="0" && $produtoGG=="0") echo "Esgotado.";

 

Ele faz a verificação se existe estoque para o tamanho do produto e, se existir, retorna com o echo com o tamanho do produto que ainda há em estoque (No caso acima fica sem virgula, mais ou menos assim, ex: P M G (existem produtos do tamanho P, M e G no estoque).

 

Eu estava modificando para este:

 

  echo "<Br>"; if ($produtoP>"0" && $produtoM=="0" && $produtoG=="0" && $produtoGG=="0") echo "P.";
 echo "<Br>"; if ($produtoP>"0" && $produtoM>"0" && $produtoG=="0" && $produtoGG=="0") echo "P e M.";
 echo "<Br>"; if ($produtoP>"0" && $produtoM>"0" && $produtoG>"0" && $produtoGG=="0") echo "P, M e G.";
 echo "<Br>"; if ($produtoP>"0" && $produtoM>"0" && $produtoG>"0" && $produtoGG>"0") echo "P, M, G e GG.";
 echo "<Br>"; if ($produtoP>"0" && $produtoM=="0" && $produtoG>"0" && $produtoGG>"0") echo "P, G e GG.";
 echo "<Br>"; if ($produtoP>"0" && $produtoM=="0" && $produtoG>"0" && $produtoGG=="0") echo "P e G.";
 echo "<Br>"; if ($produtoP>"0" && $produtoM=="0" && $produtoG=="0" && $produtoGG>"0") echo "P e GG.";

 

No código acima só fiz a do tamanho P (e ainda está incompleto), e se eu fizer as outras vai ficar gigantesco o código.

 

 

Tem como simplificar tudo isso? Mostrando a virgula corretamente de acordo com os produtos existentes no estoque?

 

ate mais...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Monta tudo em um array...

if ($produtoP>"0"){ $array_tipos[] = 'P'; }
if ($produtoM>"0"){ $array_tipos[] = 'M'; }
...
if($produtoGG>"0"){ $array_tipos[] = 'GG'; }

echo implode(', ', $array_tipos);

Compartilhar este post


Link para o post
Compartilhar em outros sites

acho que estou fazendo errado, testei de varias maneiras e sempre retorna erro:

 

Notice: Undefined variable: array_tipos in c:\easyphp1.8\www\produto.php on line 39

Warning: implode(): Bad arguments. in c:\easyphp1.8\www\produto.php on line 39

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu já faço isso, Victor Cometti.

 

Ele retorna mas retorna sem virgula, sem 'e'. Sem formatação.

 

 

Edit:

 

Consegui com o código do ESerra.

 

Porém, há um probleminha.. (ver ultimo post)

Compartilhar este post


Link para o post
Compartilhar em outros sites

//varre as linhas
while ($linha = mysql_fetch_assoc($sql)){
  $tamanhos[] = $linha['tamanho'];
}
$ultimo = end($tamanhos);//pega o último
//imprime
printf('%d e %d',explode(",",array_pop($tamanhos)),$ultimo); 

acho q isso resolve

Compartilhar este post


Link para o post
Compartilhar em outros sites

O código do ESerra funcionou tranquilo, mas quando adicionei alguns códigos mysql ele misturou tudo.. :(

 

Não entendi bem o seu codigo, Victor...

abraço

 

 

Edit: no erro que informei no código do ESerra, ele faz o seguinte:

 

coloquei o ORDER by id asc.

 

No código 1, ele lista corretamente. No código 2, ele repete o estoque do código 1 e lista o do código 2.

 

Ficando assim:

 

Sem_t_tulo.jpg

 

A CAMISA 1, existe M, G e GG. Já a CAMISA 2 existe P, M e GG.

 

Ele está retornando na camisa 2: M, G, GG, P, M e GG (o negrito seria da camisa 1)

Compartilhar este post


Link para o post
Compartilhar em outros sites

A cada volta do laço você eve dar um unset no array.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.