undefined index

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
Martin Truckenbrodt
Mitglied
Beiträge: 1143
Registriert: 15.08.2003 23:16
Wohnort: Südthüringen
Kontaktdaten:

undefined index

Beitrag von Martin Truckenbrodt »

Hallo,
bin gerade dabei einen meiner MODs zum Üben schon einmal für phpBB3 umzuschreiben.
Bei phpBB3 ist ja das Error Reporting aktiviert.
Nun habe ich folgende Fehlermeldung:
[phpBB Debug] PHP Notice: in file /phpmn.php on line 228: Undefined index: 3
Der dazugehörige Code:

Code: Alles auswählen

	$link = append_sid("phpmn.$phpEx?edit=1&id=" . $newsid . "&topical=" . $status[$newsid]);
Ich habe schon fleißig gegoogelt und ein paar Standard Ressourcen durch gegrast und bin aber leider immer nur auf nicht funktionierende Webseiten gestoßen. :roll:

Wo liegt das Problem?

Das Abschalten des Reportings betrachte ich nicht als Lösung.

Danke und Gruß Martin
Zuletzt geändert von Martin Truckenbrodt am 21.07.2006 18:10, insgesamt 1-mal geändert.
Advanced Block MOD 1.1.4 ist released! - Verhindere Spam auf Deinem phpBB3 Board mit Stop Forum Spam, BotScout, Akismet, Project Honey Pot und verschiedenen IP-RBL und Domain-RBL DNS Blacklisten! - Meine MODs - phpBB Complete Core
BB-BF-BM
Mitglied
Beiträge: 2179
Registriert: 28.10.2005 16:38
Wohnort: Essen

Beitrag von BB-BF-BM »

sowiet ich weiß, bedeutet "Undefined index", dass im Array dieser Index nicht auftaucht. In diesem Fall wäre der Index $newsid und das array $status[]

$status[3] existiert also nicht
Benutzeravatar
Martin Truckenbrodt
Mitglied
Beiträge: 1143
Registriert: 15.08.2003 23:16
Wohnort: Südthüringen
Kontaktdaten:

Beitrag von Martin Truckenbrodt »

Hallo BB-BF-BM,

hhm! ??? :o

Wie löse ich das Problem?

Etwas weiter oben im Code habe ich schon

Code: Alles auswählen

$status = array();
stehen.

Gruß Martin
Advanced Block MOD 1.1.4 ist released! - Verhindere Spam auf Deinem phpBB3 Board mit Stop Forum Spam, BotScout, Akismet, Project Honey Pot und verschiedenen IP-RBL und Domain-RBL DNS Blacklisten! - Meine MODs - phpBB Complete Core
Benutzeravatar
MagMo
Ehemaliges Teammitglied
Beiträge: 584
Registriert: 30.10.2005 16:06
Wohnort: Köln
Kontaktdaten:

Beitrag von MagMo »

Hi,
Martin Truckenbrodt hat geschrieben:Wie löse ich das Problem?
Indem du dafür sorgst, dass es den Index 3 gibt oder $newsid den Wert eines existierenden Indexes hat. :grin:

So ganz ohne den entsprechenden Code kann man dir keine andere Lösung vorschlagen. Wenn du mit der Variale $status nichts weiter anstellst, dann hat dieses Array nur den existierenden Index Null.
Wichtig für eine sinnvollen Lösungsansatz deines Problems ist also: 1) welche Daten werden (wie) in dem Array gespeichert und 2) welcher Zusammenhang besteht zu $newsid.

Grüße
MagMo
Benutzeravatar
Martin Truckenbrodt
Mitglied
Beiträge: 1143
Registriert: 15.08.2003 23:16
Wohnort: Südthüringen
Kontaktdaten:

Beitrag von Martin Truckenbrodt »

Hallo,
ich verstehe fast nur Bahnhof.
Ich bin mit http://www.php.net/manual/de/language.v ... riable.php vielleicht schon ein bißchen weiter. Aber mit Mitte 30 will es nicht mehr so leicht ins Hirn. Mir fehlt da leider wohl auch ziemlich viel Background.

Hier die komplette Datei: http://www.martin-truckenbrodt.com/down ... mn.php.txt

$newsid erhält als Wert nur Zahlen, ähnlich der forum_id oder anderen Werten des phpBB.

