Avatar billede Hans1 Praktikant
30. juni 2012 - 13:12 Der er 14 kommentarer

Hjælp til DOM element

Hvordan skipper jeg de to første tr elementer når jeg udskriver tabellens indhold?


$dom = new domDocument;

@$dom->loadHTML($output);

$dom->preserveWhiteSpace = false;

$tables = $dom->getElementsByTagName('table');

$rows = $tables->item(0)->getElementsByTagName('tr');

foreach ($rows as $row)
{
    $cols = $row->getElementsByTagName('td');

    echo $cols->item(0)->nodeValue.'<br />';
    echo $cols->item(1)->nodeValue.'<br />';
    echo $cols->item(2)->nodeValue.'<br />';
    echo $cols->item(3)->nodeValue.'<br />';
}
Avatar billede Hans1 Praktikant
30. juni 2012 - 13:16 #1
Jeg har fået fortalt at det ikke er optimalt at bruge foreach funktionen på et objekt når det det ikke er et array der benyttes, i stedet benyttes der: for loop - ved bare ikke hvordan dette sammensættes.
Avatar billede olebole Juniormester
30. juni 2012 - 13:28 #2
<ole>

for ($i=2,$=count($rows); $<$; $++)
{
    $cols = $rows[$i]->getElementsByTagName('td');

    echo $cols->item(0)->nodeValue.'<br />';
    echo $cols->item(1)->nodeValue.'<br />';
    echo $cols->item(2)->nodeValue.'<br />';
    echo $cols->item(3)->nodeValue.'<br />';
}

/mvh
</bole>
Avatar billede olebole Juniormester
30. juni 2012 - 13:29 #3
Oooops ...  =)

for ($i=2,$=count($rows); $i<$j; $i++)
Avatar billede olebole Juniormester
30. juni 2012 - 13:30 #4
OLE ...!

for ($i=2,$j=count($rows); $i<$j; $i++)
Avatar billede Hans1 Praktikant
30. juni 2012 - 13:34 #5
Jeg får ingen resultater fra tabellen :/
Avatar billede olebole Juniormester
30. juni 2012 - 14:16 #6
echo
Avatar billede Hans1 Praktikant
30. juni 2012 - 14:28 #7
echo? jeg udskriver allerede med:


echo $cols->item(0)->nodeValue.'<br />';
Avatar billede olebole Juniormester
30. juni 2012 - 14:36 #8
Prøv noget fejlfinding. Brug echo og var_dump til at undersøge, hvad dine variabler indeholder  =)
Avatar billede Hans1 Praktikant
30. juni 2012 - 14:52 #9
$cols samt $rows indeholder intet inde i for loopen.
Avatar billede olebole Juniormester
30. juni 2012 - 15:43 #10
Så ligger fejlen før loopet. Hvad siger:

var_dump($rows);
$rows = $tables->item(0)->getElementsByTagName('tr');

- og hvad sker der, hvis du fjerner det fejlundertrykkende '@', hvor du loader $output?
Avatar billede olebole Juniormester
30. juni 2012 - 15:44 #11
Dooohhhh ...! Sådan selvfølgelig:

$rows = $tables->item(0)->getElementsByTagName('tr');
var_dump($rows);
Avatar billede Hans1 Praktikant
30. juni 2012 - 15:50 #12
Jeg får indhold i $rows uden for loopet
Avatar billede olebole Juniormester
30. juni 2012 - 16:06 #13
Så burde det også virke. Jeg er på vej til fødselsdag, så jeg kan ikke kikke på det lige nu
Avatar billede Hans1 Praktikant
30. juni 2012 - 16:07 #14
Okay. Kigger på det igen. Helt i orden.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester