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

Frage Entwicklung PHP

Mitglied: pennertenner

pennertenner (Level 1) - Jetzt verbinden

04.08.2013 um 16:12 Uhr, 2789 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
Apple

IOS 11.2.1 stopft HomeKit-Remote-Lücke

Tipp von BassFishFox vor 2 StundenApple

Das Update für iPhone, iPad und Apple TV soll die Fernsteuerung von Smart-Home-Geräten wieder in vollem Umfang ermöglichen. Apple ...

Windows 10

Windows 10 v1709 EN murkst bei den Regionseinstellungen

Tipp von DerWoWusste vor 8 StundenWindows 10

Dieser kurze Tipp richtet sich an den kleinen Personenkreis, der Win10 v1709 EN-US frisch installiert und dabei die englische ...

Webbrowser

Kein Ton bei Firefox Quantum über RDP

Tipp von Moddry vor 8 StundenWebbrowser

Hallo Kollegen! Hatte das Problem, dass der neue Firefox bei mir auf der Kiste keinen Ton hat, wenn ich ...

Internet

EU-DSGVO: WHOIS soll weniger Informationen liefern

Information von sabines vor 20 StundenInternet4 Kommentare

Wegen der europäische Datenschutzgrundverordnung stehen die Prozesse um die Registrierung von Domains auf dem Prüfstand. Sollte die Forderungen umgesetzt ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
Von rj11 auf rj45
Frage von jensgebkenLAN, WAN, Wireless19 Kommentare

Hallo Gemeinschaft, könnt ihr mir vielleicht bei der anfertigung eines Kabels helfen - habe ein rj 11 stecker und ...

Netzwerkmanagement
Firefox Profieles im Roaming
gelöst Frage von Hendrik2586Netzwerkmanagement17 Kommentare

Hallo liebe Leute. :) Ich hab da ein kleines Problem, welches anscheinend nicht unbekannt ist. Wir nutzen hier in ...

LAN, WAN, Wireless
Häufig Probleme beim Anmelden in WLAN
Frage von mabue88LAN, WAN, Wireless15 Kommentare

Hallo zusammen, in einem Netzwerk gibt es relativ häufig (1-2 mal pro Woche) Probleme mit der WLAN-Verbindung. Zunächst mal ...

Windows Server
Remotesteuerung der Sitzung (Kennung XX) fehlgeschlagen
gelöst Frage von Stefan91Windows Server14 Kommentare

Hallo Zusammen, seit kurzem bekomme ich oben genannte Fehlermeldung, wenn ich versuche eine Remotesitzung über den Taskmanager fernzusteuern (Rechtsklick ...