Gruß Martin
Advanced Block MOD 1.1.4 ist released! - Verhindere Spam auf Deinem phpBB3 Board mit Stop Forum Spam, BotScout, Akismet, Project Honey Pot und verschiedenen IP-RBL und Domain-RBL DNS Blacklisten! - Meine MODs - phpBB Complete Core
Benutzeravatar
Martin Truckenbrodt
Mitglied
Beiträge: 1143
Registriert: 15.08.2003 23:16
Wohnort: Südthüringen
Kontaktdaten:

Beitrag von Martin Truckenbrodt »

Hallo MagMo,
ich bin mir jetzt schon mal ziemlich sicher, dass es an dem array() liegt.

Muß ich irgendwie für $status definieren, dass der Schlüssel $newsid immer eine Zahl ist, oder/und dass als Wert dafür immer ein Text kommt?

Ich stehe auf dem Schlauch. Hilfe!
[Nachtrag:]
Ich habe jetzt

Code: Alles auswählen

$status = range(1,1000);
nach

Code: Alles auswählen

$status = array();
eingefügt und die Meldung ist weg.
Kann man irgendwie definieren, dass es sich generell um Zahlen handelt ohne dass man sich auf einen Maximalwert festlegen muß?

Gruß Martin
Advanced Block MOD 1.1.4 ist released! - Verhindere Spam auf Deinem phpBB3 Board mit Stop Forum Spam, BotScout, Akismet, Project Honey Pot und verschiedenen IP-RBL und Domain-RBL DNS Blacklisten! - Meine MODs - phpBB Complete Core
BB-BF-BM
Mitglied
Beiträge: 2179
Registriert: 28.10.2005 16:38
Wohnort: Essen

Beitrag von BB-BF-BM »

angenommen, es existieren $status[0], $status[1] und $status[2].
Dann existiert unter anderem $status[3] nicht!
Das heißt, du musst dafür sorgen, dass $status[3] existsiert!

Code: Alles auswählen

while ($subscribe = $db->sql_fetchrow($result))
{
	extract($subscribe);
	$status[$members_newsid] = $members_mailpref;
};
In dem Code wird $status gefüllt;
Aber auch hier:

Code: Alles auswählen

	if (isset($status[$newsid]) && $status[$newsid] == "")
	{
		$status[$newsid] = '3'; 
		$statusview[$newsid] = $lang['L_PHPMN_NOTSUBSCRIBED'] ;
	}
	elseif (isset($status[$newsid]) && $status[$newsid] == "html")
	{
		$status[$newsid] = '1'; 
		$statusview[$newsid] = $lang['L_PHPMN_HTML'] ;
	}
	elseif (isset($status[$newsid]) && $status[$newsid] == "plain")
	{
		$status[$newsid] = '2'; 
		$statusview[$newsid] = $lang['L_PHPMN_PLAIN'] ;
	}
Wie es aussieht, soll die erste if-Abfrage einen Standardwert festlegen, wenn nichts genaueres definiert worden ist.
Wenn das stimmt, kannst du es ja mit

Code: Alles auswählen

	if ( !isset($status[$newsid]) || $status[$newsid] == "")
	{
		$status[$newsid] = '3'; 
		$statusview[$newsid] = $lang['L_PHPMN_NOTSUBSCRIBED'] ;
	}
Benutzeravatar
Martin Truckenbrodt
Mitglied
Beiträge: 1143
Registriert: 15.08.2003 23:16
Wohnort: Südthüringen
Kontaktdaten:

Beitrag von Martin Truckenbrodt »

Hallo BB-BF-BM,

mit Deiner modifizierten Zeile funktioniert die Sache! Vielen Dank!

Ich denke, ich habe jetzt auch kapiert wo das Problem lag. Zukünftig werde ich beim Default Wert Setzen anders herum denken.

Ich habe die aktuelle Version der Datei ncohmal hochgeladen.

Jetzt muß ich nur noch schauen, wieso der Header nicht gealden wird, und das Template anpassen.

Danke und Gruß Martin
Advanced Block MOD 1.1.4 ist released! - Verhindere Spam auf Deinem phpBB3 Board mit Stop Forum Spam, BotScout, Akismet, Project Honey Pot und verschiedenen IP-RBL und Domain-RBL DNS Blacklisten! - Meine MODs - phpBB Complete Core
Antworten

Zurück zu „Coding & Technik“