VOM 0 Denunciar post Postado Janeiro 25, 2008 Galera estou fazendo uma tabela em PHP para que me mostre os aniversariantes do mês. O que eu fiz até agora foi isso: <?php $data = date("m"); $d = date("d"); if($data==01){ $mes=Janeiro; }elseif($data==02){ $mes=Fevereiro; }elseif($data==03){ $mes=Março; }elseif($data==04){ $mes=Abril; }elseif($data==05){ $mes=Maio; }elseif($data==06){ $mes=Junho; }elseif($data==07){ $mes=Julho; }elseif($data==08){ $mes=Agosto; }elseif($data==09){ $mes=Setembro; }elseif($data==10){ $mes=Outubro; }elseif($data==11){ $mes=Novembro; }elseif($data==12){ $mes=Dezembro; } ?> <img src="Imagem/niver.png" /> <table width="100%" border="0" align="center" cellpadding="0" cellspacing="0"bgcolor="#D7EBFF" class="tabela2"> <th class="tit" colspan="3"><?php echo"$mes"; ?></th> <tr> <td width="20%">Dia</td> <td width="65%">Nome</td> <td width="15%">E-mail</td> </tr> </table> <?php $sql = mysql_query("SELECT * FROM pessoa ORDER BY nome_pessoa ASC LIMIT 0,20 "); while ($linha = mysql_fetch_array($sql)) { $nome = $linha["nome_pessoa"]; $id = $linha["id_pessoa"]; $nascimento = $linha["nascimento"]; $niver = substr($nascimento,5,2); $dia = substr($nascimento,8,2); $nome = substr($nome,0,20).'...'; $d1 = $d-6; $d2 = $d+6; if($niver == $data){ ?> <table <?php if($dia>$d1 and $dia<$d2){ echo "class='red'";}else{echo "class='tabela'";} ?> width="100%" bordercolor="#999999" bgcolor="#D7EBFF" border="0"> <tr> <td width="15%" ><?php echo "$dia"; ?></td> <td width="70%"><?php echo "$nome"; ?></td> <td width="15%"><a href="email.php?id=<?php echo "$id";?>" ><img border="0" src="Imagem/Email Edit 2.png" /></a></td> </tr> </table> <?php }//fim do se }//fim do while Só que... pelo o que eu fiz neste código se o nome da pessoa for, por exemplo "Joãozinho da Silva Pedro dias Machado Filho Junior" ele simplesmente trunca o nome em 20 caracteres, imprimindo "Joãozinho da Silva Pedr..." Só que, eu acho que ficaria melhor pegando o Nome e o Sobrenome apenas, para evitar estourar o tamanho do campo, que é limitado. Ou seja, para este exemplo aí acima, precisava que ao invez de imprimir "Joãozinho da Silva Pedr..." ele mostrasse "Joãozinho Junior". Alguém sabe como resolver isso?? Obrigado.. Abs VOM Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Janeiro 25, 2008 Dê um explode(), separando pelo caractere espaço (" ") e pegue somente o primeiro índice e o último. use strftime() para imprimir o nome dos meses em português, sem precisar desse monte de elseif's. Compartilhar este post Link para o post Compartilhar em outros sites
visitante_php 0 Denunciar post Postado Janeiro 25, 2008 ou entao, trocar os if's por switch... Compartilhar este post Link para o post Compartilhar em outros sites
VOM 0 Denunciar post Postado Janeiro 25, 2008 Vlw pela ajuda, galera. Muito Obrigado. Problema resolvido. Abs VOM Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Janeiro 25, 2008 ou entao, trocar os if's por switch...nesse caso, não convém usar, pois é desnecessário, uma vez que pode-se usar strftime(). http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Você pode usar substr() e pegar somente a primeira letra dos nomes intermediários. Assim você abrevia os nomes do meio. :D Compartilhar este post Link para o post Compartilhar em outros sites
VOM 0 Denunciar post Postado Janeiro 25, 2008 ou entao, trocar os if's por switch...nesse caso, não convém usar, pois é desnecessário, uma vez que pode-se usar strftime(). http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Você pode usar substr() e pegar somente a primeira letra dos nomes intermediários. Assim você abrevia os nomes do meio. :D Segue o cód. abaixo se alguém precisar fazer isso. <?php //STRING $nome = "Joãozinho da Silva Pedro dias Machado Filho Junior"; //DIVIDINDO A STRING $parte = explode(" ", $nome); $n = sizeof($parte); $n2 = $n-1; //EXIBE for($i=0; $i<$n; $i++){ if($i==0 or $i==$n2){ echo " $parte[$i] "; }//fecha o se elseif(strlen($parte[$i])<3){ } else{ $nome = substr($parte[$i],0,1); $nome = strtoupper($nome); echo "$nome"; } }//FECHA FOR ?> Isto vai imprimir "Joaozinho SPDMF Junior" Compartilhar este post Link para o post Compartilhar em outros sites