wescraven07
Goto Top

Wert in Variable schreiben, abfragen, ausgeben

Moin Developer,
ich hab gerade ein Problem, mit einem Wert, der aus Magento kommt, den ich in eine Variabel schreiben und in einer Bedingung abfragen und ausgegeben muss.

Das ganze sieht so aus:
der untere Wert, wird zweimal in eine Textdatei geschrieben, die aus Magento kommt.
Die Textdatei enthält zwei Spalten in denen der untere Block jeweils einmal drinsteht.


a:1:{i:0;s:1083:"<table style="width: 390px; height: 154px;" border="0" cellspacing="0"><tbody><tr><td colspan="2" width=" xxxx %">LAND</td></tr><tr><td style="background-color: #ddd;" width=" xxxx %">bis xxxxndash;</td><td style="background-color: #ddd;" align="right" width=" xxxx %"> xxxx %</td></tr><tr><td width=" xxxx %">bis xxxx,&ndash;</td><td align="right" width=" xxxx %"> xxxx %</td></tr><tr><td style="background-color: #ddd;" width=" xxxx %">bis xxxx,&ndash;</td><td style="background-color: #ddd;" align="right" width=" xxxx %"> xxxx %</td></tr><tr><td width=" xxxx %">bis xxxx &ndash;</td><td align="right" width=" xxxx %"> xxxx %</td></tr><tr><td style="background-color: #ddd;" width=" xxxx %">bis xxxx,&ndash;</td><td style="background-color: #ddd;" align="right" width=" xxxx %"> xxxx %</td></tr><tr><td width=" xxxx %">bis xxxx &ndash;</td><td align="right" width="18%">5%</td></tr><tr><td style="background-color: #ddd;" width=" xxxx %">ab xxxx &ndash;</td><td style="background-color: #ddd;" align="right" width=" xxxx %"> xxxx </td></tr></tbody></table>";}

Ich möchte diesen Wert jetzt in eine Variable schreiben, ausgeben und in einer Bedingungsschleife abfragen und einen anderen Wert schreiben.

Ich habe es mit dieser Syntax versucht, aber offensichtlich is das die falsche Schreibweise, denn das Ergebniss ist eine Blankpage, wenn ich das Script auführe und die IF-Condition funktioniert natürlich auch nicht:

<?php 

$table = 'a:1:{i:0;s:1083:"<table style="width: 390px; height: 154px;" border="0" cellspacing="0"><tbody><tr><td colspan="2" width=" xxxx %">LAND</td></tr><tr><td style="background-color: #ddd;" width=" xxxx %">bis xxxxndash;</td><td style="background-color: #ddd;" align="right" width=" xxxx %"> xxxx %</td></tr><tr><td width=" xxxx %">bis xxxx,&ndash;</td><td align="right" width=" xxxx %"> xxxx %</td></tr><tr><td style="background-color: #ddd;" width=" xxxx %">bis xxxx,&ndash;</td><td style="background-color: #ddd;" align="right" width=" xxxx %"> xxxx %</td></tr><tr><td width=" xxxx %">bis xxxx &ndash;</td><td align="right" width=" xxxx %"> xxxx %</td></tr><tr><td style="background-color: #ddd;" width=" xxxx %">bis xxxx,&ndash;</td><td style="background-color: #ddd;" align="right" width=" xxxx %"> xxxx %</td></tr><tr><td width=" xxxx %">bis xxxx &ndash;</td><td align="right" width="18%">5%</td></tr><tr><td style="background-color: #ddd;" width=" xxxx %">ab xxxx &ndash;</td><td style="background-color: #ddd;" align="right" width=" xxxx %"> xxxx </td></tr></tbody></table>";}';  

echo $table; (funktioniert schon nicht)

 if ($col[2] = $table) $col[2] = '1';  
            else $col[2] = 0;

echo $col[2]

?>

ich habe auch versucht, den Wert direkt aus der $col[2] abzufragen,

<?php 

echo $table; (funktioniert schon nicht)

 if ($col[2] = 'a:1:{i:0;s:1083:"<table style="width: 390px; height: 154px;" border="0" cellspacing="0"><tbody><tr><td colspan="2" width=" xxxx %">LAND</td></tr><tr><td style="background-color: #ddd;" width=" xxxx %">bis xxxxndash;</td><td style="background-color: #ddd;" align="right" width=" xxxx %"> xxxx %</td></tr><tr><td width=" xxxx %">bis xxxx,&ndash;</td><td align="right" width=" xxxx %"> xxxx %</td></tr><tr><td style="background-color: #ddd;" width=" xxxx %">bis xxxx,&ndash;</td><td style="background-color: #ddd;" align="right" width=" xxxx %"> xxxx %</td></tr><tr><td width=" xxxx %">bis xxxx &ndash;</td><td align="right" width=" xxxx %"> xxxx %</td></tr><tr><td style="background-color: #ddd;" width=" xxxx %">bis xxxx,&ndash;</td><td style="background-color: #ddd;" align="right" width=" xxxx %"> xxxx %</td></tr><tr><td width=" xxxx %">bis xxxx &ndash;</td><td align="right" width="18%">5%</td></tr><tr><td style="background-color: #ddd;" width=" xxxx %">ab xxxx &ndash;</td><td style="background-color: #ddd;" align="right" width=" xxxx %"> xxxx </td></tr></tbody></table>";}')   

$col[2] = '1';  
            
else $col[2] = 0;

echo $col[2]

?>

auch dass funktioniert nicht.

Ich bin noch ein Rookie, hat mir jemand eine Idee, wie die Syntax richtig geschrieben wird?

Besten Dank schon mal im Voraus für Eure Tipps

Greetz

Content-ID: 356496

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

Ausgedruckt am: 23.11.2024 um 05:11 Uhr

134464
134464 29.11.2017 aktualisiert um 12:59:10 Uhr
Goto Top
<?php
$string = 'a:1:{i:0;s:1083:"<table style="width: 390px; height: 154px;" border="0" cellspacing="0"><tbody><tr><td colspan="2" width=" xxxx %">LAND</td></tr><tr><td style="background-color: #ddd;" width=" xxxx %">bis xxxxndash;</td><td style="background-color: #ddd;" align="right" width=" xxxx %"> xxxx %</td></tr><tr><td width=" xxxx %">bis xxxx,&ndash;</td><td align="right" width=" xxxx %"> xxxx %</td></tr><tr><td style="background-color: #ddd;" width=" xxxx %">bis xxxx,&ndash;</td><td style="background-color: #ddd;" align="right" width=" xxxx %"> xxxx %</td></tr><tr><td width=" xxxx %">bis xxxx &ndash;</td><td align="right" width=" xxxx %"> xxxx %</td></tr><tr><td style="background-color: #ddd;" width=" xxxx %">bis xxxx,&ndash;</td><td style="background-color: #ddd;" align="right" width=" xxxx %"> xxxx %</td></tr><tr><td width=" xxxx %">bis xxxx &ndash;</td><td align="right" width="18%">5%</td></tr><tr><td style="background-color: #ddd;" width=" xxxx %">ab xxxx &ndash;</td><td style="background-color: #ddd;" align="right" width=" xxxx %"> xxxx </td></tr></tbody></table>";}';  
preg_match('/<table.*?<\/table>/',$string,$matches);  
$dom = new DOMDocument();
$dom->loadHTML($matches);
$rows = $dom->getElementsByTagName('tr');  
foreach($rows as $row){
	echo $row->getElementsByTagName('td')->item(1)->nodeValue . "<br />";  
}

?>
wescraven07
wescraven07 29.11.2017 um 21:19:00 Uhr
Goto Top
OK, sieht relativ kompliziert aus.
Wenn ich das richtig verstehe ist in dem Fall $rows meine obige variable $table, richtig?

Das Ganze soll jetzt so weitergehen:
Das original Textdopkument enthält in in der oberen $col[2] den gesamten Wert von $string.

Der Wert $string aus der $col[2] soll in dieser IF-Condition abgefragt werden:

 if ($col[2] = $string) $col[2] = '1';   
            else $col[2] = 0; 

daraus ergibt sich, wenn in der $col[2] der Wert aus $string steht, soll $col[2] 1 sein, ansonsten 0.

Es geht dann weiter mit der variable

$header = ($col . $col[1] . $col[2]. $col[3] );

die Variabel $header wird dann
mit fwrite ($header) in eine neue Textdatei geschrieben.

Also im Endeffekt, soll die $col[2] aus einem bestehenden Textdokument gelesen und abgefragt werden. Wenn der vorhandene Wert in $col[2] $string ist soll in das neue Textdokument 1 ansonsten 0 geschrieben werden.

Wäre dementsprechend Deinem oberen Vorschlag diese IF-Condition korrekt?:

 if ($col[2] = $rows) $col[2] = '1';   
            else $col[2] = 0; 
?
Thomas2
Thomas2 30.11.2017 um 11:21:21 Uhr
Goto Top
Hi,

ich habe lange nicht mit PHP programmiert, ich bin mir aber sicher, dass der Vergleichoperator '==' ist und nicht '='.

Gruß,
Thomas
134464
134464 04.12.2017 aktualisiert um 18:26:40 Uhr
Goto Top
Zitat von @wescraven07:
OK, sieht relativ kompliziert aus.
Is et aber nich face-smile. Aus dem String wird zu allererst der HTML-Teil der Tabelle mit Regular Expressions extrahiert, dann wird der String in ein DOM-Objekt geladen das sich vernünftig parsen lässt. Anschließend durchläuft eine Schleife die Tabellenzeilen (<tr>) und darin kannst du deine Daten bearbeiten wie du lustig bist. Im Beispiel wird dort für jede Zeile der Wert der zweiten Spalte ausgegeben.
Wenn ich das richtig verstehe ist in dem Fall $rows meine obige variable $table, richtig?
In $rows sind alle Tabellenzeilen enthalten
In der Schleife ist jeweils $row die aktuelle Zeile, von der Row wir dann die Spalte (welche natürlich ein td tag hat) abgerufen, dies geschieht mit
$row->getElementsByTagName('td')->item(1)->nodeValue  
Das item(<INDEX>) besagt welche Spalte der Zeile du abfragen willst (0-Basiert).

Deine If-Abfrage kannst du nun mit diesen Mitteln nun selbst zusammenbauen face-wink.

p.s. Gültige Vergleichsoperatoren sind diese
http://php.net/manual/de/language.operators.comparison.php