knut4linux
Goto Top

Ergebnis von getResponse() Zeilenweise ausgeben

Übermittelte Ergebnisse einer Abfrage wird in einer Zeile zusammgefasst, der Inhalt ist schwer auszuwerten.

Hi an alle Scripter und PHP-Könige,

wie mein Titel hoffentlich schon gut beschreibt habe ich ein Problem damit, mein Ergebnis Zeilenweise ausgeben zu lassen. Konkret übergebe ich bestimmte Daten zur Überprüfung an einen Server. Alle Parameter, welche ich an den Server übermittel werden ausgewertet und mit einem "StausCode" zurück gegeben.

Auszug aus dem Script:

...
$OutPut=$Client->getResponse();
print $OutPut;
...

Das Ergebnis der Abfrage sieht dann so aus:

Parameter1 ErgebnisX Parameter2 Ergebnis Y Parameter3 ErgebnisZ

Ich hätte es allerdings gerne übersichtlicher. Etwa so:

Parameter1: Ergebnis X
Parameter2: Ergebnis Y
Parameter3: Ergebnis Z

Ich hoffe Ihr habt ein paar Tipps für mich, daher bedanke ich mich schon mal im Voraus an alle helfenden.

MfG, Knut

Content-ID: 162401

Url: https://administrator.de/contentid/162401

Ausgedruckt am: 21.11.2024 um 23:11 Uhr

SlainteMhath
SlainteMhath 10.03.2011 um 14:22:34 Uhr
Goto Top
Moin,

in etwas so:
$a=explode(" ",$OutPut);  
for($i=0;$<count($a)-1;$i++) {
  print $a[$i] .": ". $a[$i+1] ."<br>";  
}

lg,
Slainte
knut4linux
knut4linux 10.03.2011 um 15:05:55 Uhr
Goto Top
Hi SlainteMhath,

danke für deine schnelle Antwort. Wenn ich das ganze richtig verstehe, dann schreibst du mit der explode Funktion die Ergebnise in ein Array und gibst Sie dan aus??
Wenn ich dieses Array in mein Script übernehme, wird es zwar ausgeführt allerdings sehe ich das Ergebnis nicht. (Leere Seite).

Ich poste einfach mal mein kleines mini script.

<?php

include("IXR_Library.php");  

$client     = new IXR_Client('http://evatr.bff-online.de');  
$UstId_1    = 'DE12345678';  
$UstId_2    = 'ESA12345678';  
$Firmenname = 'JULIA S.A.E.';  
$Ort        = 'CITY';  
//$PLZ        = ''; 
//$Strasse    = ''; 
//$Druck      = 'nein'; 

if (!$client->query('evatrRPC',  
$UstId_1,
$UstId_2,
$Firmenname,
$Ort,
$PLZ,
$Strasse,
$Druck))

{
die('Ein Fehler ist aufgetreten -  
'.$client->getErrorCode().":".$client->getErrorMessage());  
}

$outPut=$client->getResponse();




$a=explode(" ",$OutPut);  
for($i=0;$i>count($a)-1;$i++) {
print $a[$i] .": ". $a[$i+1] . "<br>";  
}


?>

Ohne das Array erhälst du Beispielsweise dieses Ergebnis:

UstId_1 DE12345678 ErrorCode 209 UstId_2 ESA12345678 Druck nein Erg_PLZ C Ort CITY Datum 10.03.2011 PLZ Erg_Ort A Uhrzeit 10:00:00 Erg_Name A Gueltig_ab Gueltig_bis Strasse Firmenname C Erg_Str C

So sollte es aber wenn möglich dargstellt werden.

UstId_1 DE12345678
ErrorCode 209
UstId_2 ESA12345678
Druck nein
Erg_PLZ C
Ort Madrid
Datum 10.03.2011
PLZ Erg_Ort A
Uhrzeit 10:00:00
Erg_Name A
Gueltig_ab
Gueltig_bis
Strasse
Firmenname C
Erg_Str C


Zur Info: Die Parameter werden über XML abgefragt

Danke noch mal face-wink

MfG, Knut
SlainteMhath
SlainteMhath 10.03.2011 um 15:35:48 Uhr
Goto Top
Du hast in Zeile 35 eine Tippfehler: das muss ein < sein und kein >
und deine variable ist "$outPut" und nicht "$OutPut"

Neuer Versuch ;)
Arano
Arano 10.03.2011 um 16:39:09 Uhr
Goto Top
Hi,

müsste es in Zeile 35 nicht auch
for($i=0;$i<count($a);$i+=2) { 
heißen
Sonst würde das Ergebnis doch so aussehen:
UstId_1: DE12345678
DE12345678: ErrorCode
ErrorCode: 209
209: UstId_2
UstId_2: ESA12345678
ESA12345678: Druck
Druck: nein
nein: ....
...
..


~Arano
knut4linux
knut4linux 10.03.2011 um 20:39:40 Uhr
Goto Top
Hallo Arano,

du hast natürlich Recht. Das habe ich auch nach dem ersten Post von SlainteMhath korregiert, da an dieser Stelle PHP den Fehler aus gibt, das es eine undefinierte Variable aufruft. Ist aber kein ernennenswerter Fehler. Das sind die typischen "Flüchtigkeitsfehler wie mein $outPut oder $OutPut face-smile


Zurück zum Thema:

@SlainteMhath: Du hast Recht gehabt. Jetzt funktioniert das Array, aber das Ergebnis bleibt dasselbe. Das Ding ist, dass die Daten, welche an den Server gesendet werden, als XML via http übertragen werden. Gibt es irgendwie die Möglichkeit, dass ich mich bei der Auswertung des Ergebnises auf die XML Parameter beziehen kann, sodass ich diese gezielt als Rückgabewert abfragen kann? Dann wäre die Zeilenweise Darstellung wesentlich einfacher.

Die XML Struktur könntet Ihr unter folgenden Link betrachten BZst

Vielleicht benutzt jemand von euch ja rein zufällig den selben Service von der BZSt face-smile

Vielen Dank für eure Hilfen
knut4linux
knut4linux 10.03.2011 um 21:33:04 Uhr
Goto Top
So, jetzt habe ich mich nochmal belesen, wie man mit php XML Parameter auswerten kann und bin zu folgende (nicht funktionierenden) Ergebnis gekommen. An dieser Stelle aber noch mal danke an SlainteMhath, der Ansatz mit der Schleife im Array ist vollkommen richtig und auch logisch.

Hier nun mein Script

<html>
<head>
<title>BZSt</title>
</head>
<body>


<?php

include("IXR_Library.php");  

$client     = new IXR_Client('http://evatr.bff-online.de');  
$UstId_1    = 'DE12345678';  
$UstId_2    = 'ESA12345678';  
$Firmenname = 'Company.';  
$Ort        = 'Cityd';  
//$PLZ        = ''; 
//$Strasse    = ''; 
//$Druck      = 'nein'; 

if (!$client->query('evatrRPC',  
$UstId_1,
$UstId_2,
$Firmenname,
$Ort))
//$PLZ,
//$Strasse,
//$Druck))

{
die('Ein Fehler ist aufgetreten -  
'.$client->getErrorCode().":".$client->getErrorMessage());  
}

$params = $client->getResponse();

//Alle Parameter ausgeben
for($i=0,$a=count($params);$i<$a;$i++)

{
print $params->param[$i]->Datum;
print $params->param[$i]->ErrorCode;
}

?>

</body>
</html>

Und nun der Käse: Die Seite bleibt leer. Kein Fehler, kein Ergebnis ...

Gruß, Knut