Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Fehlermeldung Undefined index bei check- und selectboxen

Frage Entwicklung PHP

Mitglied: UrsusArctos

UrsusArctos (Level 1) - Jetzt verbinden

26.06.2009, aktualisiert 01:14 Uhr, 3584 Aufrufe, 2 Kommentare

Hallo,
und zunächst einmal ein Dankeschön an die Helferlein in diesem Forum im Voraus.

Es geht um eine Fehlermeldung, die ich bei den Selekt- und Checkboxen eines Formulares erhalte.
Grundsätzlich läuft das gesamte Formular in allen Teilen und Funktionen tadellos und ich könnte also durchaus mit der Fehlermeldung leben, aber diese kleine "Notice" ärgert mich einfach und viel schlimmer, ich komme nicht auf eine Lösung.
Ich habe es mal in einem Testformular zusammengefaßt und nachstehend gepostet:
Die Fehlermeldungen lauten:
Für die Selektbox 1
Notice: Undefined index: kdanredeselekt3 in D:\Programme\UsbWebserver\Root\ testform.php on line 31
sowie innerhalb deren Selektfeld gleiches für jeden Wert.
Für die Selektbox 2
erstaunlicherweise keine Meldung, aber der eingestellte Wert wird nach submit nicht übernommen…
Für die Checkbox 1
Notice: Undefined index: dseundagbkenntnis in D:\Programme\UsbWebserver\Root\testform.php on line 59
Hier die komplette Testdatei:
01.
<?php 
02.
 
03.
/************ 
04.
**	testform.php 
05.
** 
06.
**	Formular zum Testen diverser Selekt- und Checkboxen 
07.
**	 
08.
**	Die Boxen sollen ALLE folgendes leisten: 
09.
**	-  nur einfache Auswahlmöglichkeit - keine multiple 
10.
**	-  nach Submit sollen die eingestellten Werte in den Boxen erhalten bleiben, 
11.
**		damit in der Praxis der User - bei Fehlermeldungen - nicht erneut alle Felder 
12.
**		ausfüllen muß 
13.
************/ 
14.
 
15.
// 	error_reporting vor der endgültigen Nutzung im I-Net löschen !!!!! 
16.
	error_reporting(E_ALL); 
17.
//	error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE); 
18.
//	error_reporting(E_ERROR | E_WARNING | E_PARSE); 
19.
//	error_reporting(0); 
20.
	 
21.
?> 
22.
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" enctype="multipart/form-data" method="post" name="Kontaktformular"> 
23.
<br> 
24.
<br> 
25.
 
26.
<!--	SELEKTBOXEN	ANFANG	--> 
27.
<!--	Version 3      ANFANG     ok	--> 
28.
<hr1>Selektbox 1</hr><br> 
29.
<?php 
30.
$kdanredeselekt3	=	$_POST['kdanredeselekt3']; 
31.
$selected[$kdanredeselekt3] 	= "selected"; 
32.
?> 
33.
<select id="Input-Selekt-3" name="kdanredeselekt3"><Selektbox 1> 
34.
	<option value="Herr"	<?php echo $selected['Herr']; 	?>  >Herr</option> 
35.
	<option value="Frau"	<?php echo $selected['Frau']; 	?>  >Frau</option> 
36.
	<option value="Firma"	<?php echo $selected['Firma']; 	?>  >Firma</option> 
37.
	<option value="Verein"	<?php echo $selected['Verein']; 	?>  >Verein</option> 
38.
</select> 
39.
<!--	Version 3      ENDE       ok	--> 
40.
<br> 
41.
<br> 
42.
<!--	Version  5	ANFANG		--> 
43.
<hr1>Selektbox 2</hr><br> 
44.
<select id="select-ressort" name ="ressort"> 
45.
    '.(($ressort != 'Verein' && $ressort != 'Informationen' && $ressort != 'Tiergesundheit' && $ressort != 'Service' && $ressort != 'Projekte')?' 
46.
   <option value="Verein" selected="selected">Verein</option>':'').' 
