Ir para conteúdo

POWERED BY:

Arquivado

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

Hamurabi

Consulta no banco dentro de um laço

Recommended Posts

Olá galera,

 

Tenho esse código:

$query = mysql_query("SELECT contatos FROM atleta WHERE idAtleta = '1'") or DIE (mysql_error()); 
                    
                    $nickname = mysql_result($query, 0);
                    $nick = explode(",", $nickname) ;                   
                    $tamanho = count($nick);
                    
                    echo '<table id="table_seguindo">';
                    for ($i =0; $i<$tamanho; $i++){
                        echo '<tr>';
                        $buscaImagem = mysql_query("SELECT avatar FROM atleta WHERE nickname = '$nick[$i]'") or DIE (mysql_error());
                        $caminho = mysql_result($buscaImagem, 0);                        
                        echo '<td><img src="'. $caminho . '"/></td>';  
                        echo '<td>' . $nick[$i] . $i . '</td>';
                        echo '</tr>';                         
                    } 
                    echo '</table>';

 

Em suma, a cada giro do for ele é pra pegar uma imagem e colocar numa tabela juntamente com o nick de cada contato. Sendo que no meio disso ele exibe esse erro:

Warning: mysql_result(): Unable to jump to row 0 on MySQL result index 7

 

E só exibe a primeira imagem, os nicks vem normalmente só que da segunda imagem em diante não aparecem mais. Alguem pode me dar uma ajuda com esse erro?

 

Desde já agradeço.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema com esse warning foi resolvido, só que apareceu um outro erro. =/

 

Não sei se é isso mesmo, estou fazendo testes, mas ele só faz a primeira consulta do banco, as outras ele nao faz mais. Ai como tá dentro de um laço ele repete o valor da consulta pra todos os outros.

 

if ($nick[0] != ''){
                        echo '<table id="table_seguindo">';
                        for ($i =0; $i<$tamanho; $i++){
                            echo '<tr>';
                            $buscaImagem = mysql_query("SELECT avatar FROM atleta WHERE nickname = '$nick[$i]'") or DIE (mysql_error());
                            while ($caminho = mysql_fetch_array($buscaImagem)){
                                $foto = $caminho['avatar'];
                                echo $foto . ' ' . $nick[$i];
                            }
                            echo '<td><img src="'. $foto . '"/></td>';  
                            echo '<td>' . $nick[$i] . '</td>';
                            echo '</tr>';                         
                        } 
                        echo '</table>';
                    }

 

 

Alguém poderia me ajudar??? Até agora nao consegui entender o que estar causando esse erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara , pq vc não faz tudo junto??

$sql = "select * from atleta where idAtleta=1";

$query = mysql_query($sql) or die (mysql_error());

echo "<table>";

while($row = mysql_fetch_assoc($sql)){

echo "<tr>";

echo "<td>";

echo row['avatar'];

echo "</td>";

echo "<td>";

echo row['contatos'];

echo "</td>";

echo "</tr>";

}

echo "</table>";

Ve se assim resolve.. eu não testei mas não tem erro

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara , pq vc não faz tudo junto??

$sql = "select * from atleta where idAtleta=1";

$query = mysql_query($sql) or die (mysql_error());

echo "<table>";

while($row = mysql_fetch_assoc($sql)){

echo "<tr>";

echo "<td>";

echo row['avatar'];

echo "</td>";

echo "<td>";

echo row['contatos'];

echo "</td>";

echo "</tr>";

}

echo "</table>";

Ve se assim resolve.. eu não testei mas não tem erro

 

 

Cara assim não resolveu. Continuou do mesmo jeito.

 

 

 

 

 

 

Qual o erro que está aperecendo? Quando estiver usando array vc deve utilizar o foreach.

 

O problema não é um erro que aparece, o negócio é que a primeira consulta é feita, mas da segunda em diante não é executada. Por exemplo, de 3 valores retornados na consulta ele faz assim: retorna o primeiro e os outros são repetições do primeiro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

$caminho = $row['avatar'];

 

coloca dentro do laço, e faz um laço só..

Não foi cara. =S

 

 

 

não poderia usar join ?

