Datei auslesen und überprüfen

EuroCent

Klappstuhl 2.0
Ich mal wieder!

Folgendes Problem:

Ich habe eine Datei namens: test2.mdl diese enthält folgende daten:

Code:
Version: 0.1.20070523
Code: 514fgr7d45s4fg5er

Nun möchte ich folgendes machen

Ich möchte überprüfen ob in der datei hinter Version aktuell mit der in der Datenbank
Dann möchte ich prüfen ob der Code in der Datei auch der gleiche ist wie der in der Datenbank

Sollte die Version nicht gleich sein dann erfolgt eine Meldung
Sollte der Code nicht wie der in der Datenbank gleich sein so soll es auch eine Fehlermeldung kommen!

Mein Problem dabei ist aber wie kann ich aber hinter der Version und/oder Code: die zeile auslesen mit einem Umbruch für eine Vorschau vorerst?

Oder soll ich in der datei das weglassen am besten: Version: und Code:

Wäre für eure Hilfe sehr dankbar
 
Am einfachsten wäre es, die beiden Werte wegzulassen, dann könntest du es einfach per [phpf]file[/phpf] einlesen und hättest die beiden Werte in einem Array.
Der Rest sollte dir dann auch gelingen.
 
Andere möglichkeit wäre die Datei mit XML aufzubauen, für den Fall, dass dies möglich wäre.

Oder wie Felix sagt, bzw. mit einem regulären Ausdruck sollte es auch möglich sein.
 
Am einfachsten wäre es, die beiden Werte wegzulassen, dann könntest du es einfach per [phpf]file[/phpf] einlesen und hättest die beiden Werte in einem Array.
Der Rest sollte dir dann auch gelingen.

Danke das geht!

Aber nun zum Zweiten problem!

Ich überprüfe es so:

PHP:
<?php
$mod = $_REQUIRE['mod'];

if($mod == '') {
require("./lib/extern_db.php");
$mod_ordner = "./module/";

$sql = $mod->query("SELECT * FROM module");
	while($mods = $mod->fetch_array($sql)) {
	
		$check = file_exists($mod_ordner.$mods['moddatei']);
		$code = $mods['modcode'];
		$version = $mods['modvers'];
	
		if($check) {
			$installed = '<font color="green">'.$mods['moddatei'].'</font>';
		} else {
			$installed = '<font color="red">'.$mods['moddatei'].'</font>';
		}
		
		$filename = $mod_ordner."test2.mdl";
		$lese = file($filename);
		if($version == $lese['0']) {
			$actept = '<font color="green">Aktuell</font>';
		} else {
			$actept = '<font color="red">Aktuell</font>';
		}

		eval("\$bit .= \"".$tpl->get("module_bit")."\";");
	
	}

eval("\$tpl->output(\"".$tpl->get("module")."\");");
}
?>

Wie mach ich das aber nun der TPL

Da frage ich das Ab:

Code:
<if($version == $lese[0])><then>$actept</then></if>

Doch er zeigt es mir immer in Rot an normal müsste es Grün anzeigen
 
Warum prüfst du im Template UND im PHP Skript? Irgendwie ist das ja zweimal geprüft.

Hast du mal testweise beide Variablen ausgegeben? Also $lese['0'] und $version?
Um zu überprüfen ob beide wirklich den gleichen Inhalt haben oder ob es irgendeine Art von Unterschied gibt.
 
Ja hab ich das kam bei raus:

Code:
Version-Datei: 0.1.20070523
Version-Datenbank: 0.1.20070523

Also sind beide Identisch, doch er zeigt mir dennoch Rot "Aktuell" an obwohl dies grün sein müsste

in der TPL hab ich allerding nur noch $actept stehen da ich auch der meinung war das es eventuell daran hätte gelegen haben könnte aber ist in diesem falle nicht!

PHP:
<?php
if($mod == '') {
require("./lib/extern_db.php");
$mod_ordner = "./module/";

$sql = $mod->query("SELECT * FROM module WHERE moddatei='test2.mdl'");
	while($mods = $mod->fetch_array($sql)) {
	
		$check = file_exists($mod_ordner.$mods['moddatei']);
		$version = $mods['modvers'];
	
		if($check) {
			$installed = '<font color="green">'.$mods['moddatei'].'</font>';
		} else {
			$installed = '<font color="red">'.$mods['moddatei'].'</font>';
		}
		
		$filename = $mod_ordner."test2.mdl";
		$lese = file($filename);
		if($version == $lese['0']) {
			$actept = '<font color="green">Aktuell</font>';
		} else {
			$actept = '<font color="red">Aktuell</font>';
		}

		eval("\$bit .= \"".$tpl->get("module_bit")."\";");
	}
	echo "Version-Datei: ".$lese['0']."<br />";
	echo "Version-Datenbank: ".$version."<br />";

eval("\$tpl->output(\"".$tpl->get("module")."\");");
}
?>
 
Hmm, seltsam.

Versuch mal beides in einen String zu verwandeln:
PHP:
if((string)$lese['0'] == (string)$version) {
#usw
 
Sind vielleicht noch Leerzeichen in der Datei drin? Oder soetwas?

Jag die beiden mal durch [phpf]trim[/phpf] und [phpf]htmlspecialchars[/phpf].
 

Neue Beiträge

Zurück