Lid |
|
Beste mede webmaster,
Ik ben vandaag de hele dag aan het werk geweest met een agenda systeempje dat met XML werkt, alles 60x veranderd natuurlijk .
nu heb ik echter nog wel een probleem. Eind van de dag kwam ik er achter dat wanneer de feesten niet op datum worden toegevoegd, deze ook niet in volgorde in de agenda verschijnen. Iets waar ik wel op had gehoopt.
Omdat de agenda word uitgelezen via een XML parser, welke er een array van maakt, probeerde ik het met de functie sort(), dit had echter geen resultaat.
Ik zal om het probeem duidelijk te maken nu even me code posten.
eerst me XML file:
<?xml version="1.0" encoding="iso-8859-1"?>
<AGENDA>
<AGENDAPUNT id="1">
<DATE>1144965600</DATE>
<STARTTIME>23:00</STARTTIME>
<ENDTIME>05:00</ENDTIME>
<PARTYNAME>Underground Shock meets SQ-E</PARTYNAME>
<PRESALE>7,50</PRESALE>
<DOORSALE>12,50</DOORSALE>
<LOCATION>Incasa - Leiden</LOCATION>
<AGE>18+</AGE>
</AGENDAPUNT>
<AGENDAPUNT id="2">
<DATE>1154037600</DATE>
<STARTTIME>23:00</STARTTIME>
<ENDTIME>05:00</ENDTIME>
<PARTYNAME>Underground Shock - Sexy summer edition</PARTYNAME>
<PRESALE>FREE</PRESALE>
<DOORSALE>FREE</DOORSALE>
<LOCATION>Ladies First - Alphen aan den Rijn</LOCATION>
<AGE>16+</AGE>
</AGENDAPUNT>
<AGENDAPUNT id="3">
<DATE>1161295200</DATE>
<STARTTIME>23:00</STARTTIME>
<ENDTIME>05:00</ENDTIME>
<PARTYNAME>Underground Shock - Hardcore will never die</PARTYNAME>
<PRESALE>FREE</PRESALE>
<DOORSALE>FREE</DOORSALE>
<LOCATION>Incasa - Leiden</LOCATION>
<AGE>18+</AGE>
</AGENDAPUNT>
<AGENDAPUNT id="4">
<DATE>1164063600</DATE>
<STARTTIME>23:00</STARTTIME>
<ENDTIME>05:00</ENDTIME>
<PARTYNAME>Test - Webedition</PARTYNAME>
<PRESALE>7,-</PRESALE>
<DOORSALE>10,88</DOORSALE>
<LOCATION>UB</LOCATION>
<AGE>12-</AGE>
</AGENDAPUNT>
<AGENDAPUNT id="5">
<DATE>1153519200</DATE>
<STARTTIME>23:00</STARTTIME>
<ENDTIME>05:00</ENDTIME>
<PARTYNAME>Test - Webedition</PARTYNAME>
<PRESALE>7,-</PRESALE>
<DOORSALE>10,88</DOORSALE>
<LOCATION>UB</LOCATION>
<AGE>12-</AGE>
</AGENDAPUNT>
</AGENDA>
<?xml version="1.0" encoding="iso-8859-1"?> <AGENDA> <AGENDAPUNT id="1"> <DATE>1144965600</DATE> <STARTTIME>23:00</STARTTIME> <ENDTIME>05:00</ENDTIME> <PARTYNAME>Underground Shock meets SQ-E</PARTYNAME> <PRESALE>7,50</PRESALE> <DOORSALE>12,50</DOORSALE> <LOCATION>Incasa - Leiden</LOCATION> <AGE>18+</AGE> </AGENDAPUNT> <AGENDAPUNT id="2"> <DATE>1154037600</DATE> <STARTTIME>23:00</STARTTIME> <ENDTIME>05:00</ENDTIME> <PARTYNAME>Underground Shock - Sexy summer edition</PARTYNAME> <PRESALE>FREE</PRESALE> <DOORSALE>FREE</DOORSALE> <LOCATION>Ladies First - Alphen aan den Rijn</LOCATION> <AGE>16+</AGE> </AGENDAPUNT> <AGENDAPUNT id="3"> <DATE>1161295200</DATE> <STARTTIME>23:00</STARTTIME> <ENDTIME>05:00</ENDTIME> <PARTYNAME>Underground Shock - Hardcore will never die</PARTYNAME> <PRESALE>FREE</PRESALE> <DOORSALE>FREE</DOORSALE> <LOCATION>Incasa - Leiden</LOCATION> <AGE>18+</AGE> </AGENDAPUNT> <AGENDAPUNT id="4"> <DATE>1164063600</DATE> <STARTTIME>23:00</STARTTIME> <ENDTIME>05:00</ENDTIME> <PARTYNAME>Test - Webedition</PARTYNAME> <PRESALE>7,-</PRESALE> <DOORSALE>10,88</DOORSALE> <LOCATION>UB</LOCATION> <AGE>12-</AGE> </AGENDAPUNT> <AGENDAPUNT id="5"> <DATE>1153519200</DATE> <STARTTIME>23:00</STARTTIME> <ENDTIME>05:00</ENDTIME> <PARTYNAME>Test - Webedition</PARTYNAME> <PRESALE>7,-</PRESALE> <DOORSALE>10,88</DOORSALE> <LOCATION>UB</LOCATION> <AGE>12-</AGE> </AGENDAPUNT> </AGENDA>
nu dan me xml parser:
<?php
// $file van de pagina zelf!
#$xml_file = "../xml/top10.xml";
$xml_parser = xml_parser_create();
if (!($fp = fopen($xml_file, "r"))) {
die("could not open XML input");
}
$data = fread($fp, filesize($xml_file));
fclose($fp);
xml_parse_into_struct($xml_parser, $data, $vals, $index);
xml_parser_free($xml_parser);
$params = array();
$level = array();
foreach ($vals as $xml_elem) {
if ($xml_elem['type'] == 'open') {
if (array_key_exists('attributes',$xml_elem)) {
list($level[$xml_elem['level']],$extra) = array_values($xml_elem['attributes']);
} else {
$level[$xml_elem['level']] = $xml_elem['tag'];
}
}
if ($xml_elem['type'] == 'complete') {
$start_level = 1;
$php_stmt = '$params';
while($start_level < $xml_elem['level']) {
$php_stmt .= '[$level['.$start_level.']]';
$start_level++;
}
$php_stmt .= '[$xml_elem[\'tag\']] = $xml_elem[\'value\'];';
eval($php_stmt);
}
}
// om de array af te drukken gebuik:
/*echo "<pre>";
print_r($params);
echo "</pre>;*/
?>
<?php // $file van de pagina zelf! #$xml_file = "../xml/top10.xml"; if (!($fp = fopen($xml_file, "r"))) { die("could not open XML input"); } foreach ($vals as $xml_elem) { if ($xml_elem['type'] == 'open') { list($level[$xml_elem['level']],$extra) = array_values($xml_elem['attributes']); } else { $level[$xml_elem['level']] = $xml_elem['tag']; } } if ($xml_elem['type'] == 'complete') { $start_level = 1; $php_stmt = '$params'; while($start_level < $xml_elem['level']) { $php_stmt .= '[$level['.$start_level.']]'; $start_level++; } $php_stmt .= '[$xml_elem[\'tag\']] = $xml_elem[\'value\'];'; } } // om de array af te drukken gebuik: /*echo "<pre>"; print_r($params); echo "</pre>;*/ ?>
Wanneer je bijde bestanden tot mekaar voegd, komt er een mooie uitput op je systeem Dat werkt dus allemaal.
Nu het probeem bestand:
<?php
// wat is de xml file?
$xml_file = 'xml/agenda.xml';
// include parser
include('main_php/xml_parser.php');
// tel hoeveel agenda punten er zijn
$count = count($params['AGENDA']);
// timestamp voor datum vergelijking
$nu = time();
$datum = date("d-m-Y");
// Bericht
echo "<p>Hier vind u een overzicht van feesten waar DJ Clone of DJ Doubleganger zal draaien. <br>
Ook Underground Shock feesten staan op deze website.<br />";
// Nieuwe feesten
echo "<h1>Feesten in de toekomst</h1>";
// loop door de agendapunten heen
for($i=0;$i<=$count;$i++){
// geef alleen datum is de toekomst weer!
if($params['AGENDA'][$i]['DATE'] >= $datum){
// oke datum in de toekomst
echo $params['AGENDA'][$i]['DATE']." - ".$params['AGENDA'][$i]['PARTYNAME']."<br />";
}
}
// oude feesten
echo "<h1>Feesten in het verleden</h1>";
for($i=1;$i<=$count;$i++){
// geef alleen datum is de toekomst weer!
if($params['AGENDA'][$i]['DATE'] < $datum){
// oke datum in de toekomst
echo $params['AGENDA'][$i]['DATE']." - ".$params['AGENDA'][$i]['PARTYNAME']."<br />";
}
}
?>
<?php // wat is de xml file? $xml_file = 'xml/agenda.xml'; // include parser include('main_php/xml_parser.php'); // tel hoeveel agenda punten er zijn $count = count($params['AGENDA']); // timestamp voor datum vergelijking // Bericht echo "<p>Hier vind u een overzicht van feesten waar DJ Clone of DJ Doubleganger zal draaien. <br> Ook Underground Shock feesten staan op deze website.<br />"; // Nieuwe feesten echo "<h1>Feesten in de toekomst</h1>"; // loop door de agendapunten heen for($i=0;$i<=$count;$i++){ // geef alleen datum is de toekomst weer! if($params['AGENDA'][$i]['DATE'] >= $datum){ // oke datum in de toekomst echo $params['AGENDA'][$i]['DATE']." - ".$params['AGENDA'][$i]['PARTYNAME']."<br />"; } } // oude feesten echo "<h1>Feesten in het verleden</h1>"; for($i=1;$i<=$count;$i++){ // geef alleen datum is de toekomst weer! if($params['AGENDA'][$i]['DATE'] < $datum){ // oke datum in de toekomst echo $params['AGENDA'][$i]['DATE']." - ".$params['AGENDA'][$i]['PARTYNAME']."<br />"; } } ?>
Het is dus de bedoeling dat de feeste met de datum in de toekomst bij 'feesten in de toekomst' komen en bij 'feesten in het verleden' de oude feesten. echter wel gesorteerd op datum.
iemand ideeen hoe ik dit aan moet pakken??
Heel erg bedankt voor de hulp:!:
|