Ir para conteúdo
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

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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;

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por 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
       
       
    • Por 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.


    • Por 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
    • Por 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
    • Por 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;  
×

Informação importante

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