Ir para conteúdo

POWERED BY:

Arquivado

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

miqueiasrafael

while e select all

Recommended Posts

Olá amigos, estou com dúvida em repetição de dados:

 

Fiz um script PHP utilizando while para repetir alguns processos, vejam abaixo o código.

 

 

 
 <?php
 $stone = mysql_query("SELECT * FROM form_servicos ORDER BY serv_id DESC, serv_titulo, serv_descricao, serv_img LIMIT 10");

 while (count($serv = mysql_fetch_array($stone)) and ($stonelist = mysql_fetch_object($stone))) {
 ?>

<div class="teste"> Título </div>
<div class="teste"> Foto </div>
<div class="teste"> Descrição </div>
                             
 <?php } ?>

 

As dúvidas:

1ª - Porque ao fazer esse script ele não mostra todos os registros da tabela form_servicos?

2ª - Gostaria de saber se a estrutura para tratar o looping no while está correta, pois está funcionando, mas não 100%.

 

Desde já obrigado a todos!

Compartilhar este post


Link para o post
Compartilhar em outros sites

1. remova o limite "LIMIT 10"

 

 

2. ????

 

while (count($serv = mysql_fetch_array($stone)) and ($stonelist = mysql_fetch_object($stone))) {

onde viu isso ?

2.1 está criando um loop infinito..

2.2 quer que retorno como array ou objeto ? decida..

 

 

 

obs:

 

while (count($serv = mysql_fetch_array($stone)) and ($stonelist = mysql_fetch_object($stone))) {
?>

<div class="teste"> Título </div>
<div class="teste"> Foto </div>
<div class="teste"> Descrição </div>
                            
<?php } ?>

 

os labels deveriam estar fora do laço..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá hinom, os labels é o resultado que quero repetir no while, porém preciso do resultado mostrando na tela a medida que vou cadastrando no banco, entende?

 

Até fiz assim como mostra abaixo, mas o resultado não foi como esperava em mostrar todos os registros na tela, LIMITANDO em 10 registros, onde tendo 15 registros ele mostra 7 ou 8... aí surgiu essa dúvida estaria errado? mas está funcionando... não como quero mas está funcionando!

 

 

<?php
$stone = mysql_query("SELECT * FROM form_servicos ORDER BY serv_id DESC, serv_titulo, serv_descricao, serv_img LIMIT 10");
$stonelist = mysql_fetch_object($stone)

while (count($serv = mysql_fetch_array($stone) and $stonelist)) { ?>

 <div class="teste"> Título </div> 
 <div class="teste"> Foto </div> 
 <div class="teste"> Descrição </div>   
                         
<?php } ?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

2.2 quer que retorno como array ou objeto ? decida..

É como o hinom falou, decida se quer utilizar array ou objeto, neste caso, se optasse por notação de objeto, ficaria assim:

while($stonelist = mysql_fetch_object($stone)) { ?>
...

Apenas isso e nada mais...

 

Ahh!!! E remove essa segunda linha:

 

$stone = mysql_query("SELECT * FROM form_servicos ORDER BY serv_id DESC, serv_titulo, serv_descricao, serv_img LIMIT 10");
$stonelist = mysql_fetch_object($stone)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá hinom, os labels é o resultado que quero repetir no while, porém preciso do resultado mostrando na tela a medida que vou cadastrando no banco, entende?

ahh.. saquei.. vc colocou ali como exemplo.

 

dá uma olhada no post #4 sobre como fazer a iteração while( ... )

 

sobre retornar resultados diferentes do que há no BD.. talvez devido a essa confusão que fizeste aí no laço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Paulo olha aí o erro que gerou quando fiz da forma que você mencionou acima:

Fatal error: Cannot use object of type stdClass as array
Nota: vale lembrar que estou mostrando imagens do banco e atribuindo botão excluir pra cada chamada do loop por ID

 

ahh.. saquei.. vc colocou ali como exemplo.

 

dá uma olhada no post #4 sobre como fazer a iteração while( ... )

 

sobre retornar resultados diferentes do que há no BD.. talvez devido a essa confusão que fizeste aí no laço

Hum

 

Paulo, mudando o while para ARRAY olha a mensagem que aparece nessa sequencia!

$sql_client = mysql_query("SELECT * FROM form_client ORDER BY client_id DESC");
               
 while($stonelist = mysql_fetch_array($sql_client)) {  echo ""; }

Mensagem na tela:

Notice: Trying to get property of non-object

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você deve estar utilizando o mysql_fetch_array e dentro do while tentando acessar como: $var->propriedade, como vc esta utilizando uma função para array, utilize $var['propriedade']

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você deve estar utilizando o mysql_fetch_array e dentro do while tentando acessar como: $var->propriedade, como vc esta utilizando uma função para array, utilize $var['propriedade']

 

Na verdade são duas situações dentro desse while um object e um array, foi por isso que utilizei os dois no parâmetro principal do while

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui galera, obrigado a todos! vou postar o como ficou...

 

 <?php
            // Exibindo todos os registros na tela
            $sql = mysql_query("SELECT * FROM tabela ORDER BY id DESC");

            while ($stonelist = mysql_fetch_object($sql)) {

                echo "<ul><li>";
                // Exibimos a foto
                echo "<img src='../public/imagens/logo_clientes/" . $stonelist->imagens . "'  />";

                // bto excluir
                echo "<a href='../delete/delClient.php?&id=" . $stonelist->client_id . "'> <img src='../imagens/bto_excluir-lente.png' title='Excluir registro' class='btoExcluir'/></a>";

                 echo "</li></ul>";
            }
         
?>

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.