Please Help! - Problem with PHP reading my XML Correctly

Discussion in 'PHP' started by rydog65, Mar 26, 2008.

  1. #1
    hi there, I have a PHP page reading my XML document and creating an HTML table with a row for each entry, and a column for each attribute for that entry. There are currently two entries in the XML with 6 attributes each.

    My PHP code is working correctly so far as pulling the XML in and printing it to the HTML table, but it is creating an extra blank entry for some reason, and I cannot figure out why. It adds a blank entry when it reads the XML and prints a row with no values...can anyone see my mistake?

    Below is the PHP code on my PHP page:

    
    <?php
    function start_tag($parser, $name, $attrs){
        global $table_string;
        $table_string .= "<tr>
            <td width=\"100\" align=left bgcolor=#e7eee8 height=\"120px\" valign=\"middle\">
                <span class=\"listingpadding03\"><img src=\"../images/thumbs/$attrs[title].gif\" width=\"100\" height=\"100\" align=\"middle\" /></span>
            </td>
            <td width=\"90\" align=\"center\" bgcolor=#e7eee8 height=\"120px\">
                <span class=\"listingpadding03\">$attrs[artist]</span>
            </td>
            <td width=\"170\" align=\"center\" bgcolor=#e7eee8 height=\"120px\">
                $attrs[path]
            </td>
            <td width=\"120px\" align=\"center\" bgcolor=#e7eee8 height=\"120px\">
                <span class=\"listingpadding03\">$attrs[squarefootage]</span>
            </td>
            <td width=\"120px\" align=\"center\" bgcolor=#e7eee8 height=\"120px\">
                <span class=\"listingpadding03\">&nbsp;&nbsp;&nbsp;&nbsp; $attrs[bedsbaths]</span>
            </td>
            <td width=\"90px\" align=\"right\" bgcolor=#e7eee8 height=\"120px\">
                <span class=\"listingpadding03\">$attrs[price] &nbsp;&nbsp;</span>
            </td>
        </tr>
        <tr>
            <td colspan=\"6\" height=\"7\" bgcolor=\"#ffffff\"></td>
        </tr>";
    }
    function end_tag($parser, $name){}
    $parser = xml_parser_create();
    xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
    xml_set_element_handler($parser, "start_tag", "end_tag");
    $table_string = "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" bgcolor=\"#e7eee8\" width=\"816\" class=\"phptablefont\">
            <tr><td colspan=\"6\" bgcolor=\"#f6f6f6\"><img src=\"../images/list-fo.gif\" alt=\"Buffington Available Homes\" width=\"750\" height=\"22\" /></td></tr><tr><td colspan=\"6\"><img src=\"../images/list-head.gif\" alt=\"Buffington Available Homes\" width=\"816\" height=\"22\" /></td></tr>";
    xml_parse($parser, file_get_contents("playlist.xml")) or die("Error parsing XML file");
    $table_string .= "</table>";
    echo $table_string;
    ?> 
    
    PHP:
    And below here is the very simple XML file with two entries, and six attributes for each (each entry is called "song" and each has the following values: "title", "artist", "path", "squarefootage", "bedsbaths", and "price".).

    
    <songs><song title="mckinleya" artist="testing" path="one" squarefootage="two" bedsbaths="three" price="four" /><song title="mckinleya" artist="testing" path="one" squarefootage="two" bedsbaths="three" price="four" /></songs>
    
    Code (markup):
    Thank you in advance if you can help!!! -

    Ryan
     
    rydog65, Mar 26, 2008 IP