Top-Themen

Aktuelle Themen (A bis Z)

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, 3600 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
Frage von itazubiiMonitoring4 Kommentare

Hallo zusammen, ich muss über Nagios in mehreren Verzeichnissen auf dem gleichen Server Files auf ihre Existenz überprüfen. dies ...

Off Topic
Themen von administrator.de auf dem Index?
gelöst Frage von JochemOff Topic16 Kommentare

Hallo zusammen, die folgende Seite/das folgende Thema wird bei mir durch die Firewall geblockt: Ok, ist sicherlich eine Einstellungssache ...

Festplatten, SSD, Raid
Wiederherstellung Index von RAID 5
Frage von SnoberwolfFestplatten, SSD, Raid6 Kommentare

Hallo, Ich bin Administrator in einem IT-Unternehmen und habe schon öfter mit dem Gedanken gespielt mich in diesem Forum ...

Datenbanken
Index reorg einer MSSQL DB
Frage von Thor01Datenbanken1 Kommentar

Hallo zusammen, kann mir einer erklären wie ich ein REORG einer MSSQL DB mache?

Neue Wissensbeiträge
Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 10 StundenBatch & Shell8 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Humor (lol)

"gimme gimme gimme": Automatischer Test stolpert über Easter Egg im man-Tool

Information von Penny.Cilin vor 12 StundenHumor (lol)6 Kommentare

Interessant, was man so alles als Easter Egg implementiert. Ist schon wieder Ostern? "gimme gimme gimme": Automatischer Test stolpert ...

MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 1 TagMikroTik RouterOS8 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Information von BassFishFox vor 1 TagSicherheit1 Kommentar

Ein weiterer Grund, dass Drucker keinerlei Verbindung nach "auswaerts" haben sollen. Unter Verwendung spezieller Malware können Angreifer aus der ...

Heiß diskutierte Inhalte
Windows Server
RDP macht Server schneller???
Frage von JaniDJWindows Server17 Kommentare

Hallo Community, wir betrieben seit geraumer Zeit diverse virtuelle Maschinen und Server mit Windows Server 2012. Leider haben wir ...

Windows 10
Windows 10 dunkler Bildschirm nach Umfallen
Frage von AkcentWindows 1015 Kommentare

Hallo, habe hier einen Windows 10 Rechner der von einem User umgefallen wurde (Beine übers Knie, an den PC ...

Windows 10
Bitlocker nach Verschlüsselung nicht mehr aufrufbar!
gelöst Frage von alexlazaWindows 1013 Kommentare

Hallo, ich besitze ein HP ZBook 17 G4 mit einem Windows 10 Pro Betriebssystem. Bei diesem Problem handelt sich, ...

Batch & Shell
Neuste Datei via PowerShell kopieren
gelöst Frage von kaiuwe28Batch & Shell11 Kommentare

Hallo zusammen, ich hatte mir mit Hilfe der Suche im Forum einen kleinen Code von colinardo rausgesucht und versucht ...