Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

kania

Quebrar linha em scrip em linha

Recommended Posts

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

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

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

è 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

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

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

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

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

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

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

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

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.