2011-09-16 4 views
0

Besoin d'aide,impression table html en utilisant le document dom php

Je voudrais imprimer ce code html dans notre page web en utilisant php DOMDocument, mais aux prises j'ai aussi écrire le code avec ci-dessous. Pourrais-tu m'aider s'il te plaît.

<table width="610" id="machine" border="0" cellSpacing="10" 
    cellPadding="0"> 

    <TBODY> 
     <TR> 
      <TD colSpan=2 align=left> 
      <DIV id=breadcrumbs><A href="/new-and-used-machinery.php">All 
      Machines</A> &nbsp;&gt;&nbsp; <A 
       href="/listing.php?cat=Air+Compressors">Air Compressors</A> 
      &nbsp;&gt;&nbsp;</DIV> 
      <DIV id=ForSale>FOR SALE:</DIV> 
      <H1>5 CFM Used Speedaire Air Compressor, Single Phase, 60 Gallon 
      tank, 1.5 H.P. #A1194</H1> 
      </TD> 
     </TR> 
     <TR> 
      <TD id=photos vAlign=top width=270 align=middle> 
      <DIV id=ClickPhotos>Click On Photos For Larger Image:</DIV> 
      <!-- PHOTOS DB div style="margin-bottom:12px"><img src="thumb.php?id=A1194.jpg&amp;w=250&amp;h=250"></div --><!-- ORIG PHOTOS div style="margin-bottom:12px"><img src="thumb.php?f=A1194.jpg&amp;w=250&amp;h=250"></div --> 
      <DIV style="MARGIN-BOTTOM: 12px"><A 
       href="/photos.php?id=7135&amp;p=1"><IMG 
       title="Used Speedaire Air Compressor" 
       alt="Used Speedaire Air Compressor" 
       src="/class/class_Image.php?load=cGhvdG9zL0ExMTk0LmpwZ3wyNTB8MjUwfDF8"></A> 
      </DIV> 
      <!-- PHOTOS DB div style="margin-bottom:12px"><img src="thumb.php?id=A1194_1.jpg&amp;w=250&amp;h=250"></div --><!-- ORIG PHOTOS div style="margin-bottom:12px"><img src="thumb.php?f=A1194_1.jpg&amp;w=250&amp;h=250"></div --> 
      <DIV style="MARGIN-BOTTOM: 12px"><A 
       href="/photos.php?id=7135&amp;p=2"><IMG 
       title="Used Speedaire Air Compressor" 
       alt="Used Speedaire Air Compressor" 
       src="/class/class_Image.php?load=cGhvdG9zL0ExMTk0XzEuanBnfDI1MHwyNTB8MXw="></A> 
      </DIV> 
      </TD> 
      <TD id=details vAlign=top width=310 align=left> 
      <TABLE 
       style="BORDER-BOTTOM: #cdcdcd 1px solid; BORDER-LEFT: #cdcdcd 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #eee; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #cdcdcd 1px solid; BORDER-RIGHT: #cdcdcd 1px solid; PADDING-TOP: 10px; -moz-border-radius: 10px; -webkit-border-radius: 10px" 
       id=machine_buttons border=0 cellSpacing=3 cellPadding=0> 
       <TBODY> 
        <TR> 
         <TD><A onmouseover="swapImg('Manufact', true)" 
          onmouseout="swapImg('Manufact', false)" 
          href="/manufacturer.php?brand=Speedaire"><IMG id=icon_Manufact 
          border=0 alt="" src="/images/machine_button_Manufact.gif" 
          width=66 height=33><BR> 
         Manufacturer Info</A></TD> 
        </TR> 
        <TR> 
         <TD><A onmouseover="swapImg('Category', true)" 
          onmouseout="swapImg('Category', false)" 
          href="/listing.php?cat=Air+Compressors"><IMG id=icon_Category 
          border=0 alt="" src="/images/machine_button_Category.gif" 
          width=66 height=33><BR> 
         Similar Machines</A></TD> 
        </TR> 
        <TR> 
         <TD><A onmouseover="swapImg('Brochure', true)" 
          onmouseout="swapImg('Brochure', false)" 
          href="/manufacturer.php?brand=Speedaire#brochures" target=_blank><IMG 
          id=icon_Brochure border=0 alt="" 
          src="/images/machine_button_Brochure.gif" width=66 height=33><BR> 
         OEM Brochure</A></TD> 
        </TR> 
        <TR> 
         <TD><A style="CURSOR: pointer" id=shadowbox_email class=sb 
          title="Used Speedaire Air Compressor" href="/share.php?id=7135" 
          rel=shadowbox;width=520;height=500 shadowboxCacheKey="1" 
          onMouseOver="swapImg('Email', true)" 
          onMouseOut="swapImg('Email', false)" jQuery1316148993734="2"><IMG 
          id=icon_Email border=0 alt="" 
          src="/images/machine_button_Email.gif" width=66 height=33 
          jQuery1316148993734="3"><BR> 
         Email A Friend</A></TD> 
        </TR> 
        <TR> 
         <TD><A onmouseover="swapImg('Ship', true)" 
          onmouseout="swapImg('Ship', false)" href="/shipping.php?id=7135"><IMG 
          id=icon_Ship border=0 alt="" 
          src="/images/machine_button_Ship.gif" width=66 height=33><BR> 
         Shipping</A></TD> 
        </TR> 
       </TBODY> 
      </TABLE> 
      <DIV id=QuickQuote><A href="/machine-print.php?id=7135" target=_blank><IMG 
       title="Print a Quick Quote!" border=0 alt="Print a Quick Quote!" 
       align=absMiddle 
       src="http://www.sterlingmachinery.com/images/quick_quote.jpg"> </A></DIV> 
      <DIV style="MARGIN: 5px 0px 0px 45px"> 
      <FORM method=post name=addmachine action=/request-quote.php 
       jQuery1316148993734="5"><INPUT id=add 
       title="Add Machine to Quote Cart" value="Add Machine to Quote Cart" 
       alt="Add Machine to Quote Cart" 
       src="http://www.sterlingmachinery.com/images/quick_add.jpg" 
       type=image name=add jQuery1316148993734="7"> <IMG 
       style="DISPLAY: none; CURSOR: pointer" id=remove 
       title="Remove from quote cart" name=remove 
       alt="Remove from quote cart" src="/images/remove.gif" width=16 
       height=16 jQuery1316148993734="8"> 
      <DIV style="MARGIN-TOP: 5px"><INPUT id=view title="View Quote Cart" 
       value="View Quote Cart" alt="View Quote Cart" 
       src="http://www.sterlingmachinery.com/images/quick_view.jpg" 
       type=image name=view></DIV> 
      </FORM> 
      </DIV> 
      <BR> 
      <TABLE id=machine_stats border=0 cellSpacing=5 cellPadding=0 
       width=300> 
       <TBODY> 
        <TR> 
         <TD class=field vAlign=top align=right>Stock #</TD> 
         <TD vAlign=top align=left>A1194</TD> 
        </TR> 
        <TR> 
         <TD class=field vAlign=top align=right>Manufacturer:</TD> 
         <TD vAlign=top align=left><A 
          href="/manufacturer.php?brand=Speedaire">Speedaire</A></TD> 
        </TR> 
        <TR> 
         <TD class=field vAlign=top align=right>Model:</TD> 
         <TD vAlign=top align=left><A 
          href="/listing.php?cat=Air+Compressors"></A></TD> 
        </TR> 
        <TR> 
         <TD class=field vAlign=top align=right>Capacity:</TD> 
         <TD vAlign=top align=left><A 
          href="/listing.php?cat=Air+Compressors">5 CFM</A></TD> 
        </TR> 
        <TR> 
         <TD class=field vAlign=top align=right>Price:</TD> 
         <TD vAlign=top align=left><SPAN style="BACKGROUND-COLOR: #ffff00">$350</SPAN></TD> 
        </TR> 
        <TR> 
         <TD class=field vAlign=top align=right>Category:</TD> 
         <TD vAlign=top align=left><A 
          href="/results.php?keywords=Air+Compressors">Air Compressors</A></TD> 
        </TR> 
        <TR> 
         <TD class=field vAlign=top align=right>Condition:</TD> 
         <TD vAlign=top align=left>Used Machinery</TD> 
        </TR> 
       </TBODY> 
      </TABLE> 
      <FIELDSET><LEGEND>Full Description</LEGEND> 
      <TABLE id=machine_specs border=0 cellSpacing=0 cellPadding=4 
       width=300> 
       <TBODY> 
        <TR> 
         <TD 
          style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" 
          class=field vAlign=top align=right>CFM Rating:</TD> 
         <TD 
          style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" 
          vAlign=top align=left>5</TD> 
        </TR> 
        <TR> 
         <TD class=field vAlign=top align=right>Tank Size:</TD> 
         <TD vAlign=top align=left>60 Gallon</TD> 
        </TR> 
        <TR> 
         <TD class=field vAlign=top align=right>Weight:</TD> 
         <TD vAlign=top align=left>400 LBS.</TD> 
        </TR> 
       </TBODY> 
      </TABLE> 
      </FIELDSET> 
      <FIELDSET><LEGEND>Equipped With</LEGEND>Single Phase Motor<BR> 
      Horsepower: 1 1/2</FIELDSET> 
      <DIV class=privates>* Temporary specifications subject to 
      verification.<BR> 
      &nbsp; All quotations subject to prior sale.</DIV> 
      </TD> 
     </TR> 
    </TBODY> 

