June 10, 201115 yr Hallo, Ich arbeite an einem Script und bin grade ?berfragt. Ich m?chte ein Script machen was in MySQL Gespeicherte K?rzel, per Array in den richtig zustand zur?ck setzt. Leider bekomme ich immer irgendwelche Fehler. Beispiel: "Catchable fatal error: Method TestClass::__toString() must return a string value in" Benutzt wird mysql_fetch_row $class = new Array_String($var[1]); echo $class; $fach = $faecher[$class]; class Array_String { public $object; public function __construct($object) { $this->foo = $object; } public function __toString() { return $this->object; } } Ich bedanke mich jetzt schon mal, auch wenn ich wei? das ich im falschen bereich bin .
June 12, 201115 yr ich sehe nirgends in der klasse, dass $object gesetzt wird...du setzt $this->foo, was aber nirgends definiert ist. ich nehme an $this->object ist NULL und daher f?r PHP kein String...ansonsten versuch es doch mal mit return (string)$this->object;
June 12, 201115 yr Author Hallo, Nein, das war nicht die l?sung. Aber mit "ich sehe nirgends in der klasse, dass $object gesetzt wird...du setzt $this->foo, was aber nirgends definiert ist" hattest du recht. hab ausversehentlich den fehler mitgenommen... Der Code while($var = mysql_fetch_object($query)) { $class = new Array_String( "$var->day" ); echo 'Tag: ' . $class; // Return:Tag: mon if(isset($class)) { echo $days["mon"]; //Return: Montag echo $days["$class"]; //Return: Notice: Undefined index: mon in ... } class Array_String { protected $object; public function __construct($object) { $this->object = $object; } public function __toString() { return (string)$this->object; } } Und gerade dieses "Notice: Undefined index: mon in .." verstehe ich nicht :/.
June 13, 201115 yr Du bist echt ein bisschen lustig. 1) woher kommt jetzt die variable $days? wird nirgends gesetzt 2) WAS genau willst du denn da machen und was soll die Array_String klasse f?r dich machen? Denn im Moment sehe ich den Sinn nicht, dem constructor nen String zu ?bergeben und den wieder per __toString-function zur?ckzugeben. 3) $class = new Array_String( "$var->day" ); < wieso ?bergibst du den parameter in anf?hrungszeichen? 4) warum checkst du ob $class gesetzt ist, benutzt dann aber $days... 5) siehe 2, WAS willst du da ?berhaupt machen? vielleicht ist dir dann leichter zu helfen, wenn wir wissen, was eigentlich hinter der Idee mit der Array_String-Klasse steckt
June 13, 201115 yr Author 1. $days ist ein Array das ich abfragen m?chte. $days sieht so aus $days = array( "mon" => "Montag", "die" => "Dienstag", "mit" => "Mittwoch", "don" => "Donnerstag", "fri" => "Freitag". ); 2. Ich hab ein MySQL Tabelle wo halt die ganzen Schl?sseln drin stehen. Die Schl?sseln sollen dann per Array vervollst?ndigt werden. Dadurch das sich dahinter ein Sprachsystem versteckt. 3. Weil er ohne " " eine Fehlermeldung anzeigt. 4. echo $days["$class"]; 5. Das Wort "mon", was in der Tabelle gespeichert ist, soll per Array $days vervollst?ndigt werden. Leider bekomme ich halt die Fehlermeldung -> Notice: Undefined index: mon in ...
June 13, 201115 yr also...du hast irgendwelche "schl?ssel" in der DB die dir halt dann per array aus der Sprachdatei entsprechende bezeichnungen in der Sprache ausgeben sollen. Wenn ich das so richtig verstanden habe verstehe ich deinen komplizierten Weg nicht. Sagen wir du kriegst das K?rzel (wie auch immer) aus der Tabelle, dann hast du z.B. $today = "mon"; So, jetzt hast du dein gegebenes Array $days, wo in der entsprechenden Sprache das Wort "Montag" hinterlegt ist, f?r den Index "mon". Also musst du doch nichts anderes machen au?er: echo $days[$today]; und raus kommt "Montag".
June 14, 201115 yr Author Ja, dann m?sste ich aber jeden tag selbst eintippen . Das Problem ist aber, wenn das "mon" aus der Datenbank geladen wird, das es dann sp?ter eine fehlermeldung ausgibt. Notice: Undefined index: mon in ...
June 14, 201115 yr lies bitte meinen vorherigen Post nochmal...ich glaube du hast es nicht wirklich verstanden. Oder du beschreibst bitte mal etwas genauer was du genau vorhast und wo welche Daten herkommen und wie diese verwendet werden sollen.
June 14, 201115 yr Author Die Daten kommen aus einer Tabelle namens "news". Aufbau Tabelle -> id -> die aufruf id -> owner -> Die ID des Users -> day -> Datums Tag -> month -> Datums Monat -> year -> Datums Jahr -> second -> Sekunde -> minute -> Minute -> hour -> Stunde -> ifchanged -> 1,3,5 - Log Script -> lang -> de -> text -> der text halt ... Nun m?chte ich das, dass K?rzel was in "day" gespeichert ist , mon, von PHP Vervollst?ndigt wird. Das Problem ist aber , wenn man "day" abfragt und dann an dazugeh?rige Array einf?gt " $days[$day]; ", bekommt man den folgenden Fehler Notice: Undefined index: mon in /usr/home/dominik/public_html/cms/libs/news.lib.php on line 55 Und genau auf dieser Linie steht $array[$day]; Mhh, hoffe das, dass nun genauer erkl?rt ist.
June 14, 201115 yr Dann w?rde ich mal gleich behaupten, dass $days in dem Kontext nicht definiert ist, in dem Fall, dass in news.lib.php eine klasse definiert ist. Falls das der Fall ist: 1) entweder $days innerhalb der Klasse definieren, oder 2) die entsprechende language-file wo days definiert ist erst IN der klasse inkludieren, oder 3) $days als parameter dem klassen-contructor ?bergeben und es dann als klassen-variable verwenden Beispiel 1) class news { private $_days = array( 'mon' => 'Monday', 'tue' => 'Tuesdays', ...); ... public function returnDay($day) { return $this->_days[$day]; } } Beispiel 2) class news { public function returnDay($language = 'de', $day = 'mon') { // language datei inkludieren, welche // das array $days definiert include '/lib/'.$language.'.php'; return $days[$day]; } } Beispiel 3) $days = array( 'mon' => 'Monday', 'tue' => 'Tuesdays', ...); $news = new news($days); class news { private $_days = array(); public function __construct($days = array()) { $this->_days = $days; } public function returnDay($day = 'mon') { return $this->_days[$day]; } }
June 14, 201115 yr Ich bedanke mich jetzt schon mal, auch wenn ich wei? das ich im falschen bereich bin . Ohne den Schreibfluss hier st?ren zu wollen, kann ich dir w?rmstens empfehlen, Hilfe in ##php (irc.freenode.net) oder in sonstigen PHP-Foren aufzusuchen. Ich kann hier nicht herauslesen das das Problem etwas mit Froxlor zu tun hat.
Archived
This topic is now archived and is closed to further replies.