Willkommen in der Webstatt Zum Webstatt Blog und Stories
trefixxx am 21.10.06 11:18

Morgen zusammen,

ja, meine funktion bereitet mir leider noch einige probleme. Und zwar gibt er mir folgende Fehlermeldung an:
Parse error: parse error, unexpected '=' in ***\gag_smarty\functions\functions.php on line 99


function show_pic($img_id, $img_align, $sql_id, $div_align){
$watt = "[img id=" .$img_id. " align=" .$img_align. "]";
$sql = "SELECT * FROM gag_artikel_img WHERE id = '" .$sql_id. "'";
$result = mysql_query($sql);
while($pic = mysql_fetch_array($result)){
$picname = $pic['name'];
$pictext = $pic['titel'];
if ($pic['fotograf'] == "0"){
$pict = "Unbekannt";
}
else{
$pict = $pic['fotograf'];
$picid = $pic['id'];
}
}
$info = getimagesize("images/content/artikel/small/" .$picname. "");
$infob = getimagesize("images/content/artikel/big/" .$picname. "");
$infob[1] = $infob[1]+30;
$neu = '<div style="width:' .$info[0] . '; align=' .$div_align. '>';
$neu. = "<a href=\"javascript:void(0)\" onclick=\"window.open('artikel/foto.php?fotoid=" . $picid . "', 'Bild', 'width=" . $infob[0] . "', height='" . $infob[1] . "');\">"; // 99
$neu. = "<img class=\"img1\" src=\"images/content/artikel/small/" .$picname. "\" alt=\"Zum Vergrößern bitte anklicken!\"/></a>";
$neu. = "<span style=\"font-weight:bold;\">" .stripslashes($pictext). "</span>";
$neu. = "Foto:" .$pict. "(<a href=\"javascript:void(0)\" onclick=\"window.open('artikel/foto.php?fotoid=" .$picid. "', 'Bild', 'width=" .$infob[0]. ", height=" .$infob[1]. "');\">Vollbild</a>)";
$text = str_replace($watt, $neu, $text);

return $text;
}


Ich habe leider keinen fehler finden können... Seht ihr ihn?
Danke!

netcup.de Warum gibt es hier Werbung?
Dustwolf Dustwolf am 21.10.06 12:05

Wo isn bei dir überhaupt Zeile 99???

trefixxx am 21.10.06 12:40

Z.20 hier in meinem Thread (war auch gekenntzeichnet, hättest aber horizontal scrollen müssen ;) ):

$neu. = "<a href=\"javascript:void(0)\" onclick=\"window.open('artikel/foto.php?fotoid=" . $picid . "', 'Bild', 'width=" . $infob[0] . "', height='" . $infob[1] . "');\">"; // 99

sili sili am 21.10.06 12:43

"$neu. =" ändern in "$neu .=" :)

trefixxx am 21.10.06 13:04

oh man *grr* :) Danke!

Den nächsten Fehler versteh ich aber nicht so ganz:
Fatal error: Cannot redeclare show_pic() (previously declared in ***\gag_smarty\functions\functions.php:80) in ***\gag_smarty\functions\functions.php on line 80