</table> 

J'ai écrit ce code, mais il ne fonctionne pas correctement. Les boucles externes foreach fonctionnent 17 fois mais ne devraient être que deux fois, car la table externe n'a que deux rangées. Puis comment puis-je imprimer comme il est html table dans ma page Web en utilisant php dom document. Je suis nouveau en php dom.

Merci. Merci beaucoup.

+0

Qu'est-ce qui n'a pas fonctionné? Avez-vous une erreur? – hakre

+0

N'obtenant pas d'erreurs mais il imprime uniquement les données de la table html interne, ne pas imprimer les données externes qui se trouvent dans la table externe mais en dehors des tables html internes. – Bajrang

+0

Alors qu'est-ce que je dois écrire pour ça? Les données pour le premier tr ne s'impriment pas. – Bajrang

Répondre

1

La boucle foreach itère 17 simplement parce que vous avez 17 balises dans le code HTML que vous avez publié. En fait, le $ rows = $ table-> getElementsByTagName ("tr"); extrait n'importe quelle étiquette à n'importe quelle profondeur dans l'arbre.

Pour que les deux extérieur que vous pouvez faire quelque chose comme

$ tbody = $ table-> childNodes;

$ outerTr = $ tbody-> childNodes;

Un du itérer sur $ outerTr

