Zwei XML-Dateien auswerten und mit Datum abgleichen und anzeigen
spiminator
- javascript
Liebe Forenmitglieder,
erstmal wollte ich sagen, dass ich diese Seite sehr hilfreich finde, denn Sie ist auch für Newbies leicht verständlich und es macht echt Spass damit zu arbeiten.
Zu meinem Anliegen. Ich bin noch ein totaler Anfänger in Sachen Programmieren von Internetseiten und hätte gerne ein paar Ratschläge von euch, am liebsten mit ein paar Links zum Selbststudium. Ich möchte gerne eine praktischere Lösung für eine Notdienstanzeige für eine Apotheke basteln. Praktischer insofern, als dass die jetzige Notdienstanzeige noch auf DOS läuft auf einem risiegen alten PC und so langsam wird es schwierig diese alten Schätzchen so auszutricksen, dass sie fehlerfrei laufen. Ich habe mir daher überlegt, dass ich mal versuchen könnte diese so zu ersetzen, dass man mit zwei in Excel editierbaren Tabellen eine lokale Htmlseite versorgt, welche sich täglich aktualisiert und eine Tabelle der Apotheke anzeigt, welche in den nächsten 5 Tagen Notdienst haben. ich habe also eine XML-Datei erstellt welche die Adressdaten der Unterschiedlichen Apotheken enthält und eine weitere, welche die Wochentage, das Datum und die entsprechenden Turni mit Nummern enthält. Die Nummern der zweiten Tabelle sollen nun mit der ersten Tabelle ausgewertet werden um die Daten mit Namen und Adressen anzeigen zu können. Dazu habe ich nach einigem googlen und lesen eine Htmldatei erstellt, welche das tägliche Datum bestimmt und mit javascript die beiden XML-Dateien in zwei untersiedlichen Klassen mit zwei unterschiedlichen Funktionen einliest und durchläuft.
Nun meine Frage, gibt es eine einfachere Methode, oder ist das ein guter Ansatz. Ausserdem weiss ich nun nicht genau wie ich weiter vorgehen soll, ich werde heute abend auch gerne mal meine bisherigen Dateien anfügen, habe Sie zur Zeit nicht hier, da ich nicht zu Hause bin. Hat jemand etwas zu lesen für mich, oder weiss jemand wie ich da weitermachen soll, ich hänge nähmlich gerade etwas und komme nicht weiter.
Bis jetzt habe ich also das Datum bestimmt, die Dateien eingelesen in Klassen und wollte jetzt die Nummern in beiden Dateien vergleichen um das Datum auszulesen. Dann müsste ich das Tagesdatum mit der XML Datei vergleichen und die nächsten 5 Tage in einer Tabelle anzeigen lassen. Ich denke den Rest mit Formatierung der Tabelle auf der Seite mit Divtags und so bekomme ich hin, aber die Vergleiche der Dateien und des Datums und das herstellen der Tabelle mit den 5 folgenden Tagen überfordert mich etwas. Ich habe da noch nicht genug Wissen um zu finden wonach ich suchen muss um das zu lösen...
Ich wäre für jeden Denkansatz dankbar. Falls ihr euch fragt, warum es in unterschiedlichen Tabellen sein muss, die Turni wechseln übers Jahr recht häufig und sollten daher einfach mit Excel zu bearbeiten sein, damit man schnell mal was anpassen kann. Und als Html soll es laufen, weil es somit auf nahezu jedem Endgerät laüft.
Liebe Grüße,
Spiminator
Lieber spiminator,
reden wir von einer lokalen Anwendung, sprich: Der Browser lädt lokal vorhandene Dateien und macht eine Seite daraus? Oder reden wir von einer im Internet aufrufbaren Seite?
Liebe Grüße,
Felix Riesterer.
Lieber Felix Riesterer,
wir reden von einer lokalen Anwendung.
Hier mal meine INDEX Datei:
<html>
<head>
<title>Apothekennotdienst</title>
<script language=javascript>
if(window.XMLHttpRequest)
{
xhttp=new XMLHttpRequest();
}
else // ie5/6
{
xhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xhttp.open("GET","notdienst.xml",false);
xhttp.send("");
xmlDoc=xhttp.responseXML;
xhttp.open("GET","apotheken.xml",false);
xhttp.send("");
xmlDocApotheken=xhttp.responseXML;
var date = new Date();
var dd = date.getDate();
var mm = date.getMonth() + 1;
var yy = date.getFullYear();
var HH = date.getHours();
var MM = date.getMinutes();
function datum() {
var d = new Date();
var datum = yy.toString();
datum += + mm.toString();
datum += + dd.toString();
document.write(datum);
}
function EintragKlasse(wochentag, tag, monat, sk, eu) {
this.wochentag = wochentag;
this.tag = tag;
this.monat = monat;
this.sk = sk;
this.eu = eu;
}
function ApothekeKlasse(eu, sk, name, tel, strasse, plz, ort) {
this.eu = eu;
this.sk = sk;
this.name = name;
this.tel = tel;
this.strasse = strasse;
this.plz = plz;
this.ort = ort;
}
var xmlContent=xmlDoc.getElementsByTagName("eintrag");
var eintraege = new Array();
for (var i = 1; i < xmlContent.length; i++) {
var ieintrag = xmlContent[i];
var iwochentag = ieintrag.getElementsByTagName("wochentag")[0].textContent;
var itag = ieintrag.getElementsByTagName("tag")[0].textContent;
var imonat = ieintrag.getElementsByTagName("monat")[0].textContent;
var isk = ieintrag.getElementsByTagName("sk")[0].textContent;
var ieu = ieintrag.getElementsByTagName("eu")[0].textContent;
var eintrag = new EintragKlasse(iwochentag, itag, imonat, isk, ieu);
eintraege.push(eintrag);
}
var nurMonat1 = new Array();
for(var k = 0; k < eintraege.length; k++) {
if (eintraege[k].monat == "1")
{
nurMonat1.push(eintraege[k]);
}
}
alert('nur monat 1: ' + nurMonat1.length);
var nurMonat1UndTag = new Array();
for(var k = 0; k < nurMonat1.length; k++) {
if (nurMonat1[k].tag == "2")
{
nurMonat1UndTag.push(nurMonat1[k]);
}
}
alert('monat und tag: ' + nurMonat1UndTag.length);
for(var k = 0; k < nurMonat1UndTag.length; k++) {
}
var xmlApotheken=xmlDocApotheken.getElementsByTagName("apotheke");
var apotheken = new Array();
for (var i = 1; i < xmlApotheken.length; i++) {
var apotheke = xmlApotheken[i];
var eu = apotheke.getElementsByTagName("eu")[0].textContent;
var sk = apotheke.getElementsByTagName("sk")[0].textContent;
var name = apotheke.getElementsByTagName("name")[0].textContent;
var tel = apotheke.getElementsByTagName("tel")[0].textContent;
var strasse = apotheke.getElementsByTagName("strasse")[0].textContent;
var plz = apotheke.getElementsByTagName("plz")[0].textContent;
var ort = apotheke.getElementsByTagName("ort")[0].textContent;
var a = new ApothekeKlasse(eu, sk, name, tel, strasse, plz, ort);
apotheken.push(a)
}
//var tag = xmlDoc.firstChild.nodeValue("tag");
//var wochentag = xmlDoc.firstChild.nodeValue("wochentag");
//var monat = xmlDoc.firstChild.nodeValue("monat");
function tag()
{
for (i=0;i<xmlContent.length;i++) {
document.write(tag[i].firstChild.nodeValue("tag")[0].childNodes[0].nodeValue);
}
}
function monat()
{
for (i=0;i<xmlContent.length;i++) {
document.write(monat[i].firstChild.nodeValue("monat")[0].childNodes[0].nodeValue);
}
}
function jmt() {
var d = new Date();
var jmt = yy.toString();
jmt += + monat.toString();
jmt += + tag.toString();
document.write(jmt);
}
//--></script>
<script type="text/javascript"><!--
var monatsnamen = new Array(12);
monatsnamen[0] = "Januar"; monatsnamen[1]="Februar";
monatsnamen[2] = "März"; monatsnamen[3]="April";
monatsnamen[4] = "Mai"; monatsnamen[5]="Juni";
monatsnamen[6] = "Juli"; monatsnamen[7]="August";
monatsnamen[8] = "September"; monatsnamen[9]="Oktober";
monatsnamen[10] = "November";
monatsnamen[11]="Dezember";
function tagesdatum() {
var d = new Date();
var datumsstring = d.getDate();
datumsstring += ". " + monatsnamen[d.getMonth()];
datumsstring += " " + d.getFullYear();
document.write(datumsstring);
}
//--></script>
<link href="notdienst.css" rel="stylesheet" type="text/css">
</head>
<body>
<div id="container"//Hintergrund>
<div id="text">
<div id="h1">
<h1>Apothekennotdienst</h1>
<div>
Guten Tag, heute ist der
<script type="text/javascript"><!--
tagesdatum();
//--></script>.
<script type="text/javascript"><!--
document.write("<p>Heute haben die folgenden Apotheken Notdienst:</p>");
datum() - jmt();
</script>
<script type="text/javascript"><!--
if (ieu()==eu()) {
var meineTabelle = new table('cols="5"','rows="11"','border="1"','bgcolor="#FFFFCC"');
meineTabelle.contentArraysToArguments();
meineTabelle.content[0][0].value = "<b>Wochentag</b>";
meineTabelle.content[0][1].value = "<b>Datum</b>";
meineTabelle.content[0][2].value = "<b>Apotheken</b>";
meineTabelle.content[0][3].value = "<b>Telefonnummern</b>";
meineTabelle.content[0][4].value = "<b>Adressen</b>";
meineTabelle.content[1][0].value = iwochentag();
meineTabelle.content[1][1].value = datum();
meineTabelle.content[1][2].value = name();
meineTabelle.content[1][3].value = tel();
meineTabelle.content[1][4].value = strasse() "-" plz()"-" ort();
meineTabelle.content[2][2].value = name()+13;
meineTabelle.content[2][3].value = tel()+13;
meineTabelle.content[2][4].value = strasse()+13 "-" plz()+13"-" ort()+13;
meineTabelle.content[3][0].value = iwochentag()+1;
meineTabelle.content[3][1].value = datum()+1;
meineTabelle.content[3][2].value = name()-12;
meineTabelle.content[3][3].value = tel()-12;
meineTabelle.content[3][4].value = strasse()-12 "-" plz()-12"-" ort()-12;
meineTabelle.content[4][2].value = name()+13;
meineTabelle.content[4][3].value = tel()+13;
meineTabelle.content[4][4].value = strasse()+13 "-" plz()+13"-" ort()+13;
meineTabelle.content[5][0].value = iwochentag()+1;
meineTabelle.content[5][1].value = datum()+1;
meineTabelle.content[5][2].value = name()-12;
meineTabelle.content[5][3].value = tel()-12;
meineTabelle.content[5][4].value = strasse()-12 "-" plz()-12"-" ort()-12;
meineTabelle.content[6][2].value = name()+13;
meineTabelle.content[6][3].value = tel()+13;
meineTabelle.content[6][4].value = strasse()+13 "-" plz()+13"-" ort()+13;
meineTabelle.content[7][0].value = iwochentag()+1;
meineTabelle.content[7][1].value = datum()+1;
meineTabelle.content[7][2].value = name()-12;
meineTabelle.content[7][3].value = tel()-12;
meineTabelle.content[7][4].value = strasse()-12 "-" plz()-12"-" ort()-12;
meineTabelle.content[8][2].value = name()+13;
meineTabelle.content[8][3].value = tel()+13;
meineTabelle.content[8][4].value = strasse()+13 "-" plz()+13"-" ort()+13;
meineTabelle.content[9][0].value = iwochentag()+1;
meineTabelle.content[9][1].value = datum()+1;
meineTabelle.content[9][2].value = name()-12;
meineTabelle.content[9][3].value = tel()-12;
meineTabelle.content[9][4].value = strasse()-12 "-" plz()-12"-" ort()-12;
meineTabelle.content[10][2].value = name()+13;
meineTabelle.content[10][3].value = tel()+13;
meineTabelle.content[10][4].value = strasse()+13 "-" plz()+13"-" ort()+13;
}
</script>
<div>
<div>
</body>
</html>
Sie enthaelt leider auch einige Ansaetze welche mich noch nicht zum Ziel gefuehrt haben ;)
Liebe Gruesse,
Spiminator