Jump to content
jefersonfl

Agrupar dados usando array e foreach

Recommended Posts

Olá, peço ajuda para chegar em um resultado que estou tentando há algum tempo e não consigo, me faltou conhecimento na área.

Estou tentando criar tipo uma mala direta, onde apareça em cada etiqueta os dados do fornecedor e todas as suas notas pendentes.

 

Na primeira tela eu seleciono notas pendentes de fornecedores em uma lista, usando array

<input type="checkbox" name="marcadas[]" value="<?php echo $nr_nota; ?>">

Na tela seguinte deveria aparecer as informações agrupadas por fornecedor e suas respectivas notas pendentes. Acontece que usando o foreach eu não consigo agrupar por fornecedor e manter as notas individuais, aparece uma etiqueta para cada nota, repetindo etiquetas para um mesmo fornecedor. Segue código da segunda tela:

 

      foreach ($_POST['marcadas'] as $nr_nota_pendente)

   {
      $sql = mysql_query("SELECT e.nr_nota, e.id_fornec_nota, f.razao_social, f.id_fornec
      FROM notas AS e
      JOIN fornecedor AS f ON f.id_fornec = e.id_fornec_nota
      WHERE nr_nota = '$nr_nota_pendente'
      GROUP BY f.razao_social");
                while ($nota = mysql_fetch_array($sql)) {
                       $razao_social = substr($nota[2],0,50);

				echo "FORNECEDOR: $razao_social <br>
				NOTAS PENDENTES: $nr_nota_pendente <br><br>";
    }

 

Por favor, alguém pode me dar uma luz de como conseguir o resultado que quero?

Obrigado.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By mamotinho
      Boa noite! estou com dúvidas em relação a array, eu tenho uma procedure no SQL Server e essa procedure exibe uma lista de resultados, eu gostaria de pega o valor desses resultados e lista em um array para eu comparar com outro valor que vai ser selecionado em um select , tipo abaixo:
       
      $arraySelect = $db->prepare(exec WebSite.dbo.server_value_product 2);
      $arraySelect->execute();
      $arrayExemple = $arraySelect->fetchAll();

      procedure_list = array($arrayExemple);
       
      !in_array($valorSelect, $procedure_list){
         echo 'O Valor selecionado não existe nos resultados da procedure';
      }
       
       
      alguem sabe como posso listar o resultado da procedure em array. e sabe se o valor que procuro está entre os resultados da array.
    • By macpeace
      public function assignAll() { try { if ( isset( $this->view->tpldata ) ) { unset( $this->view->tpldata ); } //AQUI E O ERRO!!!!! foreach ( $this->data as $data ) { foreach ( $data as $key => $value ) { $this->assigndata[$key] = trim( $value ); } } } catch ( Exception $e ) { echo $e->getMessage(); exit; } return $this; } Invalid argument supplied for foreach() in C:\xampp\htdocs\Homem-das-casas\app\DB.class.php on line 726
       
      Não me conecta com a bd e não consigo sair daqui, preciso de ajuda por favor, pois nao entendo que esta errado!
    • By eiwes
      Fiz uma iteração foreach para gerar categorias e subcategorias, pois não queria fazer DOIS SELECTS, ficando assim:
       
      //----> Foreach para gerar a categoria, pois são vários items com as mesmas chaves, portanto agrupo foreach($exibeLista as $row){ $dlD[$row["nameD"]][] = [ "nameD"=>$row["nameD"], "idD"=>$row["idD"], "qtdR"=>$row["qtdR"], "qtdF"=>$row["qtdF"] ]; } //----> Foreach para gerar subcategorias foreach($exibeLista as $row){ $dLA[$row["nameP"]][] = [ "nameD"=>$row["nameD"], "idD"=>$row["idD"], "idAss"=>$row["idAss"], "idT"=>$row["idT"], "nameP"=>$row["nameP"], "qtdR"=>$row["qtdR"], "qtdF"=>$row["qtdF"] ]; } $fsHTML = []; $rateD = 0; $qtdAss = 0; if(is_array($dlD) || is_object($dlD)){ foreach ($dlD as $key => $ds) { if ($key <> '' && $key <> NULL) { $rateD += (($ds[0]["qtdR"]*100)/$ds[0]["qtdF"]); $qtdAss += count($dlD[$key]); //----> Array para inserir HTML da Categoria criada e criar accordion $fsHTML[] = ' <div class="col-md-12 col-sm-12 col-xs-12"> <div class="x_panel overflow_hidden padding-into-row-qsts bg-white-row filtro-on"> <span class="rateD">'.ceil($rateD/$qtdAss).'%</span> <span class="opcao-into-top">'.$ds[0]["idD"].' - '.$ds[0]["nameD"].' <a class="collapse-link open-filter-qsts border-radius8"><i class="fa fa-chevron-up"></i></a></span> <div class="x_content" style="display:none;padding-top:10px"> <div class="accordion" id="accordion" role="tablist" aria-multiselectable="true"> '; //----> Verificar se a subcategoria contém a categoria, se contém é incluída na array foreach ($dLA as $keys => $ass) { if($ass[0]["idD"] == $ds[0]["idD"] ){ if($ass[0]['idT'] <> 0){ $link = 't='.$ass[0]['idT']; }else{ $link = 'a='.$ass[0]['idAss'];} $fsHTML[] = ' <div class="panel"> <a class="panel-heading collapsed" href="/v/fs/st?mz=y&type=c&'.$link.'"> <span class="eficiencia-accordion">'.ceil(($ass[0]['qtdR']*100)/$ass[0]['qtdF']).'%</span> <h4 class="panel-title">'.$ass[0]['nameP'].'</h4> <span class="unicamente">'.$ass[0]['qtdR'].' respondido de '.$ass[0]['qtdF'].'</span> </a> </div> '; }//if ass }//foreach ass }//if ds //----> Aqui é aonde ocorre o ERRO! Era pra fazer o fechamento do Accordion e gerar uma nova DIV. //No índice [0] isso ocorre normalmente, porém no [1] ela agrupa todos os accordions. (abaixo farei a amostra) $fsHTML[] = '</div></div></div></div>'; }//foreach ds }//if verifica se é array e se é objeto return implode('', array_unique($fsHTML)); O correto seria assim:
       
      - Categoria
        - Subcategoria
        - Subcategoria
       
      - Categoria
       - Subcategoria
       - Subcategoria
       
       
      Como está acontecendo:
       
      - Categoria
        - Subcategoria
        - Subcategoria
       
      - Categoria
        - Subcategoria
        - Subcategoria
          - Categoria
            - Subcategoria
            - Subcategoria
              - Categoria
                - Subcategoria
                - Subcategoria
                  - Categoria
                    - Subcategoria
                    - Subcategoria
       
       
      Não consigo entender de jeito nenhum pq o primeiro fecha corretamente e a partir do segundo não.
      Alguém me ajuda?
       
       
    • By joaolepaus
      Boa tarde pessoal, não tenho muito conhecimento de PHP, mas estou tentando receber os dados via POST de um array, porem quando recebo esse array vem todos os dados referenete a todos os ids, mas na verdade eu quero receber somente os dados que estão com o id selecionado por checkbox.
      O código que estou usando para receber o POST é esse:
       
      $id = $_POST['idplano']; $operadora = $_POST['operadora']; $total = $_POST['total']; $img = $_POST['img']; $plano = $_POST['plano']; $acomodacao = $_POST['acomodacao']; $abrangencia = $_POST['abrangencia']; $segmento = $_POST['segmento']; $participacao = $_POST['participacao']; $valorFaixa = $_POST['valorFaixa']; for($i = 0; $i < count($id); $i++) { echo "| $id[$i] | $operadora[$i] | $total[$i] | $img[$i] | $plano[$i] | $acomodacao[$i] | $abrangencia[$i] | $segmento[$i] | $participacao[$i] | $valorFaixa[$i] |<br>"; } Os meus inputs estão nomeados assim: idplano[], operadora[] e assim vai.
       
      fiz o var_dump no post, notem que só tem 3 ids checked mas chega os dados de todos os ids. 
       
      array(12) { ["teste"]=> string(0) "" ["checked"]=> array(3) { [0]=> string(2) "34" [1]=> string(2) "30" [2]=> string(2) "38" } ["img"]=> array(25) { [0]=> string(17) "5efb353cd0df4.jpg" [1]=> string(17) "5efb353cd0df4.jpg" [2]=> string(17) "5efb353cd0df4.jpg" [3]=> string(17) "5efb353cd0df4.jpg" [4]=> string(17) "5efb353cd0df4.jpg" [5]=> string(17) "5efb353cd0df4.jpg" [6]=> string(17) "5efb353cd0df4.jpg" [7]=> string(17) "5efb353cd0df4.jpg" [8]=> string(17) "5efb353cd0df4.jpg" [9]=> string(17) "5efb353cd0df4.jpg" [10]=> string(17) "5efb353cd0df4.jpg" [11]=> string(17) "5efb332233b92.jpg" [12]=> string(17) "5efb332233b92.jpg" [13]=> string(17) "5efb332233b92.jpg" [14]=> string(17) "5efb332233b92.jpg" [15]=> string(17) "5efdd26866510.jpg" [16]=> string(17) "5efdd26866510.jpg" [17]=> string(17) "5efdd26866510.jpg" [18]=> string(17) "5efdd26866510.jpg" [19]=> string(17) "5efdd26866510.jpg" [20]=> string(17) "5efdd26866510.jpg" [21]=> string(17) "5efdd26866510.jpg" [22]=> string(17) "5efdd26866510.jpg" [23]=> string(17) "5efdd26866510.jpg" [24]=> string(17) "5efdd26866510.jpg" } ["total"]=> array(25) { [0]=> string(5) "74.78" [1]=> string(6) "143.23" [2]=> string(5) "186.2" [3]=> string(6) "159.14" [4]=> string(6) "206.89" [5]=> string(6) "118.23" [6]=> string(5) "153.7" [7]=> string(6) "131.36" [8]=> string(6) "183.91" [9]=> string(6) "117.98" [10]=> string(6) "144.82" [11]=> string(5) "179.6" [12]=> string(6) "207.38" [13]=> string(6) "235.12" [14]=> string(6) "283.91" [15]=> string(6) "202.17" [16]=> string(6) "242.62" [17]=> string(6) "252.54" [18]=> string(6) "303.05" [19]=> string(6) "220.68" [20]=> string(6) "264.76" [21]=> string(6) "303.72" [22]=> string(6) "364.53" [23]=> string(6) "494.16" [24]=> string(6) "593.03" } ["idplano"]=> array(25) { [0]=> string(2) "34" [1]=> string(2) "35" [2]=> string(2) "36" [3]=> string(2) "47" [4]=> string(2) "48" [5]=> string(2) "49" [6]=> string(2) "50" [7]=> string(2) "51" [8]=> string(2) "52" [9]=> string(2) "53" [10]=> string(2) "54" [11]=> string(2) "30" [12]=> string(2) "31" [13]=> string(2) "32" [14]=> string(2) "33" [15]=> string(2) "37" [16]=> string(2) "38" [17]=> string(2) "39" [18]=> string(2) "40" [19]=> string(2) "41" [20]=> string(2) "42" [21]=> string(2) "43" [22]=> string(2) "44" [23]=> string(2) "45" [24]=> string(2) "46" } ["operadora"]=> array(25) { [0]=> string(14) "Premium Saúde" [1]=> string(14) "Premium Saúde" [2]=> string(14) "Premium Saúde" [3]=> string(14) "Premium Saúde" [4]=> string(14) "Premium Saúde" [5]=> string(14) "Premium Saúde" [6]=> string(14) "Premium Saúde" [7]=> string(14) "Premium Saúde" [8]=> string(14) "Premium Saúde" [9]=> string(14) "Premium Saúde" [10]=> string(14) "Premium Saúde" [11]=> string(4) "Samp" [12]=> string(4) "Samp" [13]=> string(4) "Samp" [14]=> string(4) "Samp" [15]=> string(15) "Unimed Vitória" [16]=> string(15) "Unimed Vitória" [17]=> string(15) "Unimed Vitória" [18]=> string(15) "Unimed Vitória" [19]=> string(15) "Unimed Vitória" [20]=> string(15) "Unimed Vitória" [21]=> string(15) "Unimed Vitória" [22]=> string(15) "Unimed Vitória" [23]=> string(15) "Unimed Vitória" [24]=> string(15) "Unimed Vitória" } ["plano"]=> array(25) { [0]=> string(6) "Bronze" [1]=> string(17) "Infinity (TIPO 1)" [2]=> string(17) "Infinity (TIPO 1)" [3]=> string(17) "Infinity (TIPO 2)" [4]=> string(17) "Infinity (TIPO 2)" [5]=> string(22) "Personnalité (TIPO 1)" [6]=> string(22) "Personnalité (TIPO 1)" [7]=> string(22) "Personnalité (TIPO 2)" [8]=> string(22) "Personnalité (TIPO 2)" [9]=> string(6) "Bronze" [10]=> string(7) "Platina" [11]=> string(17) "Essencial (Prata)" [12]=> string(13) "Basico (Azul)" [13]=> string(22) "Personalizado (Branco)" [14]=> string(18) "Executivo (Branco)" [15]=> string(18) "Fácil Perfil (G2)" [16]=> string(18) "Fácil Perfil (G2)" [17]=> string(13) "Personal (G2)" [18]=> string(13) "Personal (G2)" [19]=> string(27) "Participativo Estadual (G2)" [20]=> string(27) "Participativo Estadual (G2)" [21]=> string(21) "Premium Nacional (G2)" [22]=> string(21) "Premium Nacional (G2)" [23]=> string(15) "VitoriaMed (G2)" [24]=> string(15) "VitoriaMed (G2)" } ["acomodacao"]=> array(25) { [0]=> string(12) "Ambulatorial" [1]=> string(10) "Enfermaria" [2]=> string(11) "Apartamento" [3]=> string(10) "Enfermaria" [4]=> string(11) "Apartamento" [5]=> string(10) "Enfermaria" [6]=> string(11) "Apartamento" [7]=> string(10) "Enfermaria" [8]=> string(11) "Apartamento" [9]=> string(12) "Ambulatorial" [10]=> string(12) "Ambulatorial" [11]=> string(10) "Enfermaria" [12]=> string(10) "Enfermaria" [13]=> string(10) "Enfermaria" [14]=> string(11) "Apartamento" [15]=> string(10) "Enfermaria" [16]=> string(11) "Apartamento" [17]=> string(10) "Enfermaria" [18]=> string(11) "Apartamento" [19]=> string(10) "Enfermaria" [20]=> string(11) "Apartamento" [21]=> string(10) "Enfermaria" [22]=> string(11) "Apartamento" [23]=> string(10) "Enfermaria" [24]=> string(11) "Apartamento" } ["abrangencia"]=> array(25) { [0]=> string(8) "Estadual" [1]=> string(8) "Estadual" [2]=> string(8) "Estadual" [3]=> string(8) "Estadual" [4]=> string(8) "Estadual" [5]=> string(8) "Estadual" [6]=> string(8) "Estadual" [7]=> string(8) "Estadual" [8]=> string(8) "Estadual" [9]=> string(8) "Estadual" [10]=> string(8) "Estadual" [11]=> string(20) "Grupo de Municípios" [12]=> string(20) "Grupo de Municípios" [13]=> string(8) "Estadual" [14]=> string(8) "Estadual" [15]=> string(20) "Grupo de Municípios" [16]=> string(20) "Grupo de Municípios" [17]=> string(20) "Grupo de Municípios" [18]=> string(20) "Grupo de Municípios" [19]=> string(8) "Estadual" [20]=> string(8) "Estadual" [21]=> string(8) "Nacional" [22]=> string(8) "Nacional" [23]=> string(8) "Nacional" [24]=> string(8) "Nacional" } ["segmento"]=> array(25) { [0]=> string(11) "Empresarial" [1]=> string(11) "Empresarial" [2]=> string(11) "Empresarial" [3]=> string(11) "Empresarial" [4]=> string(11) "Empresarial" [5]=> string(11) "Empresarial" [6]=> string(11) "Empresarial" [7]=> string(11) "Empresarial" [8]=> string(11) "Empresarial" [9]=> string(14) "Pessoa Física" [10]=> string(14) "Pessoa Física" [11]=> string(20) "Coletivo por Adesão" [12]=> string(20) "Coletivo por Adesão" [13]=> string(20) "Coletivo por Adesão" [14]=> string(20) "Coletivo por Adesão" [15]=> string(20) "Coletivo por Adesão" [16]=> string(20) "Coletivo por Adesão" [17]=> string(20) "Coletivo por Adesão" [18]=> string(20) "Coletivo por Adesão" [19]=> string(20) "Coletivo por Adesão" [20]=> string(20) "Coletivo por Adesão" [21]=> string(20) "Coletivo por Adesão" [22]=> string(20) "Coletivo por Adesão" [23]=> string(20) "Coletivo por Adesão" [24]=> string(20) "Coletivo por Adesão" } ["participacao"]=> array(25) { [0]=> string(45) "Integral (Sem cobrança de coparticipações)" [1]=> string(19) "Consulte o corretor" [2]=> string(19) "Consulte o corretor" [3]=> string(60) "Coparticipações nas consultas eletivas e de pronto socorro" [4]=> string(42) "Nas consultas eletivas e de pronto socorro" [5]=> string(19) "Consulte o corretor" [6]=> string(19) "Consulte o corretor" [7]=> string(22) "Nas consultas e exames" [8]=> string(22) "Nas consultas e exames" [9]=> string(22) "Nas consultas e exames" [10]=> string(22) "Nas consultas e exames" [11]=> string(42) "Nas consultas eletivas e de pronto socorro" [12]=> string(42) "Nas consultas eletivas e de pronto socorro" [13]=> string(42) "Nas consultas eletivas e de pronto socorro" [14]=> string(42) "Nas consultas eletivas e de pronto socorro" [15]=> string(22) "Nas consultas e exames" [16]=> string(22) "Nas consultas e exames" [17]=> string(25) "Somente em pronto socorro" [18]=> string(25) "Somente em pronto socorro" [19]=> string(22) "Nas consultas e exames" [20]=> string(22) "Nas consultas e exames" [21]=> string(22) "Nas consultas e exames" [22]=> string(22) "Nas consultas e exames" [23]=> string(45) "Integral (Sem cobrança de coparticipações)" [24]=> string(45) "Integral (Sem cobrança de coparticipações)" } ["valorFaixa"]=> array(25) { [0]=> string(26) "De 0 a 18 anos R$74.78 " [1]=> string(27) "De 0 a 18 anos R$143.23 " [2]=> string(27) "De 0 a 18 anos R$186.20 " [3]=> string(27) "De 0 a 18 anos R$159.14 " [4]=> string(27) "De 0 a 18 anos R$206.89 " [5]=> string(27) "De 0 a 18 anos R$118.23 " [6]=> string(27) "De 0 a 18 anos R$153.70 " [7]=> string(27) "De 0 a 18 anos R$131.36 " [8]=> string(27) "De 0 a 18 anos R$183.91 " [9]=> string(27) "De 0 a 18 anos R$117.98 " [10]=> string(27) "De 0 a 18 anos R$144.82 " [11]=> string(27) "De 0 a 18 anos R$179.60 " [12]=> string(27) "De 0 a 18 anos R$207.38 " [13]=> string(27) "De 0 a 18 anos R$235.12 " [14]=> string(27) "De 0 a 18 anos R$283.91 " [15]=> string(27) "De 0 a 18 anos R$202.17 " [16]=> string(27) "De 0 a 18 anos R$242.62 " [17]=> string(27) "De 0 a 18 anos R$252.54 " [18]=> string(27) "De 0 a 18 anos R$303.05 " [19]=> string(27) "De 0 a 18 anos R$220.68 " [20]=> string(27) "De 0 a 18 anos R$264.76 " [21]=> string(27) "De 0 a 18 anos R$303.72 " [22]=> string(27) "De 0 a 18 anos R$364.53 " [23]=> string(27) "De 0 a 18 anos R$494.16 " [24]=> string(27) "De 0 a 18 anos R$593.03 " } } Como que eu faria para pegar somente os dados referente aos ids selecionados no checkebox ? 
       
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.