Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst XML auslesen und Werte vergleichen

Mitglied: pennertenner

pennertenner (Level 1) - Jetzt verbinden

04.08.2013 um 16:12 Uhr, 2856 Aufrufe, 3 Kommentare

Hallo,
ich arbeite zur Zeit an einer mobilen Version unserer Handballvereinsseite. Dabei liegt mir der aktuelle Spielplan in Form einer XML-Datei vor. [siehe Unten]
Nun möchte ich auf einer Seite alle Informationen über den Spielparter zusammenfassen. [Ergebnis letztes Jahr/Hinspiel/...]
Dazu rufe ich meine "Details.php"auf und übermittle via GET meine Spieltags-ID. (Aufruf: ".../Details.php?ID=1)
Während der Saison finden wie schon erwähnt ja die Hin- und Rückrunde statt. Also gehe ich die einzelnen XML-Nodes via foreach durch, bis ich meine zwei Vereine habe. [$Verein1 = Heim; $Verein2 = Gast] [Ermittelt durch ID] Danach gehe ich die XML noch einmal durch und suche nun aber die ID des zweiten Spiels der Saison indem ich als IF-Bedingung angebe das $Verein2 nun Heim und $Verein1 nun Gast sein soll. Wenn ich das ganze dann ausgebe erhalte ich letztendlich aber nur 2 mal die Ausgabe des via ID aufgerufenen Spiels.

Sitze nun schon einige Stunden dran und verzweifele. Weiß jemand wo mein Fehler liegt? Kann mir jemand helfen? Wäre ziemlich dankbar dafür.

Die Daten in der XML stimmen übrigens überein. Sprich, der Name des Heimvereins beim ersten Spiel ist gleich dem, des Gastvereins beim Rückspiel und umgekehrt.

Liebe Grüß

PHP-Skript:
01.
<?php 
02.
	if(!isset($_GET['ID'])) 
03.
	{		 
04.
		echo "<div class=\"divDet\"
05.
			<h3 class=\"error\">Fehlerhafte Datenübertragung</h3> 
06.
		</div>";		 
07.
08.
	else 
09.
10.
		//Konfiguration 
11.
		$strXMLPfad = "data/spielplan/"
12.
		$strDateiName = "actual.xml"
13.
		$strDat = $strXMLPfad . $strDateiName
14.
	 
15.
		//XML einlesen 
16.
		$xml = simplexml_load_file($strDat); 
17.
 
18.
		$IDSpiel = $_GET['ID']; 
19.
		 
20.
		$Verein1 = ""
21.
		$Verein2 = ""
22.
	 
23.
		foreach($xml->Spieltag as $ST
24.
25.
			if($ST->ID == $IDSpiel
26.
27.
				$Verein1 = $ST->Heim; 
28.
				$Verein2 = $ST->Gast; 
29.
30.
31.
		 
32.
		if($Verein1 != "" || $Verein2 != ""
33.
34.
			echo "<div class=\"divDet\">";	 
35.
			foreach($xml->Spieltag as $STg
36.
37.
				if($STg->Heim == $Verein1 && $STg->Gast == $Verein2
38.
39.
					echo "<h4>$Verein1 vs. $Verein2</h4>"
40.
					echo "Saison $STg->SaisonVorher: $STg->ErgVorher<br>"
41.
					echo "Saison $saison: $STg->ES<br>"
42.
					 
43.
					if($STg->Hinspiel != ""
44.
45.
						echo "Hinspiel $saison: $STg->Hinspiel<br>"
46.
47.
48.
				 
49.
				if($STg->Heim == $Verein2 && $STg->Gast == $Verein1
50.
				{				 
51.
					echo "<h4>$Verein2 vs. $Verein1</h4>"
52.
					echo "Saison $STg->SaisonVorher: $STg->ErgVorher<br>";	 
53.
					echo "Saison $saison: $STg->ES<br>"
54.
					 
55.
					if($STg->Hinspiel != ""
56.
					{		 
57.
						echo "Hinspiel $saison: $STg->Hinspiel<br>"
58.
					}			 
59.
60.
			}			 
61.
			echo "</div>"
62.
63.
		else 
64.
65.
				echo "<div class=\"divDet\"
66.
								<h3 class=\"error\">Fehlerhafte ID</h3> 
67.
							</div>";		 
68.
69.
70.
?>

XML:
01.
<Spielplan> 
02.
	<Spieltag> 
03.
		<ID>1</ID> 
04.
		<Tag>1. Spieltag</Tag> 
05.
		<Heim>Verein1</Heim> 
06.
		<HeimLogo>img/V1.jpg</HeimLogo> 
07.
		<Gast>Verein 2</Gast> 
08.
		<GastLogo>img/B2.jpg</GastLogo> 
09.
		<HZ>10:14</HZ> 
10.
		<ES>26:22</ES> 
11.
		<Datum>20.07.2013</Datum> 
12.
		<Uhrzeit>22:00</Uhrzeit> 
13.
		<Halle>Test-Halle</Halle> 
14.
		<ErgVorher>22:22</ErgVorher> 
15.
		<SaisonVorher>2012/13</SaisonVorher> 
16.
		<Hinspiel></Hinspiel> 
17.
	</Spieltag> 
18.
	<Spieltag> 
19.
                .... 
20.
  	</Spieltag> 
21.
</Spielplan>
Mitglied: colinardo
04.08.2013, aktualisiert um 19:57 Uhr
Hallo pennertenner,
bei simplexml-Objekten sind die Eigenschaften selber noch Objekte die du durch Zuweisen eines Typs erst noch expandieren musst um sie vergleichen zu können.
Dazu schreibst du beim Zugriff auf die Eigenschaft in dieser Form
01.
(string) $STg->Heim
Also überall wo du den Inhalt eines Elements als String erhalten möchtest schreibst du (string) davor, bei Integerwerten (int) usw.
Siehe dazu die Kommentare der PHP Referenz des simplexml-Elements:
http://www.php.net/manual/de/class.simplexmlelement.php

Grüße Uwe
Bitte warten ..
Mitglied: pennertenner
04.08.2013 um 18:00 Uhr
Wow. Ich war auf der Seite habs aber wohl leider im Frust überlesen.

Besten Dank! Es funktioniert
Bitte warten ..
Mitglied: colinardo
05.08.2013, aktualisiert um 12:45 Uhr
Vielleicht noch als Alternative zum parsen des XML-Files mit einer Schleife. Für solche Fälle hält das Simple-XML-Element noch die Funktion $xml->xpath('XPATHEXPRESSION') bereit mit der sich ziemlich einfach Elemente mit bestimmtem Inhalt ohne eine Schleife finden lassen.
In diesem Beispiel wird ein Element Spieltag mit einem enthaltenen ID Element dessen Wert 2 beträgt gesucht.
01.
$xml = simplexml_load_file('test.xml'); 
02.
$result = $xml->xpath('//Spieltag[ID=2]'); 
03.
if (count($result) == 1){ 
04.
	echo "ID: " . $result[0]->ID . "<br />Heim: " . $result[0]->Heim . " <br /> Gast: " . $result[0]->Gast; 
05.
}else
06.
	echo("Keine Element gefunden"); 
07.
}
Die XPATH-Syntax ist ziemlich simpel und einfach zu lernen, dafür aber mächtig wenn du Elemente in XML-Dateien suchst (http://www.w3schools.com/xpath/xpath_syntax.asp).

Vielleicht hilft dir das irgendwann mal ...

Grüße Uwe
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Powershell: Wert aus Registry auslesen und mit vorhandenem Wert vergleichen

gelöst Frage von BrowserlauserBatch & Shell5 Kommentare

Hallo, ich stehe vor folgendem Problem: Ich möchte per Powershell aus der Registry einen bestimmten Wert auslesen. Beispiel: in ...

XML

Xml: Werte mit xsl dividieren

gelöst Frage von tester23XML3 Kommentare

Hallo zuammen, nach langer Zeit hab ich wieder mal eine Frage. Ich hoffe jemand kann mit helfen? Ich habe ...

Batch & Shell

XML nach Liste mit Werten durchsuchen

Frage von bockerBatch & Shell12 Kommentare

Guten Morgen. Ich habe folgendes Problem: Ich habe eine XML Datei mit etlichen Angaben die ca 30.000 Datensätze hat. ...

Microsoft Office

Excel Werte vergleichen

Frage von 103148Microsoft Office5 Kommentare

Hallo, ich habe eine Liste ( ca. 200 Einträge ) mit Kistengröße wie folgt: Länge, Breite, Höhe daneben wird ...

Neue Wissensbeiträge
Windows 10

Neue Sicherheitslücke in Windows 10 (Version 1709) durch Google öffentlich geworden

Information von kgborn vor 12 StundenWindows 10

Vor ein paar Tagen haben Googles Sicherheitsforscher vom Projekt Zero eine Sicherheitslücke im Edge-Browser publiziert. Jetzt wurde eine weitere ...

iOS
IOS 11.2.6 verfügbar
Information von sabines vor 18 StundeniOS

Mit dem Update soll der Bug behoben werden, bei dem eine bestimmte Zeichenkette IOS zum Absturz gebracht hat.

Sicherheit
Sicherheitsrisiko: Die Krux mit 7-Zip
Information von kgborn vor 1 TagSicherheit8 Kommentare

Bei vielen Anwendern ist das Tool 7-Zip zum Entpacken von Archivdateien im Einsatz. Die Software ist kostenlos und steht ...

Internet

Datendealing im WWW Tracking Methoden immer brutaler

Information von sabines vor 1 TagInternet

Interessanter Artikel zum Thema Tracking im WWW und die immer "besseren" Methoden des Trackings. Professor Arvind Narayanan (Princeton-Universität) betreibt ...

Heiß diskutierte Inhalte
Router & Routing
LANCOM VPN CLIENT einrichten
Frage von Finchen961988Router & Routing27 Kommentare

Hallo, ich habe ein Problem und hoffe ihr könnt mir helfen, wir haben einen Kunden der hat einen Speedport ...

Windows Server
AD DS findet Domäne nicht, behebbar?
Frage von schapitzWindows Server25 Kommentare

Guten Tag, ich habe bei einem Kunden ein Problem mit den AD DS. Umgebung ist folgende: Windows Server 2016 ...

LAN, WAN, Wireless
VPN Cisco ASA5505 PaloAlto PA-200
gelöst Frage von YannoschLAN, WAN, Wireless22 Kommentare

Hallo zusammen, ich würde gerne ein Site-to-Site VPN zwischen den beiden Standorten aufbauen. PaloAlto PA200 Internetanschluss Deutsche Telekom GK ...

SAN, NAS, DAS
Qnap TS-453S Pro - Anbindung Active Directory
Frage von JuckieSAN, NAS, DAS13 Kommentare

Hallo zusammen, ich habe hier eine Qnap TS-453S Pro die sich mal so absolut gar nicht in das Active ...