47.
   <option value="Informationen" 	'.(($ressort == 'Informationen')  ? 'selected="selected"' :'').'>Informationen</option> 
48.
    <option value="Tiergesundheit" 	'.(($ressort == 'Tiergesundheit') ? 'selected="selected"' :'').'>Tiergesundheit</option> 
49.
    <option value="Service" 	'.(($ressort == 'Service')	               ? 'selected="selected"' :'').'>Service</option> 
50.
    <option value="Projekte" 	'.(($ressort == 'Projekte')             ? 'selected="selected"' :'').'>Projekte</option> 
51.
</select> 
52.
<!--	Version  5	ENDE		--> 
53.
<!--	SELEKTBOXEN	ENDE	--> 
54.
<br> 
55.
<br> 
56.
<!--	CHECKBOX	ANFANG		--> 
57.
<hr1>Checkbox 1</hr><br> 
58.
<!--	Version 1		ANFANG	ok	--> 
59.
<?php 
60.
$dseundagbkenntnis	=	$_POST['dseundagbkenntnis']; 
61.
$checked[$dseundagbkenntnis] 	= "checked"; 
62.
?> 
63.
<div id="AGB-Kenntnis-Div">Bitte bestätigen Sie die 
64.
Kenntnisnahme der Datenschutzerklärung und der 
65.
AGB * 
66.
<input name="dseundagbkenntnis" value="Kenntnis bestätigt"<?php if (isset($_POST['dseundagbkenntnis'])) echo $checked[$dseundagbkenntnis]; ?> type="checkbox"> 
67.
</div> 
68.
<!--	Version 1		ENDE	ok	--> 
69.
<!--	CHECKBOX		ENDE	--> 
70.
<br> 
71.
<br> 
72.
<!--	BUTTONS	--> 
73.
<div id="Buttons-Div" class="Angaben-Divs"> 
74.
<input id="Button-Abschicken" name="sendenbutton" value="uuuund ab" type="submit"></div> 
75.
</form> 
76.
 
Was ich zu gerne wissen würde ist, weshalb die beiden Variablen überhaupt als (Array?) Index angesprochen werden, das ist doch paradox, denn sie können sowieso nur einen einzigen Wert, nämlich den ausgewählten, annehmen.
Leider habe ich nirgendwo konkrete Hinweise zu diesem kleinen Problem gefunden, deshalb hoffe ich, daß mir in diesem Forum jemand helfen und es mir auch (verständlich ) erklären kann.
Vielen Dank noch einmal für Eure Mühe und Geduld im Voraus,
viele Grüße,
Ursus Arctos, der Eisbär

Nachtrag: Ich sehe gerade, daß sich beim Posten die Codezeilenangaben leicht verschoben haben,
statt der Zeile 31 betrifft es in dieser Ansicht die Zeile 30 und
statt der Zeile 59 betrifft es hier die Zeile 60,
sorry.
Mitglied: dog
26.06.2009 um 01:37 Uhr
Gehen wir das doch mal langsam an:

01.
<select id="select-ressort" name ="ressort"
02.
    '.(($ressort != 'Verein' && $ressort != 'Informationen' && $ressort != 'Tiergesundheit' && $ressort != 'Service' && $ressort != 'Projekte')?' 
03.
   <option value="Verein" selected="selected">Verein</option>':'').' 
04.
   <option value="Informationen" 	'.(($ressort == 'Informationen')  ? 'selected="selected"' :'').'>Informationen</option> 
05.
    <option value="Tiergesundheit" 	'.(($ressort == 'Tiergesundheit') ? 'selected="selected"' :'').'>Tiergesundheit</option> 
06.
    <option value="Service" 	'.(($ressort == 'Service')	               ? 'selected="selected"' :'').'>Service</option> 
07.
    <option value="Projekte" 	'.(($ressort == 'Projekte')             ? 'selected="selected"' :'').'>Projekte</option> 
