desformatação de tabela em IE

fil79

Power Member
Boas

tenho um script que lista alguns campos de uma tabela (campos preenchidos pelos clientes)
para listar esses campos useio uma tabela mas há uns dias deparei-me com algo que nunca tinha acontecido:

um dos utilizadores usou "/"(slash ) ao inserir um link e isso desformatou completamente a tabela estando esse registo completemante fora do sitio, mas somente no INternet Explorer...poderia usar uma função em php para substituir o slash por outro simbolo mas depois o link deixaria de funcionar..alguém me sabe dizer porque se comporta assim a tabela no IE?

exemplo do código:

Código:
HTML:
<table width='100%' border='0'>
       <tr><td style='padding-left: 80px;'width='100%' >".$interno."</td></tr>
</table>
 
 
CSS:
 
body
{
margin: auto;
}



Desde já agradeço
 
Boas

tenho um script que lista alguns campos de uma tabela (campos preenchidos pelos clientes)
para listar esses campos useio uma tabela mas há uns dias deparei-me com algo que nunca tinha acontecido:

um dos utilizadores usou "/"(slash ) ao inserir um link e isso desformatou completamente a tabela estando esse registo completemante fora do sitio, mas somente no INternet Explorer...poderia usar uma função em php para substituir o slash por outro simbolo mas depois o link deixaria de funcionar..alguém me sabe dizer porque se comporta assim a tabela no IE?

exemplo do código:

Código:
HTML:
<table width='100%' border='0'>
       <tr><td style='padding-left: 80px;'width='100%' >".$interno."</td></tr>
</table>
 
 
CSS:
 
body
{
margin: auto;
}



Desde já agradeço

Consegues mostrar qual é o código html gerado por esse código?
 
Código:
<table border='0' width='80%'>
      <tr><td align='right' width='40%'><b>Pedido nº:</b></td><td>1111</td></tr>
      <tr><td align='right'><b>Nome:</b></td><td>manuel</td></tr>
      <tr><td align='right'><b>Empresa:</b></td><td>alguma empresa</td></tr>
      <tr><td align='right'><b>Contacto:</b></td><td>999999999</td></tr>
      <tr><td align='right'><b>Assunto:</b></td><td>Queremos que insira tanto faz tanto faz.Aqui tem o link do site:  [URL]http://www.algo.com </td></tr[/URL]>
      <tr><td align='right'><b>Data:</b></td><td>10 de Março de 2009</td></tr>
 </table>


este é o registo que se encontra desformatado...os outros registos encontram-se perfeitos...como referi se retirar as slashes fica bem formatada!!
 
Código:
<table border='0' width='80%'>
      <tr><td align='right' width='40%'><b>Pedido nº:</b></td><td>1111</td></tr>
      <tr><td align='right'><b>Nome:</b></td><td>manuel</td></tr>
      <tr><td align='right'><b>Empresa:</b></td><td>alguma empresa</td></tr>
      <tr><td align='right'><b>Contacto:</b></td><td>999999999</td></tr>
      <tr><td align='right'><b>Assunto:</b></td><td>Queremos que insira tanto faz tanto faz.Aqui tem o link do site:  [URL]http://www.algo.com </td></tr[/URL]>
      <tr><td align='right'><b>Data:</b></td><td>10 de Março de 2009</td></tr>
 </table>


este é o registo que se encontra desformatado...os outros registos encontram-se perfeitos...como referi se retirar as slashes fica bem formatada!!

Por esse código não consigo visualizar qualquer má formatação, tenta colocar o código completo dessa tabela e um screenshot do teu IE...
 
Aproveito esta thred para perguntar o seguinte:

Alguem me sabe explicar porque é que o código seguinte (cabeçalho de uma tabela) no Firefox não apresenta a cor do fundo, mas no IE sim ?

PHP:
print("<table width=\"100%\" align=left border=1>");
print("<tr><td width=\"20%\" bgcolor=\"FFFF00\">N_Aluno</td><td width=\"20%\" bgcolor=\"FFFF00\">Nome</td><td width=\"60%\" bgcolor=\"FFFF00\">Curso</td><td width=\"60%\" bgcolor=\"FFFF00\">Email</td><td width=\"50%\" bgcolor=\"FFFF00\">Numero Telefone</td><td width=\"80%\" bgcolor=\"FFFF00\">Exame #1</td><td width=\"80%\" bgcolor=\"FFFF00\">Exame #2</td><td width=\"80%\" bgcolor=\"FFFF00\">Nota Final</td></tr>");
 
Última edição:
Aproveito esta thred para perguntar o seguinte:

Alguem me sabe explicar porque é que o código seguinte (cabeçalho de uma tabela) no Firefox não apresenta a cor do fundo, mas no IE sim ?

PHP:
print("<table width=\"100%\" align=left border=1>");
print("<tr><td width=\"20%\" bgcolor=\"[COLOR="Red"]#[/COLOR]FFFF00\">N_Aluno</td><td width=\"20%\" bgcolor=\"[COLOR="red"]#[/COLOR]FFFF00\">Nome</td><td width=\"60%\" bgcolor=\"[COLOR="red"]#[/COLOR]FFFF00\">Curso</td><td width=\"60%\" bgcolor=\"FFFF00\">Email</td><td width=\"50%\" bgcolor=\"[COLOR="red"]#[/COLOR]FFFF00\">Numero Telefone</td><td width=\"80%\" bgcolor=\"[COLOR="Red"]#[/COLOR]FFFF00\">Exame #1</td><td width=\"80%\" bgcolor=\"FFFF00\">Exame #2</td><td width=\"80%\" bgcolor=\"[COLOR="red"]#[/COLOR]FFFF00\">Nota Final</td></tr>");

Experimenta colocando o cardinal (#), assinalados a vermelho
 
Última edição:
Aproveito esta thred para perguntar o seguinte:

Alguem me sabe explicar porque é que o código seguinte (cabeçalho de uma tabela) no Firefox não apresenta a cor do fundo, mas no IE sim ?

PHP:
print("<table width=\"100%\" align=left border=1>");
print("<tr><td width=\"20%\" bgcolor=\"FFFF00\">N_Aluno</td><td width=\"20%\" bgcolor=\"FFFF00\">Nome</td><td width=\"60%\" bgcolor=\"FFFF00\">Curso</td><td width=\"60%\" bgcolor=\"FFFF00\">Email</td><td width=\"50%\" bgcolor=\"FFFF00\">Numero Telefone</td><td width=\"80%\" bgcolor=\"FFFF00\">Exame #1</td><td width=\"80%\" bgcolor=\"FFFF00\">Exame #2</td><td width=\"80%\" bgcolor=\"FFFF00\">Nota Final</td></tr>");

falta-te o # em bgcolor=\"FFFF00\", ficaria bgcolor=\"#FFFF00\"
 
Por esse código não consigo visualizar qualquer má formatação, tenta colocar o código completo dessa tabela e um screenshot do teu IE...


Código:
<fieldset>
<table border='0' width='80%'>
      <tr><td align='right' width='40%'><b>Pedido nº:</b></td><td>942</td></tr>
      <tr><td align='right'><b>Nome:</b></td><td>nome da pessoa</td></tr>
      <tr><td align='right'><b>Empresa:</b></td><td>alguma há-de ser</td></tr>
      <tr><td align='right'><b>Contacto:</b></td><td>91111111</td></tr>
      <tr><td align='right'><b>Assunto:</b></td><td>Aqui tem o link do      site:http://www.algo....</td></tr>      
      <tr><td align='right'><b>Data:</b></td><td>12 de Março de 2009</td></tr>
      <tr><td align='right'><b>Hora:</b></td><td>23:24</td></tr>
<tr><td align='right'></td>
<td align='right'><a href='pag1.php?idPedido=942'><img src='imagens/chave.jpg' border='0' alt='Reabrir o pedido nº 942'></a>&nbsp;&nbsp;&nbsp;<a href=pag2.php?<img src='imagens/imag1.jpg' border='0' width='30' height='30' </a>&nbsp;&nbsp;&nbsp;<a href='pag3.php'><img src='imagens/relatorio.jpg' border='0'></a></td></tr>
  
  </table>
  </fieldset>

para salvaguardar a privacidade ocultei as informações, o caso do pedido em que no campo assunto se encontra o link, passa para além do fieldset:


errok.jpg
 
Última edição:
Pois, o problema é que o URL é grande e como não tem espaços não faz a quebra de linha, uma possível solução é alterares o teu fieldset para algo deste tipo:

Código:
<fieldset style="overflow: auto;">
 
Não sei se foi erro ao transcreveres mas tens ai duas tags que não estão fechadas:
PHP:
<a href=pag2.php?<img src='imagens/imag1.jpg' border='0' width='30' height='30' </a>
 
Pois, o problema é que o URL é grande e como não tem espaços não faz a quebra de linha, uma possível solução é alterares o teu fieldset para algo deste tipo:

Código:
<fieldset style="overflow: auto;">


assim aparecem dois scrolls que evita que os td´s saiam do filedset...já é um começo...acontece que o pedidp ainda está encostado ao lado esquerdo tal como está na imagem, apesar de ter width='50%'...ainda não se encontra totalmente igual aos outros




Não sei se foi erro ao transcreveres mas tens ai duas tags que não estão fechadas:

foi erro ao transcrever pois editei o html de modo a preservar alguma privacidade
 
assim aparecem dois scrolls que evita que os td´s saiam do filedset...já é um começo...acontece que o pedidp ainda está encostado ao lado esquerdo tal como está na imagem, apesar de ter width='50%'...ainda não se encontra totalmente igual aos outros

Para fixares o tamanho da tabela penso que basta isto
Código:
<table border='0' width='80%'  style="table-layout: fixed;">

Em relação ao teu problema dos urls longos, podes usar uma coisa que é o linkify text, se procurares pelo Google vais encontrar muitas coisas.

Dá uma vista de olhos neste exemplo, basicamente o que faz é ir buscar todos os endereços (http e ftp) sem o <a> e constrói o <a>, porém se o tamanho do link for superior a X caracteres, "corta", caso contrário, permanece o mesmo texto.

Código:
<?php
function FixUrl($url, $max=25) {
  $url_fixed=$url;
  if (strlen($url) > $max){ $url_fixed = substr($url, 0, $max)."..."; }
  return "<a href='$url'>$url_fixed</a>";
}
function linkify_text($linktext) {
  return preg_replace('@\b(ht|f)tp[s]?://[^\s\n\r\t\<\>]+(?=[\b\s\n\r\t\<])@ie',"FixUrl(\"\\0\")", $linktext); 
}
?>

<html>
<body>
<fieldset>
<table border='0' width='80%'  style="table-layout: fixed;">
    <tr><td align='right' width='40%'><b>Pedido nº:</b></td><td>942</td></tr>
    <tr><td align='right'><b>Nome:</b></td><td>nome da pessoa</td></tr>
    <tr><td align='right'><b>Empresa:</b></td><td>alguma há-de ser</td></tr>
    <tr><td align='right'><b>Contacto:</b></td><td>91111111</td></tr>
    <tr><td align='right'><b>Assunto:</b></td>
      <td>
        <?php echo linkify_text("Aqui tem o link do site:http://www.correiodamanha.pt/noticia.aspx?contentid=67D59FEA-4A49-4DB6-A9D9-ACC9B799694F&channelid=00000213-0000-0000-0000-000000000213 isto é outro link, mas fica igual http://www.google.pt/ <a href='http://www.slbenfica.pt'>este link não é alterado</a>");?>
      </td>
    </tr>
    <tr><td align='right'><b>Data:</b></td><td>12 de Março de 2009</td></tr>
    <tr><td align='right'><b>Hora:</b></td><td>23:24</td></tr>
<tr><td align='right'></td>
<td align='right'><a href='pag1.php?idPedido=942'><img src='imagens/chave.jpg' border='0' alt='Reabrir o pedido nº 942'></a>&nbsp;&nbsp;&nbsp;<a href=pag2.php><img src='imagens/imag1.jpg' border='0' width='30' height='30' ></a>&nbsp;&nbsp;&nbsp;<a href='pag3.php'><img src='imagens/relatorio.jpg' border='0'></a></td></tr>
  </table>
  </fieldset>
</body>
</html>

Aquela expressão regular adaptei deste site


Esta linha irá converter o texto para link
PHP:
<?php echo linkify_text("Aqui tem o link do site:http://www.correiodamanha.pt/noticia.aspx?contentid=67D59FEA-4A49-4DB6-A9D9-ACC9B799694F&channelid=00000213-0000-0000-0000-000000000213 isto é outro link, mas fica igual http://www.google.pt/ <a href='http://www.slbenfica.pt'>este link não é alterado</a>");?>
 
Última edição:
Aproveito esta thred para perguntar o seguinte:

Alguem me sabe explicar porque é que o código seguinte (cabeçalho de uma tabela) no Firefox não apresenta a cor do fundo, mas no IE sim ?

PHP:
print("<table width=\"100%\" align=center border=1>");
print("<tr><td width=\"20%\" bgcolor=\"FFFF00\">N_Aluno</td><td width=\"20%\" bgcolor=\"FFFF00\">Nome</td><td width=\"60%\" bgcolor=\"FFFF00\">Curso</td><td width=\"60%\" bgcolor=\"FFFF00\">Email</td><td width=\"50%\" bgcolor=\"FFFF00\">Numero Telefone</td><td width=\"80%\" bgcolor=\"FFFF00\">Exame #1</td><td width=\"80%\" bgcolor=\"FFFF00\">Exame #2</td><td width=\"80%\" bgcolor=\"FFFF00\">Nota Final</td></tr>");

De facto faltava-me o #. Mas porque é que eu mudei para align=center, e continua-me alinhado à esquerda?
 
podes fazer isso usando CSS:

Código:
<style type="text/css">
.td
{ 
text-align: center;
}
 
</style>
 
 
 
//e depois no php:
 
 
print("<table width=\"100%\"   border='1'>");
 
print("<tr><td width=\"20%\" bgcolor=\"FFFF00\" class=\"td\"...........................



P.s.-Para a próxima abre um tópico novo de modo a que o bom funcionamento do fórum seja preservado! e evitam-se salganhadas ;)
 
Para fixares o tamanho da tabela penso que basta isto
Código:
<table border='0' width='80%'  style="table-layout: fixed;">

Em relação ao teu problema dos urls longos, podes usar uma coisa que é o linkify text, se procurares pelo Google vais encontrar muitas coisas.

Dá uma vista de olhos neste exemplo, basicamente o que faz é ir buscar todos os endereços (http e ftp) sem o <a> e constrói o <a>, porém se o tamanho do link for superior a X caracteres, "corta", caso contrário, permanece o mesmo texto.

Código:
<?php
function FixUrl($url, $max=25) {
  $url_fixed=$url;
  if (strlen($url) > $max){ $url_fixed = substr($url, 0, $max)."..."; }
  return "<a href='$url'>$url_fixed</a>";
}
function linkify_text($linktext) {
  return preg_replace('@\b(ht|f)tp[s]?://[^\s\n\r\t\<\>]+(?=[\b\s\n\r\t\<])@ie',"FixUrl(\"\\0\")", $linktext); 
}
?>
 
<html>
<body>
<fieldset>
<table border='0' width='80%'  style="table-layout: fixed;">
    <tr><td align='right' width='40%'><b>Pedido nº:</b></td><td>942</td></tr>
    <tr><td align='right'><b>Nome:</b></td><td>nome da pessoa</td></tr>
    <tr><td align='right'><b>Empresa:</b></td><td>alguma há-de ser</td></tr>
    <tr><td align='right'><b>Contacto:</b></td><td>91111111</td></tr>
    <tr><td align='right'><b>Assunto:</b></td>
      <td>
        <?php echo linkify_text("Aqui tem o link do site:http://www.correiodamanha.pt/noticia.aspx?contentid=67D59FEA-4A49-4DB6-A9D9-ACC9B799694F&channelid=00000213-0000-0000-0000-000000000213 isto é outro link, mas fica igual http://www.google.pt/ <a href='http://www.slbenfica.pt'>este link não é alterado</a>");?>
      </td>
    </tr>
    <tr><td align='right'><b>Data:</b></td><td>12 de Março de 2009</td></tr>
    <tr><td align='right'><b>Hora:</b></td><td>23:24</td></tr>
<tr><td align='right'></td>
<td align='right'><a href='pag1.php?idPedido=942'><img src='imagens/chave.jpg' border='0' alt='Reabrir o pedido nº 942'></a>&nbsp;&nbsp;&nbsp;<a href=pag2.php><img src='imagens/imag1.jpg' border='0' width='30' height='30' ></a>&nbsp;&nbsp;&nbsp;<a href='pag3.php'><img src='imagens/relatorio.jpg' border='0'></a></td></tr>
  </table>
  </fieldset>
</body>
</html>

Aquela expressão regular adaptei deste site


Esta linha irá converter o texto para link
PHP:
<?php echo linkify_text("Aqui tem o link do site:http://www.correiodamanha.pt/noticia.aspx?contentid=67D59FEA-4A49-4DB6-A9D9-ACC9B799694F&channelid=00000213-0000-0000-0000-000000000213 isto é outro link, mas fica igual http://www.google.pt/ <a href='http://www.slbenfica.pt'>este link não é alterado</a>");?>



style="table-layout: fixed;
assim não desformata a tabela..e a outra função é muito boa...já a apliquei na variável para o caso de alguém voltar a inserir um link...muito obrigado ;)
 
Back
Topo