Could someone please help me. I’m trying to create an xml list with all the events ordered by date. I’m doing this by using a php script. Right now I have this:
$sql = "SELECT DATE_FORMAT(K.kalender_datum,'%W %d %M %Y') as afhaaldag, A.afval_naam
FROM tblkalender K
INNER JOIN tblafval A
ON A.pk_afval_Id = K.fk_afval_Id
WHERE kalender_datum > CURDATE()
ORDER BY K.kalender_datum";
$query = mysql_query($sql);
$last_date = "";
$tag_open = false;
$xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
$xml .= "<kalender>\n";
for($i = 0; $i<mysql_num_rows($query); $i++)
{
$itemrow = mysql_fetch_assoc($query);
if($last_date != $itemrow['kalender_datum'])
{
//als de laatste datum die gebruikt is niet gelijk is aan de datum die hij binnen krijgt, moet hij een nieuwe afhaaldag beginnen
if($tag_open)
{
$xml .= "\t</afhaaldag>\n";
$tag_open = false;
}
$xml .= "\t<afhaaldag>\n";
$xml .= "\t<datum>" . $itemrow['kalender_datum'] . "</datum>\n";
$xml .= "\t<afval>" . $itemrow['afval_naam'] . "</afval>\n";
$last_date = $itemrow['kalender_datum'];
}
else
{
$xml .= "\t<afval>" . $itemrow['afval_naam'] . "</afval>\n";
$last_date = $itemrow['kalender_datum'];
$tag_open = true;
}
}
$xml .= "</kalender>";
echo $xml;
That gives me this output in xml:
<kalender>
<afval>Grofvuil</afval>
<afval>Restafval</afval>
<afval>GFT</afval>
<afval>PMD</afval>
<afval>Snoeiresten</afval>
<afval>GFT</afval>
<afval>Restafval</afval>
<afval>GFT</afval>
<afval>PMD</afval>
<afval>GFT</afval>
<afval>Snoeiresten</afval>
<afval>Papier en karton</afval>
<afval>Grofvuil</afval>
<afval>Restafval</afval>
<afval>GFT</afval>
<afval>PMD</afval>
</kalender>
But what I need is this:
<kalender>
<afhaaldag>
<datum>2012-01-02</datum>
<afval>GFT</afval>
<afval>Restafval</afval>
<afval>PMD</afval>
</afhaaldag>
<afhaaldag>
<datum>2012-01-17</datum>
<afval>Papier en karton</afval>
</afhaaldag>
<afhaaldag>
<datum>2012-01-23</datum>
<afval>GFT</afval>
</afhaaldag>
</kalender>
Does someone know how I can do it. I know I need some sort of loop (I’m guessing a for loop). Could someone please help me out on this one.
I’m using python here, but you can follow the code without problems:
And this is the output:
[Finished]
The output is exact your are looking for, does it? Try to check again, because in your new output the datum tag isnt’ there, so that’s wierd.
Notice I add two extra lines:
and remove the if statement in the else clause.
Code: http://dl.dropbox.com/u/3389104/kal.py
——-End of Edit
My comment (in code):
Excuse some typos, i don’t have a pc with php right now. This code is my general idea, i dunno it works.