Como eu poderia usar o Join?? não sei como usa-lo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera pra ver se ajuda, quando executo aquele código dá essa saída. Cada um dos usuários listados tem um avatar diferente, mas como mostra a linha de teste lá em cima ele só pega o $caminho da primeira consulta, no caso, resulta naquele avatar.Ele mostra o do Luan pq ele eh o primeiro se fosse o 'hamurabiaraujo' a minha imagem seria repetida.

 

600736_422338241179363_802000764_n.jpg



tira o id do atleta se for pra listar todos..

select * from atleta;

 

Erick é porque nesse caso eu estou querendo pegar o campo 'avatar' do usuário de id 'x'. Vai ser tipo assim, eu quero pegar o avatar dos meus seguidores.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, pra fazer uma lista, cada um com sua imagem, faz assim:

    $sql = "select * from atleta";
     
    $query = mysql_query($sql) or die (mysql_error());
     
    echo "<table>";
     
    while($row = mysql_fetch_assoc($sql)){
     
    echo "<tr>";
     
    echo "<td>";
     
    $foto = $row['avatar'];//supondo que a foto seja o avatar
echo "<img src='".$foto."'>";
     
    echo "</td>";
     
    echo "<td>";
     
    echo $row['contatos'];// supondo que o nome seja contatos
     
    echo "</td>";
     
    echo "</tr>";
     
    }
     
    echo "</table>";


então tem duas tabelas, uma onde vc tem os seguidores, com o id do seguido e o id dos seguidores.. certo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu tenho uma tabela atleta, que tem os campos do tipo texto seguindo e seguidores. Neles vão ter os nicks de respectivos, ai eu uso o explode para separá-los e pô-los em um vetor. Ai eu faço uma consulta pegando o avatar de cada nick que tem no vetor. Entendeu ?

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

vish....

Separa isso numa tabela, pq se o cara mudar o nick dele um dia vai dar pau..

Cria uma tabela de seguidores.. assim:

 

id int 10 AI not null

idSeguido int 10 not null

idSeguidor int 10 not null

 

depois vc faz o select assim:

$sql = "SELECT s.*, a.idAtleta, a.contatos, a.avatar FROM seguidores s INNER JOIN atletas a ON s.idSeguidores = a.idAtleta WHERE s.idSeguido= 1";
$query = mysql_query($sql) or die ('Erro: ' . mysql_error());


    echo "<table>";
     
    while($row = mysql_fetch_assoc($sql)){
     
    echo "<tr>";
     
    echo "<td>";
     
    $foto = $row['avatar'];//supondo que a foto seja o avatar
echo "<img src='".$foto."'>";
     
    echo "</td>";
     
    echo "<td>";
     
    echo $row['contatos'];// supondo que o nome seja contatos
     
    echo "</td>";
     
    echo "</tr>";
     
    }
     
    echo "</table>";

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara é verdade, eu estarei viajando daqui a pouco, assim que puder retorno ao tópico. Mas vc falou uma coisa que eu não tinha pensado. Irei fazer e darei retorno.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

vish....

Separa isso numa tabela, pq se o cara mudar o nick dele um dia vai dar pau..

Cria uma tabela de seguidores.. assim:

 

id int 10 AI not null

idSeguido int 10 not null

idSeguidor int 10 not null

 

depois vc faz o select assim:

$sql = "SELECT s.*, a.idAtleta, a.contatos, a.avatar FROM seguidores s INNER JOIN atletas a ON s.idSeguidores = a.idAtleta WHERE s.idSeguido= 1";
$query = mysql_query($sql) or die ('Erro: ' . mysql_error());


    echo "<table>";
     
    while($row = mysql_fetch_assoc($sql)){
     
    echo "<tr>";
     
    echo "<td>";
     
    $foto = $row['avatar'];//supondo que a foto seja o avatar
echo "<img src='".$foto."'>";
     
    echo "</td>";
     
    echo "<td>";
     
    echo $row['contatos'];// supondo que o nome seja contatos
     
    echo "</td>";
     
    echo "</tr>";
     
    }
     
    echo "</table>";

 

 

Erick eu consegui fazer de uma maneira mais simples, sem precisar fazer "tantas" mudanças no banco. Não sei o que causava o erro, mas o que mudei foi o seguinte:

Botei tudo dentro de um "foreach" e deixei de fazer a pesquisa pelo nickname e passei a fazer pelo ID, o que resolve aquele erro que vc me alertou.

 

Muito obrigado pela ajuda galera!

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.