Jump to content

POWERED BY:

clovis.sardinha

Erro ao mostrar o array multidimensional

Recommended Posts

Bom dia.

Meu problema é o seguinte:

Estou fazendo uma tabela e preciso mostrar o usuário e várias cidades que pertencem a este usuário.

O resultado do array é o seguinte:

image.png.872d50fcf398b1fd4c66afc46cc9d0f1.png

Quando passo para a tabela os valores de cidade se repetem para o mesmo usuário até o final e retorna fazendo o mesmo para o próximo usuário. 

Veja abaixo

image.png.978a7232562ed7be8e59bb464fee9229.png

 

Meu código para a tabela é a seguinte:

<tr>
        <td align="left"><?php echo $usuario['nome'] ?></td>
        <td align="left"><?php echo $usuario['nome_orgao']  ?></td>
        <td align="left"><?php echo $usuario['nome_funcao']  ?></td>
        <?php  foreach($destinos as $key=>$destino):?>
          <?php $key=0;?>
        <td align="left">          
          <?php foreach($destino as $chave=> &$cidade): ?>
          <?php echo $cidade['cid_nome']."-";?>
          <?php   endforeach;?> 
        </td> 
          <?php $key+=$key; ?>
          <?php   endforeach;?>
         
        <td><?php echo date('d/m/Y', strtotime( $usuario['created_at'])) ?></td>
        <td align="left"><a href="<?php echo base_url('UserAdmin/Usuario/getUsuarioById')."/".$usuario['id_user'] ?>">DETALHES</a></td>
    </tr>
    <?php endforeach ?>

Onde estou errando? O que tenho de fazer para percorrer este array de modo a aparecer apenas as cidades pertencentes a cada usuário?

image.png

Share this post


Link to post
Share on other sites

A sua listagem está incompleta. Geralmente o problema sempre está antes da listagem, mais exatamente nas tabelas do MySQL. A sua listagem não traz o nome de nenhuma das tabelas. Eu esperava algo do tipo:

<?php
$mysqli=new mysqli("localhost","root","","astudy");
$query=$mysqli->query("select * from tbusuario");
$usuario=$query->fetch_assoc();
echo "<table><tr><td align=left>".$usuario['nome']."</td>";
$criterio=$usuario['nome'];
$datacreatedat=$usuario['created_at'];
$iduser=$usuario['id_user'];
$query=$mysqli->query("select roteiro from tbroteiro where usuario=$criterio");
$destinos=$query->fetch_assoc()['roteiro'];
foreach($destinos as $key=>$destino):
    echo "<td align=left>";
    foreach($destino as $chave=> &$cidade):
          echo $cidade['cid_nome']."-";
    endforeach;
    echo "</td>"; 
endforeach;
echo "<td>".date('d/m/Y', strtotime($datacreatedat))."</td>";
echo "<td align=left><a href=".base_url('UserAdmin/Usuario/getUsuarioById')."/$iduser>DETALHES</a></td>";

Na sua lista, encontrei outro endforeach; e na minha lista só montei dois loops. Antes de codificar no PHP, o problema é ver se você consegue o resultado que você quer dentro do MySQL. Caso afirmativo, aí sim você parte para o PHP. Se não der certo, você mostra os nomes das tabelas, e também a estrutura das tabelas com os respectivos relacionamentos.

Share this post


Link to post
Share on other sites
<?php
$destinos=[  
  [["id_cidade"=>3187,"id_inter"=>23548,"cid_nome"=>"Itajuba","cid_uf"=>"MG"],
   ["id_cidade"=>3574,"id_inter"=>23548,"cid_nome"=>"Poços de Caldas","cid_uf"=>"MG"],
   ["id_cidade"=>9414,"id_inter"=>23548,"cid_nome"=>"São José dos Campos","cid_uf"=>"SP"]],
  [["id_cidade"=>2120,"id_inter"=>19233,"cid_nome"=>"Goiania","cid_uf"=>"GO"]],
  [["id_cidade"=>5915,"id_inter"=>20189,"cid_nome"=>"Curitiba","cid_uf"=>"PR"],
   ["id_cidade"=>6505,"id_inter"=>20189,"cid_nome"=>"São José dos Pinhais","cid_uf"=>"PR"]]];
$usuarios=[
  ["nome"=>"Rodrigo Alves de Lima","id_inter"=>23548],
  ["nome"=>"Silvio Santos","id_inter"=>19233],
  ["nome"=>"Pedro de Lara","id_inter"=>20189]];
