[PHP] str_replace lässt script abbrechen

tucow

*****
20 April 2006
41
0
Hallo zusammen,

nachdem ich die Probleme mit der Oracle Datenbank und oci_fetch_array() gelöst habe bin ich auf ein Problem gestoßen bei dem ich den Fehler leider nicht erkenne, bin schon wieder seit 7 Uhr dran, ich seh wahrscheinlich nur wieder den Wald vor lauter Bäumen nicht.

Schaut Euch mal bitte folgende funktion an. Der SQL Befehl funktioniert, TOAD for Oracle gibt mir genau das zurück was in dem array $result erscheint.
Die Daten werden auch richtig ausgelesen, sobald ich die str_replace() Zeilen entferne (auskommentiere) funktioniert der Rest, ich bin Ratlos.

PHP:
function parse_tpl($tpl_code_to_parse, $deftable, $server, $user, $password) {
    $dbconn        = oci_connect($user, $password, $server);
    $query        = "SELECT def, code FROM $deftable";
    $stmt            = oci_parse($dbconn,$query);
    
    oci_execute($stmt);
    OCIFetchStatement($stmt,$result);
    oci_free_statement($stmt);
    oci_close($dbconn);
    
    $count    = count($result['DEF']);
    $y = "0";
    
    for ($i = 1; $i <= $count; $i++) {
        if ($i <= "1"){
            $foo[0]  = str_replace("$result['DEF'][$i]", "$result['CODE'][$i]", $tpl_code_to_parse);
            $y++;
        } else {
            $foo[$i]  = str_replace("$result['DEF'][$i]", "$result['CODE'][$i]", $foo[$i]);
            $y++;
        }
        if ($i == $count) {
            $parsed_code = $foo[$i];
        }
    }
    return $parsed_code;
}


Gruß,
Andreas
 
Okay danke Dir SQAMPY..

hier mal der aktuelle Code:
PHP:
function parse_tpl($tpl_code_to_parse, $deftable, $server, $user, $password) {
	$dbconn		= oci_connect($user, $password, $server);
	$query		= "SELECT def, code FROM $deftable";
	$stmt			= oci_parse($dbconn,$query);
	
	oci_execute($stmt);
	OCIFetchStatement($stmt,$result);
	oci_free_statement($stmt);
	oci_close($dbconn);
	
	$count	= count($result['DEF']);
	
	for ($i = 1; $i <= $count; $i++) {
		if ($i <= "1"){
			$foo[$i]  = str_replace($result['DEF'][0], $result['CODE'][0], $tpl_code_to_parse);
		} else {
			$y = $i - 1;
			$foo[$i]  = str_replace($result['DEF'][$y], $result['CODE'][$y], $foo[$y]);
		}
		if ($i == $count) {
			$parsed_code = $foo[$i];
		}
	}
	return $parsed_code;
}

Fehler ist entfernt, jedoch ersetzt die str_replace() Funktion nichts.
 
Zuletzt bearbeitet:
Afaik muss das zu suchende gesetzt sein. Vllt ist es das nicht? Gib das mal aus, und guck, ob es überhaupt gesetzt ist. Wenn nicht, haste da schon den Fehler ;)
 
setzt mal in der php.ini das error reporting eins tück zurück...
PHP:
error_reporting  =  E_ALL & ~E_NOTICE
reicht.

das problem ist folgendes... du versuchst auf werte zuzugreifen die es gar nicht gibt. (in dem array) wenn du e_notice drin hast bekommst du darauf hin so eine meldung. von daher einfach rausnehmen... ist nicht schlim. ausser die bist perfektionist... dann prüf vorher ob $result['DEF'][$i] gesetzt ist, mit zb isset. (aber dass ist eigentlich unnötig)
 
Die gesuchten Daten werden aus der Oracle DB ausgelesen und können auch über den return Befehl ausgegeben werden, aber ich will ja nicht die Daten sondern mit den Daten die passenden Stellen aus den Templates ersetzen ;)
 
:roll: *nur mal so anmerken will*

Zum Problem:
Da hilft dir nur Debuggen ;) Wenn er nichts ersetzt, lass dir eben die drei Parameter ausgeben und guck nach, warum er nichts ersetzt.
 
Habs, es war SO simpel..

in der DB hab ich den Datensatz einmal klein und einmal groß geschrieben..:roll:

Danke für Eure schnelle Hilfe!