Notice: Undefined variable

Begonnen von reddragon, 09 September 2009, 19:58:53

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

reddragon

HI,

ich versuche gerade mir aus einem Block ein Modul zu stricken. Allerdings habe ich da ein Problem:

ZitatNotice: Undefined variable: content in /www/modules/mein_modul/index.php on line 71

Ich habe in dem Bereich eine for-Schleife laufen, die ihre Daten in der Variabel $content unterbringt.
Das ganze schaut so aus:

$content .="blabla";

weiter unten lasse ich den Inhalt ausgeben:

         OpenTable();
echo $content;
   CloseTable();

Wenn ich oben in der while-Schleife das Leerzeichen, und den Punkt entferne, ist die Meldung weg. Allerdings wird dann aus der for-Schleife nur der letzte Wert angezeigt.

Was läuft denn hier falsch?

JoergK

Hoi ;)

Schau mal dort: http://www.php-faq.de/q-fehler-variable.html

Zitat
Der Hinweis wird ausgegeben, weil mit einer nicht definierten Variablen hantiert wird, d. h. der Name der Variablen existiert nicht, ein konkreter Wert ist folglich auch nicht verfügbar. Durch die automatische Typ-Konvertierung wird der angenommene "Wert" NULL dann zwar in einen passenden Datentyp verwandelt - das ist aber nur ein "Notbehelf", damit das Script weiterlaufen kann.

...

Handelt es sich um Script-interne Variablen, sollten diese vor der Verwendung definiert werden. Bevor man also $foo .= "bla"; schreibt, um an $foo etwas anzuhängen, ist ein $foo = ""; nötig, um die Variable zu definieren und ihr einen leeren String zuzuweisen.
Gruß,
Jörg


Nobody is perfect ... so don't call me Nobody

reddragon

hmmm... ja, damit habe ich das auch schon probiert, aber das müsste doch auch irgendwie anders zu bewerkstelligen sein, weil diese Meldung beim Block nicht ausgegeben wird, und da das Teil auch nicht seperat definiert wurde.. :puzzled:

JoergK

Hoi ;)

Von welchem Block ist denn die Rede?

Sobald in PHP einer Variablen ein String angehängt werden soll:
/* Beisiel 1 */
for ($x=0; $x < 10; $x++) {
    $content .= 'Irgend etwas';
}

und diese Variable ist noch nicht deklariert worden, dann hat das eine Meldung zur Folge. Das läßt sich nur mit einer vor dieser Anweisung liegenden Deklaration (= Zuweisung) abstellen:
/* Beisiel 2 */
$content = '';
for ($x=0; $x < 10; $x++) {
    $content .= 'Irgend etwas';
}


Wenn jedoch nur eine Zuweisung (= Deklaration) erfolgt, dann gibt es natürlich keine Meldung:
/* Beisiel 3 */
$content = 'Irgend etwas';

Gruß,
Jörg


Nobody is perfect ... so don't call me Nobody

reddragon

ZitatSobald in PHP einer Variablen ein String angehängt werden soll [...]und diese Variable ist noch nicht deklariert worden, dann hat das eine Meldung zur Folge[...]

:BD:  Okay, ich dachte zumindest der Block läuft ohne Probleme. Der, den cih gecheckt hatte, basierte nicht auf dem, dich ich verwendet hatte....

ZitatVon welchem Block ist denn die Rede?

http://www.pragmamx.org/Forum-topic-21605-start-msg146189.html#msg146189


Edit:
ich habe da zwar nun noch eine Variabel, aber es funktioniert  :thumbup:


Edit: Edit:
Diese Meldung erscheint allerdings nicht, wenn der Block im deaktivierten Zustand über die MX-tabs geladen werden....

siggi

:JC_coffee: moin

Ich würde mal einen Blick in die user.php des mxTabs-Downloads werfen.
Code (user.php) Auswählen

<?php
 
* --------------------------------------------------------------------
 * 
Centerblock mxTabs 1.1 for pragmaMx 0.1.10
 
written by (c2008 Siggi Braunerthttp://www.sb-websoft.com
 
* --------------------------------------------------------------------
 **/
if (!
defined("mxMainFileLoaded")) die ("access denied");

error_reporting(0); // falls Warnungen in den Bloecken die Meldung unterdruecken
:
:


Logisch, daß dann ...
ZitatDiese Meldung erscheint allerdings nicht, wenn der Block im deaktivierten Zustand über die MX-tabs geladen werden....

  :crazy:    :BD:
Wenn man an Gras zieht wächst es auch nicht schneller.

Andi

Hoi :)

ZitatIch würde mal einen Blick in die user.php des mxTabs-Downloads werfen.
Warum?
Die Fehlerbehandlung wird global von pragmaMx geregelt.   :crazy:  :BD:
Eine solche Fehlerunterdrückung ist unnötig bzw. sogar unsinnig und es kann von keinem Coder/Bastler erwartet werden, sämtliche Dateien nach solchen Fallstricken zu durchsuchen.


@ reddragon

Schau mal hier, evtl. hilft dir das, die Ausführungen von Jörg zu verstehen:
http://de2.php.net/manual/de/language.operators.string.php
schön´s Grüssle, Andi

siggi

Hi :)

abgesehen davon, ob das, was da im Code steht Sinn macht oder nicht ( auch du codest Dinge, die zu seiner Zeit Sinn machen und zu einem späteren Zeitpunkt  unsinnig erscheinen) war mein Beitrag diesbezüglich völlig wertfrei,  lediglich ein Hinweis, warum es keine Fehlermeldung ausgibt .... :cul:

Zitatund es kann von keinem Coder/Bastler erwartet werden, sämtliche Dateien nach solchen Fallstricken zu durchsuchen

was meinst du, was ich nicht schon für "Fallstricke" in Quellcodes anderer "Bastler/Coder" aufgeknotet habe  :puzzled: :BD:  Schönes WE  :pardon:
Wenn man an Gras zieht wächst es auch nicht schneller.

Andi

ZitatIch würde mal ...
  ...  Logisch, daß dann ... 
     ...   :crazy:  :BD:

Wertfrei?  :gruebel:
Naja, lassen wir's mal so stehen....

auch schönes WE  :bye2:
schön´s Grüssle, Andi