wonderrow 0 Denunciar post Postado Fevereiro 19, 2009 Opa pessoal boa tarde! Resolvi criar um rss para o site em que sou dono.. Pretendo criar algo dinâmico, atualizado a cada nova notícia. Tentei de várias formas mas o RSS parece estar inválido, será porque? Vejam o resultado do feed validator: http://feedvalidator.org/check.cgi?url=htt...l.com%2Frss.php E agora o código do RSS: <?php // Vamos começar criando a conexão com o banco de dados, para podermos pegar as noticias $conexao = mysql_connect("xxx", "xxx", "xxx"); // Agora vamos selecionar a base de dados na qual as informações serão retiradas mysql_select_db("xxx"); //Após conectar com o banco de dados, agora vamos umsa a linguagem SQL para podermos selecionar as informações da tabela $resultado = mysql_query("SELECT * FROM gg_noticias ORDER BY nid DESC"); //Você pode utilizar uma instrução SQL mais completa, para ornedar e listar determinada quanitdade de informações // Inserimos o cabeçalho XML na página header("Content-type: application/xml"); // Inserimos o cabeçalho RSS na página, especificando a versão e a codificação echo "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>"; ?> <rss version="2.0"> <channel> <title>GamesGeral.com / Últimas Notícias</title> <link>http://www.gamesgeral.com</link> <description>A nova geração dos games. O melhor conteúdo relacionado a games, consoles, reviews, previews, notícias, galerias e muito mais. Venha conferir!</description> <language>pt-br</language> <copyright>GamesGeral.com - Todos os direitos reservados.</copyright> <?php while($row = mysql_fetch_array($resultado)){ echo "<item>"; echo "<title>".$row['titulo']."</title>"; echo "<description>".$row['game_name']."</description>"; echo "<link>http://www.gamesgeral.com/index.php?s=vnew&nid={$row['nid']}</link>"; echo "</item>"; } ?> </channel> </rss> O erro estaria nessa parte: echo "<item>"; echo "<title>".$row['titulo']."</title>"; echo "<description>".$row['game_name']."</description>"; echo "<link>http://www.gamesgeral.com/index.php?s=vnew&nid={$row['nid']}</link>"; echo "</item>"; Mais precisamente, nessa linha: echo "<link>http://www.gamesgeral.com/index.php?s=vnew&nid={$row['nid']}</link>"; Se eu a deleto consigo usar o Feed normalmente, mas ela é a responsável para apontar o link da notícia, por isso não posso deletá-la. Link do RSS: www.gamesgeral.com/rss.php Por favor, me ajudem! Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Fevereiro 19, 2009 Acho que é porque o $row['nid'] está sem valor. testa o feed assim: echo "<link>http://www.gamesgeral.com/index.php?s=vnew</link>"; e depois debuga essa coluna ai... Compartilhar este post Link para o post Compartilhar em outros sites
wonderrow 0 Denunciar post Postado Fevereiro 19, 2009 mas isso não daria certo meu amigo, o $row['nid'] corresponde a ID da notícia. Se colocasse isso que você especificou daria 404, não? edit: atualizei como falou, e todas as noticias apontavam para um mesmo link (http://www.gamesgeral.com/index.php?s=vnew), e não para o link da notícia. acredito que o problema está especificamente na parte "$row['nid']" Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Fevereiro 19, 2009 Sim, o problema está ai sim. Veja que no link do validador de RSS que você mandou.. todos os nid estavam SEM VALOR!! faz apenas isso aqui para vermos oq retorna: <?php while($row = mysql_fetch_array($resultado)){ echo "<link>http://www.gamesgeral.com/index.php?s=vnew&nid=".$row['nid']."</link>\n"; } ?> Essa coluna, realmente existe ne!? case-sensitive e tal.. ? Compartilhar este post Link para o post Compartilhar em outros sites
wonderrow 0 Denunciar post Postado Fevereiro 19, 2009 sou meio que iniciante em programação e PHP, mas sim, esse campo existe na tabela gg_noticias fiz isso que você falou e as notícias não são mais mostradas, sumiram novamente! Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Fevereiro 20, 2009 Tá.. mas a idéia era ver o nid aparecer... só isolei o trecho do código para ficar melhor para ver.. retorna o resto agora. <?php while($row = mysql_fetch_array($resultado)){ echo "<item>\n"; echo "<title>".$row['titulo']."</title>\n"; echo "<description>".$row['game_name']."</description>\n"; echo "<link>http://www.gamesgeral.com/index.php?s=vnew&nid=".$row['nid']."</link>\n"; echo "</item>\n\t"; } ?>a concatenação com o {} que não estava funcionando.Nunca gerei um feed, mas pelo que tô vendo, ele só vai funcionar, se estiver bem formatado. http://validator.w3.org/feed/check.cgi?url...l.com%2Frss.php coloque um \n depois de cada echo como fiz acima(editei), e codifique o & por & Compartilhar este post Link para o post Compartilhar em outros sites
wonderrow 0 Denunciar post Postado Fevereiro 20, 2009 Deu certo, valeu mesmo! Mas, gostaria de colocar a notícia completa no campo <description>, o campo da tabela relacionado a isso tem o nome de 'noticia'. Mas o problema é que a notícia fica na MEMO, e não mostrada ali naquele campo, pode me ajudar? Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Fevereiro 20, 2009 Não entendi nada cara.. oque é MEMO ?? Pq você não pode fazer simplesmente: echo "<description>".$row['noticia']."</description>\n"; ?Posta a estrutura da tabela. Compartilhar este post Link para o post Compartilhar em outros sites
wonderrow 0 Denunciar post Postado Fevereiro 20, 2009 Desculpe, me enganei. É que no campo noticia, quando o acesso via MySQL Front ele aparece como MEMO, e não igual quando o acesso via phpmyadmin. Mas havia feito o que você disse acima, mas simplesmente as notícias pararam de aparecer. Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Fevereiro 20, 2009 dá uma olhada no código gerado: http://validator.w3.org/feed/check.cgi?url...l.com%2Frss.php # <description><p>Mashahiro Sakurai, criador da nintendo de Kirby, e designer do game Super Smash Bros. Brawl e está criando um novo título que está exatamente de acordo com o anúncio na própria nintendo.</p> # <p>A companhia de design Sora Ltd., uma desenvolvedora feita pela Nintendo especialmente para uso exclusiva dela mesmo, criou uma nova produtora que foi chamada de: "Project Sora". No caso Sakurai está no alto posto de diretor neste reçém lançado projeto. Como 72% da produtora pertence a Nintendo, ela é a maior investidora da companhia.</p>acredito que o FEED não possa ter TAGS HTML, pois já é um XML... então esses <p> ai não fazem sentido... tenta remover eles <p> e </p> com um string replace antes de jogar no feed. http://br.php.net/manual/pt_BR/function.str-replace.php É certo colocar a notícia inteira assim no FEED ? nunca trabalhei com isso. Compartilhar este post Link para o post Compartilhar em outros sites
wonderrow 0 Denunciar post Postado Fevereiro 20, 2009 como faço para remover as tags <p> </p>? não entendi muito esse tutorial. já vi vários feeds com notícias completas, mas como não consigo adicionar um campo de descrição acho melhor assim. Compartilhar este post Link para o post Compartilhar em outros sites
pkr 0 Denunciar post Postado Fevereiro 20, 2009 use echo "<description>".strip_tags($row['noticia'])."</description>\n"; essa função remove todos códigos HTML de uma variável! Compartilhar este post Link para o post Compartilhar em outros sites
wonderrow 0 Denunciar post Postado Fevereiro 20, 2009 agora o erro se encontra nas cedilhas, vejam: http://validator.w3.org/feed/check.cgi?url...l.com%2Frss.php mais uma vez obrigado pela ajuda pessoal! Compartilhar este post Link para o post Compartilhar em outros sites
pkr 0 Denunciar post Postado Fevereiro 20, 2009 faz assim entao echo "<description>".utf8_encode(strip_tags($row['noticia']))."</description>\n"; ou echo "<description>".utf8_decode(strip_tags($row['noticia']))."</description>\n"; não lembro qual é o certo agora para converter heheh Compartilhar este post Link para o post Compartilhar em outros sites
wonderrow 0 Denunciar post Postado Fevereiro 20, 2009 nenhum dos dois deu certo :( Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Fevereiro 20, 2009 Arruma o pubDate, colocando o valor completo.. esses são os exemplos de como ele aceita: <pubDate>Wed, 02 Oct 2002 08:00:00 EST</pubDate> <pubDate>Wed, 02 Oct 2002 13:00:00 GMT</pubDate> <pubDate>Wed, 02 Oct 2002 15:00:00 +0200</pubDate>atualmente, o seu é somente:<pubDate>2009-02-20</pubDate>Acho que você deve jogar o Ç mesmo.. em vez da codificação dele..http://br.php.net/manual/pt_BR/function.ht...tity-decode.php $noticia = strip_tags($row['noticia']); echo "<description>".html_entity_decode($noticia)."</description>\n"; Compartilhar este post Link para o post Compartilhar em outros sites
wonderrow 0 Denunciar post Postado Fevereiro 20, 2009 valeu, deu certo! mas o pubdate está como echo "<pubDate>".$row['data']."</pubDate>\n";como coloco ele para o formato certo? Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Fevereiro 21, 2009 você está cadastrando errado. Tem que ver no script que cria as notícias. Procure usar a função date do php para cadastrar corretamente. Compartilhar este post Link para o post Compartilhar em outros sites
wonderrow 0 Denunciar post Postado Fevereiro 21, 2009 veja como está no script que cadastra as notícias: $data_atual = date("d/m/Y",time()); $hora_bruta = strftime("%H:%M:%S"); $data_f = date("Y-m-d",time()); veja o validator novamente, apareceram novos erros: http://feedvalidator.org/check.cgi?url=htt...l.com%2Frss.php Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Fevereiro 21, 2009 Tem um entidade errada lá no meio... Pesquisei, e acho que não existe: “O certo seria:« « « Esse caracter é exibido corretamente no browser? quem é ele?Como a função decode_entity não conseguiu converter, deu o erro, já que pelo que percebemos, o Feed não aceita códigos HTML. Mas você não está jogando tudo isso no banco está? (data/hora) mostra o teu INSERT ai... Compartilhar este post Link para o post Compartilhar em outros sites