Vous pouvez également créer une expression XPath pour obtenir que les deux extérieur

Je n'ai pas testé le code yout cependant, dans les autres foreach, gardez à l'esprit le même problème de getElementsByTagName ("tr") (ou d'autres balises td, un ..)

+0

Merci vous ab_dev86, Votre belle communication a résolu mon problème :) – Bajrang

1

Si vous voulez juste copier la table que vous pouvez faire ceci:

<?php 
$xml = new DOMDocument(); 
$xml->validateOnParse = true; 
$xml->loadHTMLFile($url); 

$table = $xml->getElementById('machine'); 
echo $xml->saveXML($table); 
?> 
2

getElementsByTagName fonctionne sur l'ensemble du document. Le document a 17 tr éléments, donc il les retournera tous, peu importe où ils sont placés.

Comme vous voulez chercher tr éléments spécifiques, ou plus spécifiquement pour les images à l'intérieur d'une table spécifique, je vous suggère de laisser XPath ce que la plupart des travaux:

$xpath = new DOMXPath($xml); 

$nodes =$xpath->query("//table[@id='machine']/tbody/tr/td/div/a/img"); 

echo 'Found ', $nodes->length, ":\n"; 

foreach($nodes as $node) 
{ 
    $img = $node; 
    $a = $node->parentNode; 
    $aHref = $a->getAttribute('href'); 
    $imgSrc = $img->getAttribute('src'); 
    printf("Element:\n + href: %s;\n +- src: %s\n\n", $aHref, $imgSrc); 
} 

Cette liste de volonté 3 éléments déjà (non 2). Vous devez continuer à décider lesquels tomber, mais cela devrait le rendre plus facile. Demo & Sortie:

Found 3: 
Element: 
+ href: /photos.php?id=7135&p=1; 
+- src: /class/class_Image.php?load=cGhvdG9zL0ExMTk0LmpwZ3wyNTB8MjUwfDF8 

Element: 
+ href: /photos.php?id=7135&p=2; 
+- src: /class/class_Image.php?load=cGhvdG9zL0ExMTk0XzEuanBnfDI1MHwyNTB8MXw= 

Element: 
+ href: /machine-print.php?id=7135; 
+- src: http://www.sterlingmachinery.com/images/quick_quote.jpg 

Une autre astuce: Tout d'abord normaliser vos données dans une structure comme un tableau. Vous pouvez ensuite utiliser votre tableau pour générer la sortie. Cela fait, vous pouvez séparer l'analyse de la sortie, ce qui rendra plus facile pour vous d'atteindre vos objectifs.

  • Analyser le document dans un tableau.
  • Modifiez les valeurs lorsque vous en avez besoin dans ce tableau (par exemple GetMainBaseFromURL).
  • Générez la sortie en fonction du tableau.