0

I have a very weird issue with table cell.

My previous post How to append element to another element using php

My code is like the following

$dom = new DomDocument();
$dom->loadHTML($html]);
$tbodies = $dom->getElementsByTagName('tbody');
foreach ($tbodies as $tbody) {
    $table = $dom->createElement('table');
    $table->setAttribute('width',500);
    $table->setAttribute('style','border:2px solid #8C8C8C;text-align:center;table-layout:fixed; border-collapse:separate;');

     $tbody->parentNode->replaceChild($table, $tbody);
     $table->appendChild($tbody);
 }
$returnText .=$dom->saveHTML();

From my previous pose, I got my answer but it seems like the new html table doesn't have border in the table cell.

So my table like

 ___________
|cell  cell |
|cell  cell |
|___________| 

but I want every cell has border. I am sure my original html table cell has no inline style addressing cell border too.

Can anyone helps?

Thanks!

Community
  • 1
  • 1
FlyingCat
  • 14,036
  • 36
  • 119
  • 198

2 Answers2

1

There is no border on the cells because in css the table tag is styled separately from the cells td or th tag. See here: http://www.quackit.com/html/codes/tables/html_table_border.cfm

edit: Better link.

Jonathan Kuhn
  • 15,279
  • 3
  • 32
  • 43
0

I have never used domdocument but i see this line :

$table->setAttribute('style','border:2px solid #8C8C8C;text-align:center;table-layout:fixed; border-collapse:separate;');

Instead of adding style attribute that will stylish your table and not td cells , try to add a class for your table that will stylish both table and cells :

$table->setAttribute('class','test');

and add a css file or a style that containts your class :

 <style type='text/css'>

    .test{
       border:2px solid #8C8C8C;
       text-align:center;
       table-layout:fixed;
       border-collapse:separate;
     }

    .test th,.test td{border:2px solid #8C8C8C;}
 </style>
Charaf JRA
  • 8,249
  • 1
  • 34
  • 44