foreach($usuarios as $usuario):
  echo $usuario["nome"]." saiu de Brasília e foi para <br>";
  foreach($destinos as $destino):
    $filtro=$destino;
    foreach($filtro as $filtro):
      if($filtro['id_inter']==$usuario['id_inter']):
        echo $filtro['cid_nome']."<br>";
      endif;
    endforeach;
  endforeach;
  echo "---<br>";
endforeach;

 

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 ILR master
      Boa tarde, pessoal.
      Espero que todos estejam bem.
       
      Seguinte:
      Tenho a seguinte consulta:
       
      $usuarios= "SELECT * FROM usuarios";
      $query= mysqli_query($conexao, $usuarios) or die ("Usuário não encontrado");
      $usuario = mysqli_fetch_array($query);
       
      Quero pegar apenas o campo 'nome' da tabela 'usuarios' e colocar todos os resultados da seguinte forma:
       
      $nomes = array("Rafael", "João", "Maria", "Pedro", "Patricia", "Camila");
       
      Agradeço desde já.
      Abs
       
       
    • By babylon
      Olá galera tudo bem?
      Deixa eu perguntar, estava mexendo no meu site e queria adicionar em html essa tabela porem esta dando erro pois fica assim:
       

      Porem gostaria que ficasse assim:

      Segue o código da tabela:
      <center><table border="0">
          <tr>
      <td bgcolor="#0092df" width="24%"><a href="/categorias?ename=smartphones"><span style="font-size: 20px; color: #ffffff;"><b> <font color="#0092df">..</font>Bicicleta<br> <font color="#0092df">..</font>Track Bikes<br> <font color="#0092df">..</font>Aro 29 TKS</b></a></span><br><br><font size="5"><center><span style="background-color: #A1CD44">DE:</span></font> <br><font size="5"><s>R$ 1.999,99</center></font></s> </td><td><p><a href="/categorias?ename=smartphones"><img src="/static/img/itembicicleta.jpg"><br><font size="5"><center><span style="background-color: #A1CD44">COM - 60%:</span></font> <br><font size="5">1.199,99</font></center></a></td>
             <td><font color="#ffffff">....</font></td>
              <td bgcolor="#0092df" width="24%"><a href="/categorias?ename=smartphones"><span style="font-size: 20px; color: #ffffff;"><b> <font color="#0092df">..</font>Monitor 24"<br> <font color="#0092df">..</font>Samsung<font color="#0092df">aa.aa</font><br> <font color="#0092df">..</font>1ms 144hz</b></a></span></center></td><td><p><a href="/categorias?ename=smartphones"><img src="/static/img/itemmonitor.jpg"></a></td>
          </tr>
          </table></center>
      O que estaria errado, pois não sei como colocar nessa tabela outro fundo de outra cor, veja que usei td bgcolor="#0092df" para o azul escuro mas não sei como usaria pro "#e4f1fb" para o fundo ficar de azul claro em baixo bem como não ficou correto em altura o "DE:" com o "COM - 60%:".
      Bom é isso, obg.


    • By mateus.andriollo
      Existe uma forma de fazer um IF na select e comparar com Array de dados?
       
      algo como
       
      Select if( in_array(idCliente,'1,2,3,4,5')=true,'Tem','Não') ) as cliente Não consigo usar inner ou where pois esse array é algo q tem varias regras...
       
      Precisava saber se existe uma função assim em MySQL
    • By mateus.andriollo
      Existe uma forma de fazer um IF na select e comparar com Array de dados?
       
      algo como
       
      Select if( in_array(idCliente,'1,2,3,4,5')=true,'Tem','Não') ) as cliente Não consigo usar inner ou where pois esse resultado do array é algo q tem varias regras...
       
      Precisava saber se existe uma função assim em MySQL
    • By Giovanird
      Listo um array pelo foreach e preciso pegar os valores fora do foreach.
      Abaixo tenho o exemplo do foreach com os valores
       
      <?php foreach($turma $rsturma): if(($rsturma['id'] == 1){ echo $rsturma['nome']."<br>"; echo $rsturma['idade']."<br><br>"; } endforeach; //Dentro do foreach me retorna: Luis 13 Maria 12 Carlos 12 Matheus 14 Andréa 12 //Preciso pegar a posição e o valor desta lista $posicao1 = 1; $nome1 = Luis; $posicao2 = 2; $nome2 = Maria; $posicao3 = 3; $nome3 = Carlos; $posicao4 = 4; $nome4 = Matheus; $posicao5 = 5; $nome5 = Andréa;  
×

Important Information

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