es geht um diese oben gepostete funktion (die funktion ist übrigens inhalt einer anderen funktion, falls das wichtig ist:
function show_pic($img_id, $img_align, $sql_id, $div_align){ // 80)

Wasili am 21.10.06 14:10

Du bindest offenbar die Datei 2mal ein. Verhindere entweder das, oder prüfe zuerst ob die Funktion bereits existiert mit function_exists.

Dustwolf Dustwolf am 21.10.06 15:10

include bzw. require gibt es auch als include_once. Wenn die Datei bereits eingebunden wurde, würde er das includen jedes weitere Mal unterlassen.

trefixxx am 21.10.06 15:55

also die datei functions.php binde ich schon mit require_once in die index.php ein
(hab ja schon mal in google gesucht für die ursache des problems :) ), aber trotzdem bleibt der fehler bestehen.
Es gibt nur eine Funktion mit dem Namen...

Wasili am 21.10.06 16:28

Prüf mal ob du nicht *irgendwo* noch ein Include/Require hast, oder aber ein Inculde_once/Require_once mit verschiedener Gross & Kleinschreibung im Dateinamen, wenn du Windows als OS hast... Sieht zumindest so aus.

Denn die Fehlermeldung sagt, dass die Funktion schon deklariert wurde - Genau in der Zeile und Datei, in der sie erneut deklariert werden würde.

trefixxx am 21.10.06 16:47

ich benutze die datei nicht das erste mal, sondern habe die functions.php ja nur fortgeführt mit einer weiteren funktion!
=> Also hätte die fehlermeldung, dass funktionen doppelt declared wurden, vorher auch schon vorkommen müssen. Ist sie aber nicht!

Und dass diese funktion mit dem namen schon besteht, kann ich auch ausschließen.
Ich habe den funktionnamen einfach mal mit einer aneinanderreihung von buchstaben und zahlen benannt, und er hat immer noch das selbe problem:

"Fatal error: Cannot redeclare dsa5646asd64a5sda534a5s6da86() (previously declared in C:\Programme\xampp\htdocs\gag_smarty\functions\functions.php:80) in ***\gag_smarty\functions\functions.php on line 80"

Und nun habe ich mal die funktion aus der funktion genommen, in der sie stand.
Es sah vorher so aus:

function blubb(param1) {
// blubb
function blobb(param1){
//muh
}
}


Das "erstaunliche": sobald ich die funktion aus der funktion nehme, wird zwar mein ziel nicht erreicht, aber die seite wird normal ausgeführt...
Da der Fehler ja nun darin bestehen muss, hier die beiden verschachtelten functions (sorry für länge, aber anders geht es ja nicht...):

/* ####### BB_CODE */
// ersetzt bb-code-tags mit html-tags
function bbcode($text) {

// REPLACE BB-CODE WITH TAGS
$text = str_replace ("" , '<span style="font-weight: bold;">', $text);
$text = str_replace ("
" , "</span>", $text);
$text = str_replace ("" , '<span stlye="text-decoration:underline;"', $text);
$text = str_replace ("
" , "</span>", $text);
$text = str_replace ("" , '<span stlye="font-style:italic;"', $text);
$text = str_replace ("
" , "</span>", $text);
$text = eregi_replace("\\[url\\]www\.([^\\[]*)\\[img\\]www\.([^\\[\\?\\&]*)\\[/img\\]\\[/url\\]","<a href=\"http://www.\\1\" class=menu_link><img src=\"http://www.\\2\" border=\"0\"></a>",$text);
$text = eregi_replace("\\[url\\]http://([^\\[]*)\\[img\\]http://([^\\[\\?\\&]*)\\[/img\\]\\[/url\\]","<a href=\"http://\\1\" class=menu_link><img src=\"http://\\2\" border=\"0\"></a>",$text);
$text = eregi_replace("\\[url\\]www\.([^\\[]*)\\[/url\\]","<a href=\"http://www.\\1\" class=menu_link>\\1</a>",$text);
$text = eregi_replace("\\[url\\]([^\\[]*)\\[/url\\]","<a href=\"\\1\" class=menu_link>\\1</a>",$text);
$text = eregi_replace("\\[url=([^\\[]+)\\]([^\\[]+)\\[\\/url\\]","<a href=\"\\1\" class=menu_link>\\2</a>",$text);
$text = eregi_replace("\\[email\\]([^\\[]+)\\[/email\\]","<a href=\"mailto:\\1\" class=menu_link>\\1</a>",$text);
$text = eregi_replace("\\[email=([^\\[]+)\\]([^\\[]+)\\[\\/email\\]","<a href=\"mailto:\\1\" class=menu_link>\\2</a>",$text);
$text = eregi_replace("\\[url=\&quot;","[url=\"",$text);
$text = str_replace ("[img]" , "<img src=\"",$text);
$text = str_replace ("[/img]" , "\" border=\"0\">",$text);

$font = array("Arial Black", "Book Antiqua", "Century Gothic", "Comic Sans MS", "Courier New", "Georgia", "Impact",
"Tahoma", "Times New Roman", "Trebuchet MS", "Script MT Bold", "Stencil", "Verdana", "Lucida Console");

for ($i = 0; $i < count($font); $i++) {
$text = str_replace ("[font=" . $font[$i] . "]" , "<font face=\"" . $font[$i] . " \">",$text);
$text = str_replace ("[/font]" , "</font>", $text);
}

for ($i = 1; $i < 7; $i++) {
$text = str_replace ("[size=" . $i . "]" , "<font size=\"" . $i . " \">", $text);
$text = str_replace ("[/size]" , "</font>", $text);
}

// PICTURES
$pa = preg_match_all('/\[img id=([0-9]+) align=([a-zA-Z]+)\]/si', $text, $result);

function show_pic($img_id, $img_align, $sql_id, $div_align){
$watt = "[img id=" .$img_id. " align=" .$img_align. "]";
$sql = "SELECT * FROM gag_artikel_img WHERE id = '" .$sql_id. "'";
$result = mysql_query($sql);
while($pic = mysql_fetch_array($result)){
$picname = $pic['name'];
$pictext = $pic['titel'];
if ($pic['fotograf'] == "0"){
$pict = "Unbekannt";
}
else{
$pict = $pic['fotograf'];
$picid = $pic['id'];
}
}
$info = getimagesize("images/content/artikel/small/" .$picname. "");
$infob = getimagesize("images/content/artikel/big/" .$picname. "");
$infob[1] = $infob[1]+30;
$neu = '<div style="width:' .$info[0] . '; align=' .$div_align. '>';
$neu .= "<a href=\"javascript:void(0)\" onclick=\"window.open('artikel/foto.php?fotoid=" . $picid . "', 'Bild', 'width=" . $infob[0] . "', height='" . $infob[1] . "');\">";
$neu .= "<img class=\"img1\" src=\"images/content/artikel/small/" .$picname. "\" alt=\"Zum Vergrößern bitte anklicken!\"/></a>";
$neu .= "<span style=\"font-weight:bold;\">" .stripslashes($pictext). "</span>";
$neu .= "Foto:" .$pict. "(<a href=\"javascript:void(0)\" onclick=\"window.open('artikel/foto.php?fotoid=" .$picid. "', 'Bild', 'width=" .$infob[0]. ", height=" .$infob[1]. "');\">Vollbild</a>)";
$text = str_replace($watt, $neu, $text);

return $text;
}


if (!empty($result) AND !empty($result[1][0])) {
show_pic($result[1][0], $result[2][0], $result[1][0], $result[2][0]);
}


if (!empty($result) and !empty($result[1][1])) {
show_pic($result[1][1], $result[2][1], $result[1][1], $result[2][1]);
}


if (!empty($result) and !empty($result[1][2])) {
show_pic($result[1][2], $result[2][2], $result[1][2], $result[2][2]);
}

if (!empty($result) and !empty($result[1][3])) {
show_pic($result[1][3], $result[3][3], $result[1][3], $result[2][3]);
}


// RETURN DATA
return $text;

}

Wasili am 21.10.06 17:52

Hast du eigentlich gelesen und verstandenwas ich geschrieben habe?
Der Fehler liegt nicht im deklarieren der Funktion, sondern darin, dass du die Datei functions.php 2mal einbindest!

Lass doch mal Code der index.php sehen.

trefixxx am 21.10.06 19:08

ja, das habe ich und ich bin doch auch drauf eingegangen.
Also, hier die index.php

Wasili am 21.10.06 19:13

Inhalt der config.php bitte. In der index.php steckt zumindest kein Fehler.

trefixxx am 21.10.06 20:18

config.php

p.s.: danke für deinen einsatz!

Wasili am 21.10.06 20:26

Gut... Letzter Versuch bevor der Hack kommt ^^
function/functions.php bitte...

trefixxx am 21.10.06 22:52

functions.php

nuit nuit am 22.10.06 13:27

arg...du kannst eine funktion innerhalb einer funktion definieren. Aber es ist totaller schachsinn...ausserdem müsstest du noch eine if-abfrage um die funktion einbauen, damit du, wenn du 2 mal dir Mutterfunktion aufrufst, dass die Tocherfunktion nicht nochmal neu definiert wird ;)

d.h. hau die funktion show_pics einfach davor oder dahinter der bbcode funktion *g* geht genauso und du umgehst das problem

trefixxx am 22.10.06 18:20

Jop, funktioniert.
Nun hab ich inhaltlich noch eine Frage: Wenn das geklärt werden könnte, wärd ihr mich bis auf weiteres los :D

Also:
Die Funktion arbeitet nicht so ganz bzw. macht gar nix.
Sie soll den bb-code tag [img id=456 align=right] ersetzen mit einem in ein div eingebauten link: <img src="***/dateiname.jpg" style="text-align:right;">. Dafür muss ich den id-wert auslesen und in der datenbank nach dem für diese id vorhergesehenen bild suchen und nacher den dateinamen in den link schreiben.
Das klappt aber nicht so ganz. Siehe functions.php im Anhang (alles kommentiert).

Ich habe die vermutung, dass das deswegen nicht klappt, weil ich in der ersten funktion mit $text arbeite und in der zweiten wieder $text als parameter angebe.

Aber urteilt selber - ihr werdet es denke ich besser wissen als ich :D

Groooßen Dank!

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt