pake Posted June 8, 2011 Share Posted June 8, 2011 I'm importing data from xml to my php-page. Since I'm a php-n00b I don't know how to make this easier (more dynamic) and I'm here to ask help (in order to learn). It's easier to explain what I want by showing my script so here's my code atm: <?php // load xml $xml = 'matches.xml'; echo "xml loaded: $xml <br /><br />"; //debug $dom = new DOMDocument; $dom->load($xml); if (!$dom) { echo 'Error while parsing the XML ($xml)'; exit; } // get the data from xml to the variable $XMLdata $XMLdata = simplexml_import_dom($dom); //echo $XMLdata->name[0]; //debug $link1 = $XMLdata->link[0]; $day1 = $XMLdata->day[0]; $time1 = $XMLdata->time[0]; $place1 = $XMLdata->place[0]; $match1 = $XMLdata->match[0]; list($home1,$away1) = explode ( ' - ' , $match1 ) ; $score1 = $XMLdata->score[0]; $link2 = $XMLdata->link[1]; $day2 = $XMLdata->day[1]; $time2 = $XMLdata->time[1]; $place2 = $XMLdata->place[1]; $match2 = $XMLdata->match[1]; list($home2,$away2) = explode ( ' - ' , $match2 ) ; $score2 = $XMLdata->score[1]; $link3 = $XMLdata->link[2]; $day3 = $XMLdata->day[2]; $time3 = $XMLdata->time[2]; $place3 = $XMLdata->place[2]; $match3 = $XMLdata->match[2]; list($home3,$away3) = explode ( ' - ' , $match3 ) ; $score3 = $XMLdata->score[2]; $link4 = $XMLdata->link[3]; $day4 = $XMLdata->day[3]; $time4 = $XMLdata->time[3]; $place4 = $XMLdata->place[3]; $match4 = $XMLdata->match[3]; list($home4,$away4) = explode ( ' - ' , $match4 ) ; $score4 = $XMLdata->score[3]; // ...continues // add rows to the table for ($i=1; $i<=25; $i++) { $link = "link".$i; $day = "day".$i; $time = "time".$i; $place = "place".$i; $home = "home".$i; $away = "away".$i; $score = "score".$i; echo '<tr>'; echo '<td width="20%" align="right"><a href="#'.$$link.'" onclick="loadContent(\'#content\', \'matcht_raportti.php?id=\''.$$link.'\')">'.$$day.'</a></td>'; echo '<td width="8%" align="center"><a href="#'.$$link.'" onclick="loadContent(\'#content\', \'matcht_raportti.php?id=\''.$$link.'\')">'.$$time.'</td>'; echo '<td width="20%" align="left"><a href="#'.$$link.'" onclick="loadContent(\'#content\', \'matcht_raportti.php?id=\''.$$link.'\')">'.$$place.'</td>'; echo '<td width="20%" align="left"><a href="#'.$$link.'" onclick="loadContent(\'#content\', \'matcht_raportti.php?id=\''.$$link.'\')">'.$$home.'</td>'; echo '<td width="20%" align="left"><a href="#'.$$link.'" onclick="loadContent(\'#content\', \'matcht_raportti.php?id=\''.$$link.'\')">'.$$away.'</td>'; echo '<td align="center"><a href="#'.$$link.'" onclick="loadContent(\'#content\', \'matcht_raportti.php?id=\''.$$link.'\')">'.$$score.'</td>'; echo '</tr>'; } ?> As you can see it's not wise to fetch the xml nodes one by one manually. How could I get all the data from the xml in one loop? So how should this part below be? $linkki1 = $XMLdata->linkki[0]; $paiva1 = $XMLdata->paiva[0]; $kello1 = $XMLdata->kello[0]; $paikka1 = $XMLdata->paikka[0]; $ottelu1 = $XMLdata->ottelu[0]; list($koti1,$vieras1) = explode ( ' - ' , $ottelu1 ) ; $tulos1 = $XMLdata->tulos[0]; If there's anything else you would change I'm all ears... I know the for-loop isn't too classy either but at least it works. I'm open for suggestions regarding to that too. Link to comment https://forums.phpfreaks.com/topic/238764-importing-xml-easier-way-to-get-data-into-variables/ Share on other sites More sharing options...
pake Posted June 8, 2011 Author Share Posted June 8, 2011 Hehe, found an easier way to do this - though it required a small change in my xml too. <?php // load xml for the match details $xml = 'matches.xml'; echo "xml loaded: $xml <br /><br />"; //debug $dom = new DOMDocument; $dom->load($xml); if (!$dom) { echo 'Error while parsing the XML ($xml)'; exit; } // get the data from xml to the variable $XMLdata $XMLdata = simplexml_import_dom($dom); foreach($XMLdata->matchdetails as $matchdetails) { $link = $matchdetails->link; $date = $matchdetails->date; $time = $matchdetails->time; $place = $matchdetails->place; $match = $matchdetails->match; list($home,$away) = explode ( ' - ' , $match ); $score = $matchdetails->score; echo '<tr>'; echo '<td width="20%" align="right"><a href="#'.$link.'" onclick="loadContent(\'#content\', \'ottelut_raportti.php?id=\''.$link.'\')">'.$date.'</a></td>'; echo '<td width="8%" align="center"><a href="#'.$link.'" onclick="loadContent(\'#content\', \'ottelut_raportti.php?id=\''.$link.'\')">'.$time.'</td>'; echo '<td width="20%" align="left"><a href="#'.$link.'" onclick="loadContent(\'#content\', \'ottelut_raportti.php?id=\''.$link.'\')">'.$place.'</td>'; echo '<td width="20%" align="left"><a href="#'.$link.'" onclick="loadContent(\'#content\', \'ottelut_raportti.php?id=\''.$link.'\')">'.$home.'</td>'; echo '<td width="20%" align="left"><a href="#'.$link.'" onclick="loadContent(\'#content\', \'ottelut_raportti.php?id=\''.$link.'\')">'.$away.'</td>'; echo '<td align="center"><a href="#'.$link.'" onclick="loadContent(\'#content\', \'ottelut_raportti.php?id=\''.$link.'\')">'.$score.'</td>'; echo '</tr>'; } ?> </table> Link to comment https://forums.phpfreaks.com/topic/238764-importing-xml-easier-way-to-get-data-into-variables/#findComment-1226877 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.