Probleme mit Function und Auslesen aus der DB

ctp

Grünschnabel
Hi

Ich habe ein Problem mit der folgenden Funktion und sehe eigentlich keinen Fehler.

PHP:
	// findet das Bild nach der ID in der DB
	function get_img_src($img_id,$img_alt) {
		$result=mysql_query("SELECT Photo.link,Photo.seite_nr FROM Photo WHERE Photo.id='".$img_id."'");
		$row=mysql_fetch_array($result);
		$seite=$row['seite_nr'];
		$link=$row['link'];
		if ($img_alt=='') { $img_alt=$img_id; }
		return("".$seite."/".$link."\" alt=\"".$img_alt."\"");
	}

Die Idee dabei ist folgende. In der DB Photo wird neben der ID die dem Photo zugeordnete Seitennummer und der Link zum Bild gespeichert. Wenn ich Inhalte für eine Seite erstelle kann ich dort den folgenden Text eingeben:

[[bild: photo-id|alt-Text]]

Über preg_replace soll aus diesem Kürzel dann der entsprechende <img /> Aufruf entstehen. Es wird dabei auch korrekt zwischen der photo-id und dem Alt-Text unterschieden und an die Function weitergegeben. $img_id und $img_alt sind mit den korrekten Werten besetzt.

Das Problem ist halt, es funktioniert nicht, und ich komme einfach nicht darauf, was falsch ist. Wahrscheinlich sehe ich es einfach nicht. :confused:

Daher schon mal danke für eure Antwort.
Gruß
CTP
 
Was genau funktioniert denn nicht? Probier mal Folgendes:
PHP:
// findet das Bild nach der ID in der DB 
function get_img_src( $img_id, $img_alt='' )
{ 
	$result = mysql_query("SELECT `link`, `seite_nr` FROM `Photo` WHERE `id`='".$img_id."'");
	$row = mysql_fetch_array($result);
	if( $img_alt=='' ) {
		$img_alt = $img_id;
	}
	return '<img src="'.$row['seite_nr'].'/'.$row['link'].'" alt="'.$img_alt.'">';
}
 
Danke für deine schnelle Antwort, aber leider funktioniert das auch nicht.

Zu deiner Frage, was nicht funktioniert, Tatsache, das hab ich nicht klar ausgedrückt :)
Eigentlich soll das Skript folgendes zurückgeben:

<img src="bilder/seitenr/bild-link.jpg" alt="alt-Text" />

allerdings gibt es dann folgendes aus:

<img src="bilder//" alt="alt-Text" />

Der Anfang mit '<img src="bilder/' wird genau wie das Ende ' />' durch die preg_replace function eingesetzt. Nur der Teil, der von der Function eingesetzt werden soll, arbeitet bis auf den Alt-Text nicht richtig.

Aufgerufen wird das Skript während des preg_replace durch folgende Ersetzung:
PHP:
$suchmuster[] = "/\[\[bild\:(.*?)\|(.*?)\]\]/"; // [[Bild:Bild-ID|Alt-Text]] Bilder allgemein
$ersetzungen[] = "<img src=\"bilder/".get_img_src("$1","$2")." />";

Ich sehe halt keine prinzipiellen Fehler in der Function, daher wundert es mich, dass sie nicht funktioniert..
 
Stimmt, es lag am "e"-Modifikator, allerdings musste auch noch was an der Ersetzung geändert werden.

Die Änderungen sehen jetzt folgendermaßen aus:

PHP:
$suchmuster[] = "/\[\[bild\:(.*?)\|(.*?)\]\]/e";
$ersetzungen[] = "\"\t\t<br /><p><img src=\\\"bilder/\".get_img_src(\"$1\",\"$2\").\" /></p>\"";

Danke Gumbo für deine Hilfe
 
Zurück