08.
</select>
Was auch immer du hier gebastelt hast, PHP-Code ist es nicht
Ein Programmiereditor mit Syntax-Highlighting hätte dir das auch verraten

Notice: Undefined index: kdanredeselekt3 in D:\Programme\UsbWebserver\Root\ testform.php on line 31
Das ist auch absolut klar.
Dein $_POST wird ohne jegliche Bedingung aufgerufen. Und $_POST ist nunmal leer, wenn noch kein Formular abgesendet wurde.
Selbiges gilt für deinen zweiten Fehler. Also immer prüfen ob das Formular auch abgesendet wurde:
01.
<?php 
02.
	if(isset($_POST['sendenbutton'])) { 
03.
		$kdanredeselekt3 = $_POST['kdanredeselekt3']; 
04.
05.
?>
Was ich zu gerne wissen würde ist, weshalb die beiden Variablen überhaupt als (Array?) Index angesprochen werden, das ist doch paradox, denn sie können sowieso nur einen einzigen Wert, nämlich den ausgewählten, annehmen.

Ehrlich gesagt verstehe ich dein Problem nicht ganz. $_POST ist ein Array, der als Schlüssel alle Formularfelder enthält und das ist auch das einzig sinnvolle. Ich will dir aber nicht vorenthalten, dass sowas:
01.
$kdanredeselekt3	=	$_POST['kdanredeselekt3'];
auch als ein eigenes Feature von PHP namens register_globals vorhanden ist - und weil das nur Sicherheitslücken produziert hat fliegt es in der nächsten Version von PHP raus.

Dir fehlen da noch einige Grundlagen dazu wie und in welcher Reihenfolge PHP Variablen definiert.

Übrigens ist mir völlig unklar, was du hier basteln wolltest:
<select id="Input-Selekt-3" name="kdanredeselekt3"><Selektbox 1> 
	<option value="Herr"	<?php echo $selected['Herr']; 	?>  >Herr</option> 
	<option value="Frau"	<?php echo $selected['Frau']; 	?>  >Frau</option> 
	<option value="Firma"	<?php echo $selected['Firma']; 	?>  >Firma</option> 
	<option value="Verein"	<?php echo $selected['Verein']; 	?>  >Verein</option> 
</select>
Weder gibt es in HTML ein Element <Selektbox 1> noch erklärt dein Code wo denn $selected['Herr']... herkommen soll.

Weil ich aber so nett bin , hab ich deinen Code mal so umsortiert, dass er gehen sollte (nicht getestet):

01.
<?php 
02.
 
03.
/************ 
04.
**	testform.php 
05.
** 
06.
**	Formular zum Testen diverser Selekt- und Checkboxen 
07.
**	 
08.
**	Die Boxen sollen ALLE folgendes leisten: 
09.
**	-  nur einfache Auswahlmöglichkeit - keine multiple 
10.
**	-  nach Submit sollen die eingestellten Werte in den Boxen erhalten bleiben, 
11.
**		damit in der Praxis der User - bei Fehlermeldungen - nicht erneut alle Felder 
12.
**		ausfüllen muß 
13.
************
14.
 
15.
// 	error_reporting vor der endgültigen Nutzung im I-Net löschen !!!!! 
16.
	error_reporting(E_ALL | E_NOTICE); 
17.
	ini_set('display_errors','On'); 
18.
	 
19.
	$possibleTitles = array('Herr','Frau','Firma','Verein'); 
20.
	$selectedTitle  = NULL; 
21.
	 
22.
	$possibleResorts = array('Informationen','Tiergesundheit','Service','Projekte'); 
23.
	$selectedResort  = NULL; 
24.
	 
25.
	$activeAGBValue = "Ja"
26.
	$isActiveAGB    = false; 
27.
	 
28.
	if(isset($_POST['form_submitted'])) { 
29.
		$errors = 0; 
30.
		 
31.
		if(in_array(@$_POST['title'], $possibleTitles)) 
32.
			$selectedTitle = $_POST['title']; 
33.
		else 
34.
			$errors++; 
35.
			 
36.
		if(in_array(@$_POST['resort'], $possibleResorts)) 
37.
			$selectedResort = $_POST['resort']; 
38.
		else 
39.
			$errors++; 
40.
			 
41.
		if(@$_POST['agb'] == $activeAGBValue
42.
			$isActiveAGB = true; 
43.
		else 
44.
			$errors++; 
45.
			 
46.
		if($errors > 0) { 
47.
			echo "Sie haben Fehler gemacht"
48.
		} else
49.
			//formular weiterverarbeiten... 
50.
51.
		 
52.
53.
	 
54.
?> 
55.
<form action="" enctype="multipart/form-data" method="post" name="Kontaktformular"
56.
	<br> 
57.
	<br> 
58.
	<!--	SELEKTBOXEN	ANFANG	--> 
59.
	<!--	Version 3      ANFANG     ok	--> 
60.
	<hr1>Selektbox 1</hr><br> 
61.
	<select name="title"
62.
<?php foreach($possibleTitles as $title): ?> 
63.
		<option <?php echo (($title == $selectedTitle)? 'selected="selected"' : '') ?>><?php echo $title ?></option> 
64.
<?php endforeach; ?> 
65.
	</select> 
66.
	<!--	Version 3      ENDE       ok	--> 
67.
 
68.
	<br> 
69.
	<br> 
70.
	<!--	Version  5	ANFANG		--> 
71.
	<hr1>Selektbox 2</hr><br> 
72.
	<select id="select-ressort" name ="resort"
73.
<?php foreach($possibleResorts as $resort): ?> 
74.
		<option <?php echo (($resort == $selectedResort)? 'selected="selected"' : '') ?>><?php echo $resort ?></option> 
75.
<?php endforeach; ?> 
76.
	</select> 
77.
	<!--	Version  5	ENDE		--> 
78.
	<!--	SELEKTBOXEN	ENDE	--> 
79.
	<br> 
80.
	<br> 
81.
	<!--	CHECKBOX	ANFANG		--> 
82.
	<hr1>Checkbox 1</hr><br> 
83.
	<!--	Version 1		ANFANG	ok	--> 
84.
	<div id="AGB-Kenntnis-Div"
85.
		Bitte bestätigen Sie die Kenntnisnahme der Datenschutzerklärung und der AGB * 
86.
	<input name="agb" value="<?php echo $activeAGBValue ?>" type="checkbox" <?php echo (($isActiveAGB)? 'checked="checked"' : '') ?>> 
87.
	</div> 
88.
	<!--	Version 1		ENDE	ok	--> 
89.
	<!--	CHECKBOX		ENDE	--> 
90.
	<br> 
91.
	<br> 
92.
	<!--	BUTTONS	--> 
93.
	<div id="Buttons-Div" class="Angaben-Divs"
94.
		<input id="Button-Abschicken" name="form_submitted" value="uuuund ab" type="submit"
95.
	</div> 
96.
</form>
Der Ansatz ist sehr detailliert und wer viel mit Formularen zu tun hat wird sich dafür auch Helper-Funktionen basteln...

Grüße

Max
Bitte warten ..
Mitglied: UrsusArctos
26.06.2009 um 02:54 Uhr
Hallo Max,
vielen Dank für Deine superschnelle Antwort – und das um diese Uhrzeit
Dieses kleine Elaborat ist einfach aus dem Umstand heraus geboren nicht ständig ein ellenlanges Formular "herumschleppen" zu müssen, deshalb baue ich mir für relevante Teile schnell ein kleines Formular, nur um Kleinigkeiten zu testen.
Das war der Grund für meine "Bastelei"…
In diesem Falle waren es, wie ganz oben im Code zu lesen ist, nur zwei kleine Funktionen:
"- nach Submit sollen die eingestellten Werte in den Boxen erhalten bleiben, damit in der Praxis der User - bei Fehlermeldungen - nicht erneut alle Felder ausfüllen muß"
Dieses kleine Formular hatte also nur eine wichtige Aufgabe, nämlich festzustellen, ob die Werte, die in den verschiedenen getesteten Select- und Checkboxen, nach dem Absenden auch in den Feldern erhalten bleiben.
Daher ist dieses Formular natürlich eine Kombination aus HTML und PHP – der Kürze wegen und weil zum Testen überflüssig - eben auch ohne Abfragen.

Wie auch erwähnt läuft das "richtige" Formular tadellos.
Der genannte Fehler trat nur hier auf und ich konnte ihn mir nicht erklären.

DU HAST ABER DAS RICHTIGE STICHWORT GELIEFERT – und ich laufe gerade knallrot an…
Natürlich wird dieses "Script" beim Aufruf durchlaufen, da aber schlicht noch nicht ausgefüllt, bleibt $_POST eben auch noch leer… logisch…

Zitat
Weder gibt es in HTML ein Element <Selektbox 1> noch erklärt dein Code wo denn $selected['Herr']... herkommen soll
Zitat
Na ja, manchmal belegt man Dinge einfach mit einem "ganz persönlichen" Namen, von "Knutschkugel" bis "Selektbox" eben…
Vielen Dank für Deinen Tritt ins verlängerte Rückrat (meine mangelnden Grundlagenkenntnisse), war mal wieder nötig…
Genau wie mir wird es aber vielen anderen auch gehen, "hauptberuflich" ist man als selbständiger Handwerker (bei mir Bootsbau) oder Kleingewerbetreibender gut 10 bis 12 Std täglich mit der Firma beschäftigt. Programmieren wird zu einem Hobby, das man auch fürs Geschäft nutzt, die Scripte sollen "erst mal laufen", mit den Grundlagen will man sich dann später beschäftigen und schließlich werden sie doch vernachlässigt, weil die "bessere Hälfte" ihrerseits über Vernachlässigung klagt…
Aber wer sagt eigentlich, daß der Frosch keine Haare hat…
Vielen Dank noch mal für Deinen Anstoß,
damit werde ich den (überflüssigen) Beitrag schließen.
Viele Grüße,
Ursus Arctos, der Eisbär

Übrigens nutze ich u.A. das Notepad++ v 5.0.3
Bitte warten ..
Ähnliche Inhalte
Monitoring
Nagios Fehlermeldung IndexError: list index out of range (4)

Frage von itazubii zum Thema Monitoring ...

Windows Tools
gelöst Icacls - restore fehlermeldung (7)

Frage von NetzwerkDude zum Thema Windows Tools ...

Windows Netzwerk
Anmeldung an Domäne schlägt oft fehlt (Fehlermeldung: falsches Passwort) (27)

Frage von harald.schmidt zum Thema Windows Netzwerk ...

E-Mail
Spam-Check über DNS (7)

Frage von Philipp711 zum Thema E-Mail ...

Neue Wissensbeiträge
Google Android

Cyanogenmod alternative Downloadquelle

(5)

Tipp von Lochkartenstanzer zum Thema Google Android ...

Batch & Shell

Batch als Dienst bei Systemstart ohne Anmeldung ausführen

(5)

Tipp von tralveller zum Thema Batch & Shell ...

Sicherheits-Tools

Sicherheitstest von Passwörtern für ganze DB-Tabellen

(1)

Tipp von gdconsult zum Thema Sicherheits-Tools ...

Heiß diskutierte Inhalte
Server
gelöst Wie erkennen, dass nur deutsche IPs Zugang zu einer Website haben? (22)

Frage von Coreknabe zum Thema Server ...

Hardware
16-20 Port POE Switch mit VLAN (19)

Frage von thomasreischer zum Thema Hardware ...

Windows Server
Exchange HyperV Prozessorlast (18)

Frage von theoberlin zum Thema Windows Server ...

Windows Userverwaltung
Nicht Administratoren Installation von Software erlauben (14)

Frage von WinLiCLI zum Thema Windows Userverwaltung ...