Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa noite pessoal...
Acho que é uma dúvida irrelevante para alguns, mas quando eu tento várias vezes e não consigo...
Se no banco de dados na coluna FOTO existe algo (caminho da imagem) ele coloca a imagem, se não tem nada ou seja é vazio ele coloca uma imagem padrão.
O que estou fazendo de errado, sendo que o PHP só está trazendo a foto do IF, do ELSE não.
if (isset($row['foto'])) {$html .= "<li class='foto'><img src='".$row['foto']."'/></li>";}
else { $html .= "<li class='foto'><img src='images/foto-padrao.jpg'/></li>"; };
Código inteiro
<body>
<div id="geral">
<div id="cima"><h1 id="logo_perfil">Pefil <span class="nuato">NuAto</span></h1></div>
<div id="esquerda">texto</div>
<div id="direita">
<?php
require_once('coneccoes/descricoes_db.php');
$strSql = "SELECT * FROM usuarios ORDER BY RAND() LIMIT 3";
$consulta = mysql_query($strSql) or die (mysql_error());
while ($row = mysql_fetch_assoc($consulta)) {
$html .= "<ul class='usuario'>";
if (isset($row['foto'])) {$html .= "<li class='foto'><img src='".$row['foto']."'/></li>";}
else { $html .= "<li class='foto'><img src='images/foto-padrao.jpg'/></li>"; };
$html .= "<li class='nome'> ".$row['nome']. "</li>";
$html .= "<li class='funcao'> ".$row['grupo']. "</li>";
$html .= "<li class='tel'>Telefone: ". $row['tel_casa'] ."</li>";
$html .= "<li class='tel'>Celular: ". $row['tel_cel'] ."</li>";
$html .= "</ul>";
echo $html;
}
mysql_free_result($consulta);
?>
</div>
<div id="rodape"></div>
</div>
</body>
Outra coisa e porque esta linha me devolve 5 registros e não 4, se o LIMIT está como 3?
$strSql = "SELECT * FROM usuarios ORDER BY RAND() LIMIT 3";
Obrigado
ZUCOLLI
no campo "foto" você coloca o caminho também? ou só o nome do arquivo?
Bom dia..
O caminho tambem: images/foto.jpg
ZUCOLLI
eu acho que é o caso do "null" do banco ser diferente do "null" do php, da um var_dump($row) e ve se não vai vir uns campos com string(7) e valor " "
se for isso, basta fazer uma variável receber um trim($row['campo_da_foto']) antes de testar o isset();
é uma possibilidade, mas de qualquer jeito o var_dump vai te dizer alguma coisa ja
Não sei se altera muita coisa, mas tenta colocar empty no lugar do isset.
Bom dia...
Trocando por EMPTY ficou ao contrário, onde é a foto certa ele trouxe a foto padrão e as outras ele continua não trazendo (quando deveria ser a foto padrão).
Obrigado.
ZUCOLLI
Bom dia,
Veja se algo assim ajuda:
PHP
<ul>
<?php
require_once('coneccoes/descricoes_db.php');
$strSql = "SELECT * FROM imagem ORDER BY RAND() LIMIT 0,3";
$consulta = mysql_query($strSql) or die (mysql_error());
while ($row = mysql_fetch_array($consulta)) {
if(!$row["caminho"]){
?>
<li><img src="img/em-breve.png" /></li>
<?php
}
else{
?>
<li><img src="<?php echo $row["caminho"]; ?>" /></li>
<?php
}
}
mysql_free_result($consulta);
?>
</ul>
<?php
/*
require_once('coneccoes/descricoes_db.php');
$strSql = "SELECT * FROM usuarios ORDER BY RAND() LIMIT 3";
$html .= "<ul class='usuario'>";
if (isset($row['caminho'])) {$html .= "<li class='foto'><img src='".$row['caminho']."'/></li>";}
else { $html .= "<li class='foto'><img src='img/em-breve.png'/></li>"; };
$html .= "<li class='nome'> ".$row['id']. "</li>";
$html .= "<li class='funcao'> ".$row['id']. "</li>";
$html .= "<li class='tel'>Telefone: ". $row['id'] ."</li>";
$html .= "<li class='tel'>Celular: ". $row['id'] ."</li>";
$html .= "</ul>";
echo $html;
*/
?>
DICA: A cláusula LIMIT precisa ter inicio e fim.
Exemplo:
SQL
LIMIT 0,3
Espero que ajude.
>
Bom dia...
Trocando por EMPTY ficou ao contrário, onde é a foto certa ele trouxe a foto padrão e as outras ele continua não trazendo (quando deveria ser a foto padrão).
Obrigado.
ZUCOLLI
Se ficou ao contrário, inverta o operador:
printf( '<img src="%s" alt="Profile" />',
( ! empty( $variável_da_foto ) ? $variável_da_foto : 'path/da/imagem/padrão.jpg' ) );
Se sabe ou não, isso é um operador condicional ternário. A sintaxe é aseguinte:
( TESTE_LOGICO ? CONDIÇÃO_SE_VERDADEIRO : CONDIÇÃO_SE_FALSO )
Nosso teste é verificar se o campo NÃO está vazio.
Se NÃO ( ! ) estiver (TRUE), usamos o valor presente. Se estiver (FALSE), usamos a imagem padrão.
Tente inverter, o negativo dele é !empty.
>
Bom dia...
Trocando por EMPTY ficou ao contrário, onde é a foto certa ele trouxe a foto padrão e as outras ele continua não trazendo (quando deveria ser a foto padrão).
Obrigado.
ZUCOLLI
outra coisa q você pode fazer é testar se a condição está correta (se ele está entrando na condição), assim:
if (condicao1){
echo "condição 1";
} else {
echo "outra condição";
}
Bem, se ele estiver entrando nas duas condições certinho, você deve estar colocando ou o caminho ou o nome da foto errada, verifique isso.
Boa tarde a todos...
Deu certo da seguinte forma... alterando para !EMPTY
if (!empty($row['foto'])) {$html .= "<li class='foto'><img src='".$row['foto']."'/></li>";}
else { $html .= "<li class='foto'><img src='images/foto-padrao.jpg'/></li>"; };
Já a consulta com LIMIT ainda não dá certo... alguém pode me ajudar? Não sei se está na ordem errada ou se a consulta não está feita corretamente. Está trazendo 5 registros e só quero 4, e assim mesmo na tabela só tem 3 registros... Dá para trazer só os 4 registros que eu preciso e se tiver menos que 4 só trazer quantos existir?
$strSql = "SELECT * FROM usuarios ORDER BY RAND() LIMIT 0,3";
Obrigado
ZUCOLLI
olha.. o tema "LIMIT" é MySQL.. n tem mt a ver c/ PHP, ok? enfim..
o limit aceita 1 ou 2 parametros (ou argumentos);
se você usar apenas 1 (ex: limit 3), serão retornados apenas 3 registros (ou 3 linhas).
se você usar os 2, o 1º (que é opcional) passa a ser o nº d linhas q você deseja ocultar..
e o 2º o nº maximo de linhas que você deseja exibir.
ex: digamos que você deseja ordenar seus registros pela data + recente, mas não exibir o registro mais recente, usando por exemplo order by data desc
usando limit 1,1 vai te retornar o penultimo.. e apenas esse registro;
falando assim fica meio confuso, mas veja 1 exemplo concreto aqui:
http://www.canaldev.com.br/topico/1923-tutorial-destaque-o-registro-mais-recente-com-dreamweaver/
assim:
Está trazendo 5 registros (...) e assim mesmo na tabela só tem 3 registros
tem certeza?? mas na verdade, não importa quantos registros a tabela tem... se a tabela só tem 3 registros, pode por limit 500000000; ele vai t retornar todos os registros até o máximo de 500000000, ok?
e só quero 4
então tente limit 4
Boa noite...
De forma alguma dá certo...
Não faz sentido, se o LIMIT está para 3 e ele exibe 5...
ZUCOLLI
se você usar os 2, o 1º (que é opcional) passa a ser o nº d linhas q você deseja ocultar..
Não é bem isso que diz a documentação.
Se você usar dois argumentos na cláusula LIMIT, o primeiro define o offset e o segundo o número de registros a serem retornados.
Por offset, já que não temos uma tradução plausível para o termo, temos como um delimitador para que a limitação seja aplicada. Ex:
Uma tabela com 10 registros:
Usar LIMIT 2,3 retornará:
Lembrando que, assim como nos arrays, do PHP e de outras linguagens, o offset inicia em zero.
Bom dia
Eu entendi, porém se eu usar apenas o 1° valor vai me trazer a quantidade de linhas desejada a contar da primeira linha do resultado da busca certo?
Não está acontecendo.
Se coloco LIMIT 2 ele traz 3 registros, se coloco LIMIT 3 para trazer o resultado que preciso que é 4 registros ele traz 6...
é isso. Erro
Zucolli
Bom dia,
Testei conforme postado aqui, e esta rodando certinho tanto a cláusula rand quanto o limit, honestamente não consigo ver onde você esta errando.
Uma tabela com 10 registros:
* Nome 1
* Nome 2
* Nome 3
* Nome 4
* Nome 5
* Nome 6
* Nome 7
* Nome 8
* Nome 9
* Nome 10
Usar LIMIT 2,3 retornará:
* Nome 4
* Nome 5
* Nome 6
Bruno.. na boa.. fiz esse teste.. comigo n rolou n.. rolou normal:
* Nome 3
* Nome 4
* Nome 5
mas n usei nenhum order by.. seria isso??
agora fiquei curioso, se puder me explicar melhor..
e desde já agradeço, claro..
obs: se p/ acaso você quiser t passo 1 print da tela
Não faz sentido. Manda duas screenshots uma antes do LIMIT, que mostre uns cinco registros mais ou menos e outra depois dele.
Eu testei aqui antes de responder, já que eu nunca usei um LIMIT com offset, e funcionou certinho, sem ORDER nem nada.
Bom dia,
Aqui também rodou a partir do terceiro registro com LIMIT 2,3.
Veja os testes:
Banco:
/applications/core/interface/imageproxy/imageproxy.php?img=http://img193.imageshack.us/img193/4364/bancoe.jpg&key=ba58208e7217a4d01c1c9e5bc469103d353a7cdf8f05f37b3d84764943f04ea2" alt="bancoe.jpg" />
Sql:
$sql = "SELECT caminho FROM imagem LIMIT 2,3";
Exibindo Imagens:
/applications/core/interface/imageproxy/imageproxy.php?img=http://img263.imageshack.us/img263/5357/listandoimagensbanco.jpg&key=5fee9f05167498fd55fb37c923f431443ae04788df62f087fa195b796778e1c6" alt="listandoimagensbanco.jpg" />
Igual à primeira imagem, poste uma depois de usar o LIMIT.
Como eu não sei qual o nome de cada imagem presente na segunda, fica menos fácil de identificar.
Ms numprimeiro momento parece estar correto.
Não entendi nem o que você quer, nem se é para mim a dúvida sua Bruno.
Se você esta se referindo aos campos em branco no banco, eles são preenchidos com uma imagem em-breve.png qualquer, o que não interfere em nada ao meu ver em relação ao teste com o LIMIT 2,3.
Troquei as bolas, angelo.
Quem está com dúvida é o Fernando, que disse que até tirava um print. Daí você veio com o seu e eu achei que fosse ele. :P
>
Troquei as bolas, angelo.
Quem está com dúvida é o Fernando, que disse que até tirava um print. Daí você veio com o seu e eu achei que fosse ele. :P
Ah beleza, sem problema ! :joia:
OLá.. então, como prometido algumas prints:
/applications/core/interface/imageproxy/imageproxy.php?img=http://img809.imageshack.us/img809/8922/testlimit6.jpg&key=fb84c52ba7c0d800c26356355896cea14f70d7a027a501e0487d9adcac9ee655" alt="testlimit6.jpg" />/applications/core/interface/imageproxy/imageproxy.php?img=http://img72.imageshack.us/img72/4821/testlimit1.jpg&key=a67989efbb1449d27a648986b42899b511b57ff2a3b627e9f7d77827cb4409c1" alt="testlimit1.jpg" />
/applications/core/interface/imageproxy/imageproxy.php?img=http://img192.imageshack.us/img192/1522/testlimit2.jpg&key=b716bb92a6d83be1dfe7abb1afc272a3f8c5cbdd0beb53c06afbab81ba0c698b" alt="testlimit2.jpg" />
/applications/core/interface/imageproxy/imageproxy.php?img=http://img43.imageshack.us/img43/9989/testlimit3.jpg&key=6189d77841a08b6bb32bc684cde708ad8a276f5126a7e84cf21a2bda90a7b9fe" alt="testlimit3.jpg" />
Oras, mas está tudo certo.
Qual a dúvida então?
Bom dia Bruno...
No meu caso no MySql dá certo (/applications/core/interface/imageproxy/imageproxy.php?img=http://www.nuatocomunicacao.com.br/descricoes/images/mysql.png&key=6590b70fcc3283d0f9ca9acff3fe60e4530a70d286b8a64ffa5870788212d7d3" alt="mysql.png" />)
Só que no PHP me tráz 6 como resultado.
ZUCOLLI
Você pode tentar:
if( isset( $row['foto'] ) && file_exists( $row['foto'] ) ){
else{