Ir para conteúdo

POWERED BY:

Arquivado

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

allex_carvalho

[Resolvido] Limitar itens no while

Recommended Posts

Boa tarde.

Estou com uma query rodando quase certa. Onde é texto e a imagem maior de ua galeria exibe certo. Porém, nas miniaturas da galeria ela exibe tudo que tem cadastrado, não somente as fotos do último veiculo. Gostaria de exibir as miniaturas que correspondessem somente ao último cadastro. Segue abaixo o código:

 

$sql		= "SELECT estoque.idEstoque,
                              estoque.idModelo,
                              marca.nomeMarca,
                              modelo.modelo,
                              estoque.situacaoEstoque,
                              estoque.motorEstoque,
                              estoque.anoEstoque,
                              estoque.anoModEstoque,
                              estoque.precoEstoque,
                              estoque.pastaEstoque,
                              estoque.opEstoque,
                              estoque.obsEstoque,
						   estoque_img.imgEstoqueImg
						   FROM estoque INNER JOIN modelo ON estoque.idModelo = modelo.idModelo
						   INNER JOIN marca ON estoque.idMarca = marca.idMarca
						   INNER JOIN estoque_img ON estoque.idEstoque = estoque_img.idEstoque ORDER BY idEstoque DESC";
			$qr			= mysql_query($sql);
			$rs			= mysql_fetch_object($qr);
			?>
               <div id="gerfotos">
               <?php
						echo
						'<div class="fotosg">
							<img src="@img/upload/estoque/'.$rs->pastaEstoque.'/'.$rs->imgEstoqueImg.'" width="450" height="300" alt="" />
							</div><!--Fim da div Fotosg-->
							<div class="carouselfotos">
						<ul style="list-style:none;">';
						mysql_data_seek($qr, 0);
						while ($rs = mysql_fetch_object($qr)){
							echo '
							<li style="margin:8px 4px 0 5px; cursor:pointer;">
								<img src="@img/upload/estoque/'.$rs->pastaEstoque.'/'.$rs->imgEstoqueImg.'" width="140" height="81" />
							</li>';
						}

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deixa eu ver se entendi você quer que mostre o ultimo cadastro nessa tabela é isso?

 

Opa Vini_Aviva, boa tarde.

 

Tenho um carousel para exibir as miniaturas. Ele busca todas as imagens cadastradas, eu preciso que ele peguei somente as imagens referente ao ultimo id cadastrado na tabela estoque (campo "idEstoque").

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

$dinamico = mysql_num_rows($sql);
$limite = rand(1,$dinamico);
ORDER BY idEstoque DESC LIMIT $limite

 

o mysql_num_rows vai contar o total de registro em toda a tabela que você selecionou e o rand vai randomizar de 1 ao numero máximo de registros

Compartilhar este post


Link para o post
Compartilhar em outros sites

sugiro fazer duas consultas, 1 pagar o maior id, depois pegue as desse id

 

Fiz a outra consulta, no banco ela rodou certinho, filtrou somente para as 4 miniaturas cadastradas. Porém, não consegui ao menos imprimir o resultado no PHP. Poderia me ajudar? Segue abaixo a atualização do código:

 

$maiorId = "SELECT MAX (idEstoque) FROM estoque";
$qrMaiorId		= mysql_query($maiorId);
$rsMaiorId		= mysql_fetch_object($qrMaiorId);
while ($rsMaiorId = mysql_fetch_object($qrMaiorId)) {
   echo $rsMaiorId->idEstoque;
}
$sql			= "SELECT estoque.idEstoque, estoque.idModelo, marca.nomeMarca, modelo.modelo, estoque.situacaoEstoque, estoque.motorEstoque, estoque.anoEstoque, estoque.anoModEstoque, estoque.precoEstoque, estoque.pastaEstoque, estoque.opEstoque, estoque.obsEstoque, stoque_img.imgEstoqueImg
FROM estoque INNER JOIN modelo ON estoque.idModelo = modelo.idModelo
INNER JOIN marca ON estoque.idMarca = marca.idMarca
INNER JOIN estoque_img ON estoque.idEstoque = estoque_img.idEstoque
WHERE estoque.idEstoque =".$maiorIdEstoque;
$qr			= mysql_query($sql);
$rs			= mysql_fetch_object($qr);

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você está usando como argumento da cláusula WHERE da segunda query uma variável não definida.

 

Se você não viu nenhum erro do tipo Undefined variable... sugiro que ative e/ou aumente seus alertas de erro, adicionando no topo do primeiro script carregado:

 

ini_set( 'display_errors', TRUE );

error_reporting( E_ALL | E_STRICT );

Fora esse problema, você não precisa fazer uma query, passar pro PHP, pegar o valor e fazer outra query.

 

Basta usa uma subquery. Depois do sinal de igualdade da cláusula WHERE, você coloca no lugar da variável, entre parênteses, o SQL da primeira query.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você está usando como argumento da cláusula WHERE da segunda query uma variável não definida.

 

Se você não viu nenhum erro do tipo Undefined variable... sugiro que ative e/ou aumente seus alertas de erro, adicionando no topo do primeiro script carregado:

 

ini_set( 'display_errors', TRUE );

error_reporting( E_ALL | E_STRICT );

Fora esse problema, você não precisa fazer uma query, passar pro PHP, pegar o valor e fazer outra query.

 

Basta usa uma subquery. Depois do sinal de igualdade da cláusula WHERE, você coloca no lugar da variável, entre parênteses, o SQL da primeira query.

 

Bom dia Bruno.

 

Fiz a subquery e me retornou isso:

WHERE estoque.idEstoque = (SELECT MAX (idEstoque) FROM estoque)

 

[Err] 1630 - FUNCTION base_autovalle.MAX does not exist. Check the 'Function Name Parsing and Resolution' section in the Reference Manual

 

Quando me referi a não imprimir nada, é porque rodando a query no banco ela roda, porém, no echo ela não imprimi nada.

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é exatamente sobre a função MAX(), mas se aplica ao seu caso, veja.

 

Pode parecer ridículo, mas é bem plausível se parar para analisar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz alguns testes acima com a função MAX e fazer a subquery, funcionou perfeitamente. O problema que tive anteriormente foi com um espaço MAX () e o correto é junto MAX().

 

Problema resolvido, obrigado.

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.