krinosx 0 Denunciar post Postado Setembro 27, 2005 Ola pessoal, estou com um problema que está consumindo meus neurônios e não estou achando um algoritimo coerente para acertar isso. Vamos ao problema:Tenho uma matriz que relaciona um GRUPO DE PRODUÇÃO e NUMEROS DE PEÇAS produzidas por cada grupo. No entanto existe a possibilidade de mais de um grupo trabalhar junto em cada peça, ou seja, cada peça pode ser produzida por 1,2 ou N grupos simultaneamente. O meu objetivo é montar uma listagem com o seguinte formato:Grupoa A, B, C: - Peça 1 - Peça 2 - Peça 3Grupo A, B - Peça 4 - Peça 5Grupo B, C - Peça 6 - Peça 8Grupo A - Peça 7Grupo B - Peça 10, - Peça 11, - Peça 13Entenderam? ou seja, quero ver as peças que os grupos produziram junto e as que cada grupo produziu sozinho... ta f*** pra conseguir resolver essa parada. A matriz que tenho segue abaixo... será que alguem consegue resolver?Array( [iD_PECAS] => Array ( [0] => 1863 [1] => 1990 [2] => 1996 [3] => 1997 [4] => 1998 [5] => 1999 [6] => 2017 [7] => 2046 [8] => 2109 [9] => 2110 [10] => 2111 [11] => 2123 [12] => 2124 [13] => 2128 [14] => 2130 [15] => 2131 [16] => 2132 [17] => 2132 [18] => 2133 [19] => 2133 [20] => 2134 [21] => 2134 ) [uNIDADE_PRODUCAO] => Array ( [0] => "A" [1] => "A" [2] => "B" [3] => "B" [4] => "B" [5] => "B" [6] => "C" [7] => "A" [8] => "B" [9] => "B" [10] => "B" [11] => "B" [12] => "B" [13] => "B" [14] => "C" [15] => "D" [16] => "E" [17] => "F" [18] => "E" [19] => "F" [20] => "E" [21] => "F" ))Bom se alguem conseguir resolver essa parada me mande um e-mail... krinosx@gmail.com vou ficar muito agradecido. Compartilhar este post Link para o post Compartilhar em outros sites
felipe_rezende 0 Denunciar post Postado Setembro 27, 2005 Veja se isto lhe ajuda: PHP [*]<?php [*] [*]$grupop["A"] = array("1","2","3"); [*]$grupop["B"] = array("4","5","6"); [*]$grupop["C"] = array("7","8","9"); [*] [*]// Pecas produzidas por ABC [*]echo "<b>Peças produzidas por ABC<br></b>"; [*]foreach ($grupop["A"] as $peca) { [*] echo "Peça: ".$peca."<br>"; [*]} [*]foreach ($grupop["B"] as $peca) { [*] echo "Peça: ".$peca."<br>"; [*]} [*]foreach ($grupop["C"] as $peca) { [*] echo "Peça: ".$peca."<br>"; [*]} [*]// Pecas produzidas por A [*]echo "<b>Peças produzidas por A<br></b>"; [*]foreach ($grupop["A"] as $peca) { [*] echo "Peça: ".$peca."<br>"; [*]} [*]// Pecas produzidas por B [*]echo "<b>Peças produzidas por B<br></b>"; [*]foreach ($grupop["B"] as $peca) { [*] echo "Peça: ".$peca."<br>"; [*]} [*]// Pecas produzidas por C [*]echo "<b>Peças produzidas por C<br></b>"; [*]foreach ($grupop["C"] as $peca) { [*] echo "Peça: ".$peca."<br>"; [*]} [*] [*]?> Compartilhar este post Link para o post Compartilhar em outros sites
krinosx 0 Denunciar post Postado Setembro 27, 2005 Bom... resolveria o problema.. mas tem uma coisa,a matriz que eu tenho montada vem do banco de dados, e não tem como eu mudar, vem dessa maneira mesmo, e os gurpos não são fixos, podem existir N grupos que produzam N peças com N combinações de grupos diferentes.....entende?os grupos não se resumem a A,B,C e as PEÇAS tambem não se resumem a 1,2,3...teria que ser algo mais dinamico. Compartilhar este post Link para o post Compartilhar em outros sites
Illidan 0 Denunciar post Postado Setembro 28, 2005 Isso é um problema que pode ser resolvido por orientação a objetos... eu montei uma coisa básica aqui só pra ter um exemplo, depois você extende o código. <?php class UnidadeProducao { var $id; var $pecasProduzidas; function UnidadeProducao($idUnidade) { $this->id = $idUnidade; $this->pecasProduzidas = array(); } function produzirPeca(&$Peca) { $this->pecasProduzidas[] =& $Peca; $Peca->produzidaPor[] =& $this; } // debug function pecasProduzidas() { echo "<p><strong>Peças produzidas pelo grupo \"" . $this->id . "\":</strong> "; for ($i = 0; $i < count($this->pecasProduzidas); $i++) { echo $this->pecasProduzidas[$i]->id; echo ($i < (count($this->pecasProduzidas) - 1) ? ", " : ""); } echo "</p>"; } } class Peca { var $id; var $produzidaPor; function Peca($idPeca) { $this->id = $idPeca; $this->produzidaPor = array(); } // debug function produzidaPor() { echo "<p><strong>Unidades que produzem a peça \"" . $this->id . "\":</strong> "; for ($i = 0; $i < count($this->produzidaPor); $i++) { echo $this->produzidaPor[$i]->id; echo ($i < (count($this->produzidaPor) - 1) ? ", " : ""); } echo "</p>"; } } // cria os objetos de "Peca" e "UnidadeProducao" $peca = Array(); $peca[0] = new Peca(1863); $peca[1] = new Peca(1990); $peca[2] = new Peca(1996); $Unidade_Producao_A = new UnidadeProducao("A"); $Unidade_Producao_B = new UnidadeProducao("B"); $Unidade_Producao_C = new UnidadeProducao("C"); // define as peças produzidas pelas unidades $Unidade_Producao_A->produzirPeca($peca[0]); $Unidade_Producao_A->produzirPeca($peca[1]); $Unidade_Producao_A->produzirPeca($peca[2]); $Unidade_Producao_B->produzirPeca($peca[0]); $Unidade_Producao_B->produzirPeca($peca[1]); $Unidade_Producao_C->produzirPeca($peca[1]); $Unidade_Producao_C->produzirPeca($peca[2]); // debugando $Unidade_Producao_A->pecasProduzidas(); $Unidade_Producao_B->pecasProduzidas(); $Unidade_Producao_C->pecasProduzidas(); $peca[0]->produzidaPor(); $peca[1]->produzidaPor(); $peca[2]->produzidaPor(); ?> Compartilhar este post Link para o post Compartilhar em outros sites
Rpizao 0 Denunciar post Postado Setembro 28, 2005 Huuummm....bicho não sei se entendi direito!! Mais se for o que eu to pensando, você pode criar dois campos na sua tabela que funcionariam como flags... A relação é N pra N, não é isso? Se for, você tem uma tabela que faz relação entre UNIDADE_PRODUCAO E PECAS certo?! Dai você acrescenta os dois campos, um dizendo se aquela é uma produção individual ou em conjunto. Assim pra cada UNIDADE_PRODUCAO você vai ter quais as peças foram produzidas individualmente e quais foi em conjunto. Acho que é isso cara!!! :huh: Abração... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Rafael. Compartilhar este post Link para o post Compartilhar em outros sites
Perfect Lion 10 Denunciar post Postado Setembro 28, 2005 Tenta essa logica aqui.... simples e eu acho que é o que você ta procurando... PHP [*] [*]$GrupIdPecas = array( [*]"A||1,2,3", [*]"B||2,3,4,6", [*]"C||5,6" [*]); [*]$Pecas = array( [*]1=>1863, [*]2=>1990, [*]3=>1996, [*]4=>1997, [*]5=>1998, [*]6=>2017 [*]); [*] [*]for($i=0;$i($GrupIdPecas);$i++){ [*]$g = explode("||",$GrupIdPecas[$i]); [*] $pe = explode(",",$g[1]); [*]echo "Grupo " .$g[0]. " Peças por esse grupo: "; [*] for($ff=0;$ff<=count($pe);$ff++){ [*] echo $Pecas[$ff]." "; [*] } [*]echo ""; [*]} [*] =) Compartilhar este post Link para o post Compartilhar em outros sites
Eclesiastes 2 Denunciar post Postado Setembro 28, 2005 Já foi resolvido. Veja: http://forum.imasters.com.br/index.php?sho...=0entry435863 []'s Compartilhar este post Link para o post Compartilhar em outros sites
krinosx 0 Denunciar post Postado Setembro 28, 2005 Ae gente... valeu pela ajuda.. achei interessante o modelo orientado a objeto...no entanto o CODEMAN mandou uma solução até que simples baseada em matrizes que me serviu como uma luva...Obrigado pelo empenho de todos.. e bom.. vou arquivar todas as soluções pq isso com ctz vai servir mais para frente....Como é em PHP vou ficar com a solução do codeman (inclusive ja apliquei, testei e está em produção aqui... )Mas essa com orientação a objeto pode ser util para eu aplicar em Java caso venha a precisar.. só acho que vou precisar acrescentar umas "Collections" para gerenciar a quantidade "variavel" de grupos e peças.... mas isso eu faço assim que tiver um tempo e posto aqui como ficou....valeu povo!!E valeu ae CODEMAN! Compartilhar este post Link para o post Compartilhar em outros sites