Undefined constant?

Hallo,

ich versuche grade, mich mittels „learning by doing“ in PHP einzuarbeiten. Im Moment geht es mir um die Parameterübergabe in der URL. Klappt eigentlich auch, mein Skript bekommt was es will, produziert aber trotzdem in der Error-Logdatei einen Eintrag, und zwar "[client 82.83.196.203] PHP Notice: Use of undefined constant bildnummer - assumed ‚bildnummer‘ in /var/www/vhosts/meinedomain.de/httpdocs/test.php on line 11 "

Mein kurzes Skript dazu sieht folgendermaßen aus:

---------------schnipp----------------------------------

php-test<?php $bildnr = $_GET[bildnummer];
echo $bildnr;
?>
---------------schnapp----------------------------------

Wie gesagt, es gibt wie erwartet die übergebene Zahl aus, aber produziert besagten Eintrag im Error-Log. Warum? Wie kann man da Abhilfe schaffen?

Vielen Dank!

Hallo Fragewurm,

$bildnr = $_GET[bildnummer];

Mir fällt da vor allem „_GET()“ auf.
Dies müsste eine spezielle Version oder ein Macro sein.
Auf jeden Fall übergibst du da „bildnummer“, welche aber nicht definiert ist und somit keinen Inhalt hat. Und genau diese Variable wird ja reklamiert.

MfG Peter(TOO)

hä?
Also ich wüsste jetzt nicht, was Du mir sagen wolltest…

Hallo Fragewurm,

$bildnr = $_GET[bildnummer];

Mir fällt da vor allem „_GET()“ auf.
Dies müsste eine spezielle Version oder ein Macro sein.

Macro in php? ich kenn Macros nur aus Excel und andere Office-Programmen :wink:

Auf jeden Fall übergibst du da „bildnummer“, welche aber nicht
definiert ist und somit keinen Inhalt hat. Und genau diese
Variable wird ja reklamiert.

nö - es funktioniert ja - also hat sie inhalt.
Das Problem scheint für mich eher zu sein, dass es „ihm“ lieber wäre, wenn statt
$_GET[bildnummer]
$_GET[‚bildnummer‘]
stehen würde…
denn
bildnummer
alleine könnte auch eine definierte konstante sein, die dann wiederum mit einem Inhalt befüllt sein könnte - etwa mit dem inhalt „bildname“ und so würde dann der inhalt von
$_GET[‚bildname‘] abgefragt werden…

Ich hoffe, dass das einigermassen verständlich war… :wink:

Also ich wüsste jetzt nicht, was Du mir sagen wolltest…

Hallo Fragewurm,

$bildnr = $_GET[bildnummer];

Mir fällt da vor allem „_GET()“ auf.
Dies müsste eine spezielle Version oder ein Macro sein.

Macro in php? ich kenn Macros nur aus Excel und andere
Office-Programmen :wink:

Fast jede vernünftige Programmiersprache kennt Macros …

Auf jeden Fall übergibst du da „bildnummer“, welche aber nicht
definiert ist und somit keinen Inhalt hat. Und genau diese
Variable wird ja reklamiert.

nö - es funktioniert ja - also hat sie inhalt.

Ja, den Wert 0.

Ich hoffe, dass das einigermassen verständlich war… :wink:

Irgenwo muss es eine Beschreibung von _GET() geben, in welcher auch der Parameter beschrieben ist.
Allerdings ist in der Standard-PHP-Beschreibung „_GET()“ nicht zu finden !!

MfG Peter(TOO)

Hiho

(darf ich, darf ich?)

Macro in php? ich kenn Macros nur aus Excel und andere
Office-Programmen :wink:

Fast jede vernünftige Programmiersprache kennt Macros …

Makros sind aber (berichtigt mich) keine Eigenschaft eine Programmiersprache, sondern eines Makroprozessors, der vor dem verarbeiten des Quellcodes automatisch (oder eben auch nicht, gcc sortiert nach Dateiendungen bzw. deren Groß- und Kleinschreibung (auch anders?)) aufgerufen wird. (PHP/Perl/Python mit Makros? Wozu das denn? Die sind doch so dynamisch, das man das ohne lösen kann.)

nö - es funktioniert ja - also hat sie inhalt.

Ja, den Wert 0.

Da lob ich mir andere Sprachen, die bei sowas weniger lax sind (gibt es da nicht Einstellungen für einen erhöhten Warnmodus? so wie -Wall?)

Irgenwo muss es eine Beschreibung von _GET() geben, in welcher
auch der Parameter beschrieben ist.
Allerdings ist in der Standard-PHP-Beschreibung „_GET()“ nicht
zu finden !!

Weils diese Funktion nicht gibt?
-> http://www.php.net/variables.predefined
_GET, _POST etc. sind globale, vordefinierte Variablen, die von der Sprache/Interpreter ausgefüllt werden, daher der Zugriff über [].

ich hoffe mal, ich hab nicht übertrieben,
mfg TLF

Hallo Fragewurm,

Hallo Peter

$bildnr = $_GET[bildnummer];

Mir fällt da vor allem „_GET()“ auf.

Habe ich so aus einer Referenz, die das empfiehlt, wenn die ältere Variante mit $bildnummer z.B nicht funktioniert beim Zugriff auf die über die URL übergebenen Parameter, und das ist hier der Fall.

Wie gesagt, es funktioniert ja auch, wenn man das Skript mittels myskript.php?bildnummer=123 aufruft gibt es ja auch brav 123 aus, genau wie gewünscht, nur es macht halt noch diese Notizen im Error-Log. Da es mit $_GET[] funktioniert dachte ich das wäre eine bekannte Sache für „alte PHP-Hasen“ :smile:

Viele Grüße, Thorsten

Hallo Peter

nö - es funktioniert ja - also hat sie inhalt.

Ja, den Wert 0.

Nein, genau den gewünschten (übergebenen) Wert!

Irgenwo muss es eine Beschreibung von _GET() geben, in welcher
auch der Parameter beschrieben ist.
Allerdings ist in der Standard-PHP-Beschreibung „_GET()“ nicht
zu finden !!

Ich habs irgendwo aus dem PHP-Handbuch (de.php.net/manual/de) aber finde die entsprechende Stelle auch grade nicht wieder, es ging glaube ich irgendwie um die Unterschiede zwischen den einzelnen Versionen.

Hallo Photofun,

setze einfach bildnummer in Hochkommas

$bildnr = $_GET[‚bildnummer‘];

bildnummer ist eine nicht definierte Konstante
‚bildnummer‘ ist der Name des mittels URL übergebenen
Parameters.

Gruß
Michi

Hallo Michi,

danke, das war die Lösung! Sternchen dafür :smile:

Thorsten