kania 0 Denunciar post Postado Agosto 25, 2009 Olá pessoal, estou aprendendo PHP agora e preciso de ajuda de vocês para fazer um código que pegue código em html que chega da seguinte forma para mim: "MARIA FERANDA";"SANDRO PEREIRA";"MAURO DA SILVA";"FERANDA RODRIGUES";"LEANDRO SATUR"; Preciso transformar em um código assim MARIA FERANDA SANDRO PEREIRA MAURO DA SILVA FERANDA RODRIGUES LEANDRO SATUR Preciso disto pelo seguinte: Tenho que fazer um MARQUEE no site e não posso simplesmente conectar direto na base de dados e fazer o script imprimir na tela os valores, preciso tratar o código acima que vem em linha, e mostra-lo com quebra de linha conforme citei, abaixo um código que fiz para testar para ficar mais simples de exemplificar. Este script conecta em minha base de testes, preciso tirar a conexão com base e usar o código acima que vem automáticamente e tratá-lo <marquee id="externalmarquee" direction=up scrollAmount=4 style="width:250px;height:170px; margin:25px 5px 5px 5px;" onMouseover="this.scrollAmount=0" onMouseout="this.scrollAmount=4" src="update.htm"> <? $sql_consultor = mysql_query ("SELECT * FROM cad_consultor Order By DataCadastro ASC limit 0,30") or die(mysql_error()); $Verifica = mysql_num_rows($sql_consultor); if($Verifica > '0'){ while($linha = mysql_fetch_array($sql_consultor)){ $NomeConsultor = $linha['NomeConsultor']; ?> <div id="NovoConsultor"><? echo "$NomeConsultor"; ?></div> <? } }else{ ?> <div id="NovoConsultor">nenhum registro encontrado</div> <? } ?> </marquee> Aqui o JAVASCRIPT <script language="JavaScript1.2"> function downloaddata(){ marqueedata.startDownload(externalmarquee.src,displaydata) } function displaydata(data){ externalmarquee.innerHTML=data } if (document.all) window.onload=downloaddata </script> Lembrando que eu recebo os valores em linha através de uma URL direto no meu navegador Compartilhar este post Link para o post Compartilhar em outros sites
André D. Molin 15 Denunciar post Postado Agosto 25, 2009 Você precisa pronto? Ou quer ajuda em fazer funcionar? Compartilhar este post Link para o post Compartilhar em outros sites
kania 0 Denunciar post Postado Agosto 25, 2009 Na verdade gostaria de ajuda para aprender como da para fazer. Veja como falei tenho uma url: www.teste.com.br quando entro pelo navegador nela ela me imprime na tela somente este código "MARIA FERANDA";"SANDRO PEREIRA";"MAURO DA SILVA";"FERANDA RODRIGUES";"LEANDRO SATUR"; no código html também é só isto que temos preciso pegar estes valores e separa-los em MARIA FERANDA SANDRO PEREIRA MAURO DA SILVA FERANDA RODRIGUES LEANDRO SATUR para poder ler e colocar dentro do MARQUEE Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Agosto 25, 2009 Faz um str_replace do ; pelo <br/> Deve funcionar. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
kania 0 Denunciar post Postado Agosto 25, 2009 certo e como eu consigo pegar o valor que esta vindo pela url, não vem via get, vem direto na tela os valores, pelo que vejo terei que ler o html da url para depois tratar o valor, mas como pegar este valor? Compartilhar este post Link para o post Compartilhar em outros sites
monih 0 Denunciar post Postado Agosto 26, 2009 não vem via get, vem direto na tela os valores,?? de algum lugar os dados vem.. Compartilhar este post Link para o post Compartilhar em outros sites
kania 0 Denunciar post Postado Agosto 26, 2009 è assim, eu também estou tentando entender como fazer. este é o link que a empresa que esta fazendo o sistema para nós mandou http://eagle.visiomultinivel.com.br/comum/url/last_30.php Vejam que aparece os valores direto na tela e que p código html é puro, não tem nada só os valores mesmo. Então mandei a eles um email falando sobre isto que eu precisava conectar na base deles para criar um marquee com os utimos 30 registros, porem eles não podem passar esta informação (é claro) por questão de segurança do servidor deles, mas me mandaram o link e disseram que se eu tratar o valor que vem na tela eu posso criar o mesmo marquee que já tenho, agora como eu faço isto? Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Agosto 26, 2009 Você vai usar a função file_get_contents para pegar o conteúdo da página e depois usa o que eu passei pra quebrar. http://br.php.net/file_get_contents Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
kania 0 Denunciar post Postado Agosto 26, 2009 Opa Matias, então como falei inicialemnte, sou bem novo em php, estou aprendendo ainda, li o material do manula que me mandou mas não consegui fazer muita coisa, veja. eu recebo o seguinte valor: "ROSILEI ANDRADE";"MARIA DE FÃ�TIMA SANRANA";"LUCAS CARNEIRO";"JORGE KANIA";"Grupo Eagle"; ai fiz assim $texto = str_replace(";",$linha,"<br>"); pensei que ele deveria retornar assim: "ROSILEI ANDRADE" "MARIA DE FÃ�TIMA SANRANA" "LUCAS CARNEIRO" "JORGE KANIA" "Grupo Eagle"; porem ele esta retornando assim: "ROSILEI ANDRADE";"MARIA DE FÃ�TIMA SANRANA";"LUCAS CARNEIRO";"JORGE KANIA";"Grupo Eagle"; e o código html está assim: "ROSILEI ANDRADE";"MARIA DE FÃ�TIMA SANRANA";"LUCAS CARNEIRO";"JORGE KANIA";"Grupo Eagle";<br> Não entendi o porque, pode me explicar onde eu errei? Da a impreção que o str_replace não esta percorrendo toda a expressão para achar todos os ";" contido nela Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Agosto 26, 2009 Poste o Código que você está fazendo desde o file_get_contents() por favor. Olha você fez assim Kania $texto = str_replace(";",$linha,"<br>"); A função str_replace se resume assim.o primeiro termo é o que você quer substituir. você quer substituir na string o ';' pelo '<br>' certo ? Entao o primeiro termo é o ';', o segundo é o '<br>', que é pelo que você quer trocar. E o terceiro termo é em que String você quer fazer isso. Dae você coloca a variável que recebe o file_get_contents da sua página. Ficaria assim: $texto = file_get_contents('nome_pagina.html'); $texto = str_replace(';','<br>',$texto); echo $texto; Compartilhar este post Link para o post Compartilhar em outros sites
kania 0 Denunciar post Postado Agosto 26, 2009 Assim, deu certo, ou quase deu, consegui separar em linhas, agora só falta, mostrar um a um, vejam o código abaixo que modifiquei <?php function get_source($url,$caminho,$show_headers=0) { if(preg_match('!^http://!',$url)) $url=substr($url,7,strlen($url)); if($start=strpos($url,'/')) $uri=substr($url,$start,strlen($url)); else $uri=''; $fp=fsockopen($url,80,$errno,$errstr,4); if(!$fp) { echo "<b><font color=\"red\">Unable to connect to: $url</font></b>"; return false; } else { $buffer=''; $headers=''; fputs($fp,"GET $caminho HTTP/1.0\r\n"); fputs($fp,"Host: $url\r\n"); fputs($fp,"User-Agent: sourcegetter\r\n"); fputs($fp,"Connection: close\r\n"); fputs($fp,"\r\n"); while(!feof($fp)) { if(!isset($end_of_headers)) { $header=fgets($fp,4096); if($header=="\r\n") $end_of_headers=1; $headers.=$header; } else { $buffer.=fgets($fp,4096); } } fclose($fp); if($show_headers) { $headers=htmlentities($headers); $headers=nl2br($headers); echo $headers; } $buffer = str_replace(array(";"), "<br />", $buffer); $buffer = str_replace(array('"'), "", $buffer); $buffer = str_replace(array("\r\n", "\r\n", "\n"), ' ', $buffer); $buffer = html_entity_decode($buffer); return $buffer; } } $utimos = get_source('http://eagle.visiomultinivel.com.br','/comum/url/last_30.php',false); ?> <marquee id="externalmarquee" direction=up scrollAmount=4 style="width:250px;height:170px; margin:25px 5px 5px 5px;" onMouseover="this.scrollAmount=0" onMouseout="this.scrollAmount=4"> <? echo $utimos; ?> </marquee> Não sei se cons3egui explicar, preciso que cada nome monte uma linha separada, isto para que eu possa criar algo do tipo <div id="NovoConsultor"><? echo $utimos; ?></div> Esta div "NovoConsultor" recebe uma configuração via css Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Agosto 26, 2009 Não entendi. Já está um em cada linha. Ou você quer por em tabela ? Depende da configuração que você tem no Css. Poderia vê-la ? Compartilhar este post Link para o post Compartilhar em outros sites
kania 0 Denunciar post Postado Agosto 26, 2009 Deixa eu ver se consigo explicar. Tenho na minha folaha de estilo configurado para que a cada nome se crie um div e esta div receba algumas configurações como uma imagem de uma estrela na frente do nome, um border-bottom na div, entre outros, agora se for mostrado no MARQEE todos os nomes de uma unica vez somente com a quebra de linha ele vai por a configuração para todos de uma unica vez e não independente para cada nome, e com na função ele somente quebra a linha, na hora que eu chamo a função dentro do MARQUEE ele monta tudo junto, claro, então estou vendo como fazer para pegar cada nome e mostrar ele independete Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Agosto 26, 2009 Haaaaaaaaaaaaaaaaaaaaaaaaaa Entendi Faça isso $pedacos = explode("<br />", $utimos); echo $pedacos[0]."<br>"; echo $pedacos[1]."<br>"; echo $pedacos[2]."<br>"; echo $pedacos[3]."<br>"; echo $pedacos[4]; Olha função explode(), vai tirar os <br />(s), e colocar cada parte da string num array. Ou seja, como você quer. Dae você aplica as configurações. Teste ae e me fala. PS: Editei o código, tinha errado a posição do array dentro do parenteses. Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Agosto 26, 2009 Se for usar o explode, pode tirar o str_replace e faça o explode pelo ; Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Agosto 26, 2009 Se for usar o explode, pode tirar o str_replace e faça o explode pelo ; Carlos Eduardo Verdade. Nem pensei nisso. Moh trabalhão que ele fez com os str_replace(s). Compartilhar este post Link para o post Compartilhar em outros sites
kania 0 Denunciar post Postado Agosto 26, 2009 Deixa eu ver se entendi. Eu vou colocar tudo dentro de um Arrey, depois eu chamo cada Arrey separadamente, assim $pedacos[1] $pedacos[2] $pedacos[3] $pedacos[4] .... $pedacos[30] isto? Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Agosto 26, 2009 Isto aqui tudo você pode trocar por um for ou foreach. $explode = explode(';',$ultimos); foreach($explode as $valor) { echo $valor; } // ou com for for ($x = 0; $x < count($explode); $x++) { echo $explode[$x]; } Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Agosto 26, 2009 Exato. Mas o Array sempre começando da posição 0 =) Ou faz um For ou ForEach como o User acima disse. for($x=0;$x<count($pedacos)-1;$x++) { echo $pedacos[$x]; } Mas acho que o For ou ForEach não dá pra você,pq você tem que fazer asconfigurações la neh. A não ser que você faça verificação. Se For tal Nome, faça tal coisa. Compartilhar este post Link para o post Compartilhar em outros sites
kania 0 Denunciar post Postado Agosto 26, 2009 pessoal, deu certo, obrigado a todos. Só preciso d emais um detalhesinho, com no html esta sssim: ROSILEI ANDRADE<br />MARIA DE FÃTIMA SANRANA<br />LUCAS CARNEIRO<br />JORGE KANIA<br /> ou seja temos um <br /> no final, ele acaba criando mais uma div no final em branco, tem como eu fazer um tipo de if que verifique se é o utimo registro e não mostrar ele? No ASP sei que da para fazer no php Compartilhar este post Link para o post Compartilhar em outros sites