ZUCOLLI 1 Denunciar post Postado Novembro 23, 2011 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 Compartilhar este post Link para o post Compartilhar em outros sites
Thales Caricati 3 Denunciar post Postado Novembro 23, 2011 Você pode tentar: if( isset( $row['foto'] ) && file_exists( $row['foto'] ) ){ $html .= "<li class='foto'><img src='".$row['foto']."'/></li>" } else{ $html .= "<li class='foto'><img src='images/foto-padrao.jpg'/></li>" } Compartilhar este post Link para o post Compartilhar em outros sites
guga_programador 0 Denunciar post Postado Novembro 23, 2011 no campo "foto" você coloca o caminho também? ou só o nome do arquivo? Compartilhar este post Link para o post Compartilhar em outros sites
ZUCOLLI 1 Denunciar post Postado Novembro 23, 2011 Bom dia.. O caminho tambem: images/foto.jpg ZUCOLLI Compartilhar este post Link para o post Compartilhar em outros sites
Txai 1 Denunciar post Postado Novembro 23, 2011 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 Compartilhar este post Link para o post Compartilhar em outros sites
Marcos Barbosa 1 Denunciar post Postado Novembro 23, 2011 Não sei se altera muita coisa, mas tenta colocar empty no lugar do isset. Compartilhar este post Link para o post Compartilhar em outros sites
ZUCOLLI 1 Denunciar post Postado Novembro 23, 2011 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 Compartilhar este post Link para o post Compartilhar em outros sites
angelorubin 142 Denunciar post Postado Novembro 23, 2011 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. Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Novembro 23, 2011 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. Compartilhar este post Link para o post Compartilhar em outros sites
Marcos Barbosa 1 Denunciar post Postado Novembro 23, 2011 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. Compartilhar este post Link para o post Compartilhar em outros sites
ZUCOLLI 1 Denunciar post Postado Novembro 23, 2011 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 Compartilhar este post Link para o post Compartilhar em outros sites
Fernando C 128 Denunciar post Postado Novembro 24, 2011 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 Compartilhar este post Link para o post Compartilhar em outros sites
ZUCOLLI 1 Denunciar post Postado Novembro 24, 2011 Boa noite... De forma alguma dá certo... Não faz sentido, se o LIMIT está para 3 e ele exibe 5... ZUCOLLI Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Novembro 24, 2011 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: 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 Lembrando que, assim como nos arrays, do PHP e de outras linguagens, o offset inicia em zero. Compartilhar este post Link para o post Compartilhar em outros sites
ZUCOLLI 1 Denunciar post Postado Novembro 24, 2011 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 Compartilhar este post Link para o post Compartilhar em outros sites
angelorubin 142 Denunciar post Postado Novembro 24, 2011 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. Compartilhar este post Link para o post Compartilhar em outros sites
Fernando C 128 Denunciar post Postado Novembro 25, 2011 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 Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Novembro 25, 2011 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. Compartilhar este post Link para o post Compartilhar em outros sites
angelorubin 142 Denunciar post Postado Novembro 25, 2011 Bom dia, Aqui também rodou a partir do terceiro registro com LIMIT 2,3. Veja os testes: Banco: Sql: $sql = "SELECT caminho FROM imagem LIMIT 2,3"; Exibindo Imagens: Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Novembro 25, 2011 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. Compartilhar este post Link para o post Compartilhar em outros sites