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, 3574 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Windows Server
Fehlermeldung "DotNet Memory Management Global " (5)

Frage von xXEddiXx zum Thema Windows Server ...

Outlook & Mail
Fehlermeldung beim schließen von Outlook 2016 auf Terminalserver (7)

Frage von Tommy1983 zum Thema Outlook & Mail ...

Sicherheits-Tools
OfficeScan11 Agent Installation - Fehlermeldung (1)

Frage von Chaser21a zum Thema Sicherheits-Tools ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...