itflori
Goto Top

HTML Dropdownmenü auslesen und in PHP als Variable übergeben

Hallo zusammen,

ich habe eine Webseite erstellt in der ich ein Dropdown feld habe. Ich benötige aber nun in PHP die Auswahl des Benuters. Ich habe natürlich schon MR. Google und MR. Bing gefragt und mehrere "Lösungen" ausprobiert. bei mir hat nichts geklappt.

Wie kann ich die Auswahl eines HTML Dropdown Menüs in eine PHP Variable übergeben?

HTML CODE:
<div class="col-sm-2">  
       <select name="Auswahl111" id="Auswahl111" class="form-control m-b">  
			<option>Auswahl</option>
			<option>Ja</option>
			<option>Nein</option>
			<option>n. r.</option>
	</select>
</div>

Mein bisher sinnvollster php Versuch:

$Auswahl111 = $_POST['Auswahl111'];  

Kann mir jemand weiterhelfen?

Content-ID: 320501

Url: https://administrator.de/contentid/320501

Ausgedruckt am: 19.11.2024 um 20:11 Uhr

MrCount
MrCount 10.11.2016 um 08:55:03 Uhr
Goto Top
Servus,

die $_POST-Variable muss ja erst mal übergeben werden...

Was steht denn überhaupt in der $_POST-Variable drin?

<table>
<?php 
    foreach ($_POST as $key => $value) {
        echo "<tr>";  
        echo "<td>";  
        echo $key;
        echo "</td>";  
        echo "<td>";  
        echo $value;
        echo "</td>";  
        echo "</tr>";  
    }
?>
</table>
loom2006
Lösung loom2006 10.11.2016 um 08:55:16 Uhr
Goto Top
So ist das doch schon richtig was Du da hast.
Verstehe Dein Problem denke ich nicht ganz. face-smile
Da kannst Dir nach dem POST auch alle Variablen anzeigen lassen die PHP übergeben bekommt.
echo "<pre>";  
print_r($_POST);
echo "</pre>";  

damit kannst Du dann Dir die Variablen aus dem Post Array holen welche Du eben brauchst.
SlainteMhath
SlainteMhath 10.11.2016 um 09:00:13 Uhr
Goto Top
Moin,

in deinem HTML vermisse ich form und submit tags... nur nich mit koipiert, oder fehlen die tatsächlich?

lg,
Slainte
ITFlori
ITFlori 10.11.2016 aktualisiert um 09:30:22 Uhr
Goto Top
Hallo MRCount

Ich dachte das in der Post Variable der wert des Dropdownmenüs welches ich dahinter angegeben habe steht.
Ist das nicht der Fall?
MrCount
MrCount 10.11.2016 aktualisiert um 09:31:12 Uhr
Goto Top
Nicht ohne eine Übergabe der Variablen...
ITFlori
ITFlori 10.11.2016 um 09:33:47 Uhr
Goto Top
Hallo loom2006,

Wenn ich in HTML

<? echo $_POST ?>

eingebe sollte er mir ja die Variable ausgeben oder? :D Das tut er eben nicht ... damit wollte ich überprüfen ob es funktioniert .... war aber nicht so :O
ITFlori
ITFlori 10.11.2016 um 09:35:21 Uhr
Goto Top
Hallo Slaintemhath,

habe ich bewusst rausgelassen.

<form name="Formular"class="form-horizontal" method="get">  

Weil ich da noch Text dazwischen stehen habe und es geht mir ja im Prinzip nur um das Dropdown Menü ;)
loom2006
loom2006 10.11.2016 um 09:36:27 Uhr
Goto Top
das ist ein array deshalb musst du dir das mit print_r ausgeben lassen.
überniumm den code einfach so face-smile
MrCount
Lösung MrCount 10.11.2016 um 09:36:48 Uhr
Goto Top
<form ... method="get">  

Damit füllst du das $_GET-Array, nicht das $_POST-Array
loom2006
loom2006 10.11.2016 um 09:36:55 Uhr
Goto Top
nicht get -> method=post face-smile
ITFlori
ITFlori 10.11.2016 um 09:38:47 Uhr
Goto Top
MrCount,

kann man die Übergabe auch ohne einen button regeln. Also 1:1 ... Ich bäuchte die werte nämlich sofort ... damit muss dann später nämlich mittels PHP eine Zahl errechnet und auf der Webseite angezeigt werden ....
MrCount
MrCount 10.11.2016 um 09:38:53 Uhr
Goto Top
Schau dir einfach das Beispiel an: HIER
ITFlori
ITFlori 10.11.2016 um 09:43:26 Uhr
Goto Top
@loom2006 @MrCount
Ah Okay, jetzt passiert schonmal mehr, aber er schreibt nicht den Wert des einzelnen Feldes bzw. den Namen rein sondern: siehe Bild

Nach BI sollte jetzt "Nein" stehen ....
2016-11-10 09_41_04-prozess bi - internet explorer
MrCount
MrCount 10.11.2016 um 09:48:29 Uhr
Goto Top
Hast du denn den Wert per method="post" übergeben?

Kopiere doch mal den gesamten Quelltext hier rein, dann sehen wir ja, was genau gemacht wird (und was evtl. nicht).
loom2006
loom2006 10.11.2016 aktualisiert um 09:50:42 Uhr
Goto Top
per Formular Daten auslesen "ohne Absenden" :

das geht auch wenn du mit z.Bsp. Javascript (Jquery wäre am einfachsten) arbeitest.
https://api.jquery.com/change/
ITFlori
ITFlori 10.11.2016 um 10:08:43 Uhr
Goto Top
<div class="panel-heading">  
	<div class="panel-tools">  
		<span class="badge badge-warning">BI: <?php echo "<pre>"; print_r($_POST); echo "</pre>"; ?></span>  
			<a class="showhide"><i class="fa fa-chevron-up"></i></a>  
	</div>
		<h3>1. Allgemein</h3>
</div>        
        <div class="panel-body">  
		<form name="Formular"class="form-horizontal" method="post">  
			<div class="form-group">  
				<label class="col-sm-6 controle-label">  
					Test
				</label>
			                  <div class="col-sm-2">  
						<select name="Auswahl111" id="Auswahl111" class="form-control m-b">  
							<option>Auswahl</option>
							<option>Ja</option>
							<option>Nein</option>
							<option>n. r.</option>
						</select>
					</div>
                                                 ......
                </div>
	</form>
</div>

PHP:

	$Auswahl111 = $_POST['Auswahl111'];  
loom2006
loom2006 10.11.2016 um 10:21:03 Uhr
Goto Top
wohin wird das formular geschickt?
dir fehlt die Angabe des <form action="action.php" method="post">
Schau mal zuerst hier
loom2006
Lösung loom2006 10.11.2016 aktualisiert um 10:38:01 Uhr
Goto Top
<div class="panel-heading">  
	<div class="panel-tools">  
		<span class="badge badge-warning">BI: <?php echo "<pre>"; print_r($_POST); echo "</pre>"; ?></span>  
			<a class="showhide"><i class="fa fa-chevron-up"></i></a>  
	</div>
		<h3>1. Allgemein</h3>
</div>        
        <div class="panel-body">  
		<form name="Formular"class="form-horizontal" method="post">  
			<div class="form-group">  
				<label class="col-sm-6 controle-label">  
					Test
				</label>
			                  <div class="col-sm-2">  
						<select name="Auswahl111" id="Auswahl111" class="form-control m-b" onchange="this.form.submit()">  
							<option>Auswahl</option>
							<option>Ja</option>
							<option>Nein</option>
							<option>n. r.</option>
						</select>
					</div>
                                                 ......
                </div>
	</form>
</div>

so klappt das ... was du möchtest denke ich

zeile 15. on change submit....
ITFlori
ITFlori 10.11.2016 um 13:16:50 Uhr
Goto Top
Habe ich ... Quelltext ist weiter unten
ITFlori
ITFlori 10.11.2016 aktualisiert um 13:37:15 Uhr
Goto Top
@loom2006
Ich habe das jetzt mal eingebaut ... funktioniert aber immer noch nicht ganz ... jedes mal wenn ich jetzt meine Auwahl ändere lädt er die Seite neu und zeigt wieder hinter BI:

Array
(
)

an face-sad

Kann man das überhaupt mit PHP umsetzten oder muss ich auf JS umsteigen?
loom2006
loom2006 10.11.2016 aktualisiert um 13:52:17 Uhr
Goto Top
Ich habs als test.php gespeichert und ausgeführt. Also schickt der das Formular an sich selbst ab bei jedem ändern des Werts im Dropdown.
Das ist php und JS.
PHP nimmt den POST entgegen und JS schickt das formular ab bei dropdown change also übernimmt praktischerweise Dein Senden Button face-smile
MrCount
MrCount 10.11.2016 aktualisiert um 13:58:19 Uhr
Goto Top
Also ich habe es getestet, es funktioniert.


Datei: test.php
<div>
	<div>
		<span >BI: <?php echo "<pre>"; print_r($_POST); echo "</pre>"; ?></span>  
			
	</div>
		<h3>1. Allgemein</h3>
</div>
<div>
	<form name="Formular" method="post">  
		<div>
			<label>
				Test
			</label>
			<div>
				<select name="Auswahl111" id="Auswahl111" onchange="this.form.submit()">  
					<option>Auswahl</option>
					<option>Ja</option>
					<option>Nein</option>
					<option>n. r.</option>
				</select>
			</div>
        </div>
	</form>
</div>

Ausgabe:
2016-11-10 13_55_52-mozilla firefox

nächste:
2016-11-10 13_57_18-mozilla firefox
loom2006
loom2006 10.11.2016 um 13:58:54 Uhr
Goto Top
hier nochmal kurz für dich mit comments im Code:
<div class="panel-heading">  
	<div class="panel-tools">  
		<span class="badge badge-warning">BI:   
      <?php  //php start
          echo "<pre>";  // pre für reinen code präformatiert  
          print_r($_POST);  // gib array POST aus mit allem was da drin steht
           echo "</pre>";  // pre end  

   ?></span>
			<a class="showhide"><i class="fa fa-chevron-up"></i></a>  
	</div>
		<h3>1. Allgemein</h3>
</div>        
        <div class="panel-body">  
		<form name="Formular"class="form-horizontal" method="post">   
               <!-- durch nicht Eingabe eines Ziels per action=text.php schickt der browser das aufgerufene formular wieder an sich ab beim senden des     
               formulars--> 
			<div class="form-group">  
				<label class="col-sm-6 controle-label">  
					Test
				</label>
			                  <div class="col-sm-2">  
						<select name="Auswahl111" id="Auswahl111" class="form-control m-b" onchange="this.form.submit()">  
                                                 <!-- dropdown menu welches sobald etwas geändert wurde das ihn umgebende formular abschickt bewirkt das JS onchange=this.form.submit() -->
							<option>Auswahl</option>
							<option>Ja</option>
							<option>Nein</option>
							<option>n. r.</option>
						</select>
					</div>
                                                 ......
                </div>
	</form>
</div>
ITFlori
ITFlori 10.11.2016 um 14:19:14 Uhr
Goto Top
Den Code habe ich schon verstanden :D Ich habe nur ein verdammtes ";" vergessen ... ich hasse diese Dinger :D

Ich habe ein paar mehr Dropdownfelder ^^

Wenn ich jetzt eines Abfragen will kann nehme ich dann $Auswahl111 bzw $Auswahl121? Muss ich da vorher noch was definieren?

Und kann ich das neuladen der Seite verhinden? Aber trotzdem in Echtzeit in das Array schreiben lassen?
2016-11-10 14_15_29-prozess bi - internet explorer
MrCount
Lösung MrCount 10.11.2016 um 14:33:45 Uhr
Goto Top
Zitat von @ITFlori:

Und kann ich das neuladen der Seite verhinden? Aber trotzdem in Echtzeit in das Array schreiben lassen?

Wenn du die Daten in "Echtzeit" haben willst, dann müsstest du es so machen, dass nach jedem Neuladen die Werte im Dropdown quasi stehen bleiben. (also selected sind)

Das <form> muss aber dann ALLE <select>-Felder umfassen, damit die Werte immer wieder mitgeschickt werden!
ITFlori
ITFlori 10.11.2016 um 14:42:48 Uhr
Goto Top
Mhhh kann ich die dann irgendwie wieder zurücksetzten? Ich brauche Praktisch bei jedem Besuch der Seite eines Nutzers die Auswahlfelder auf "Auswahl" dann soll der Nutzer seine Auswahl treffen und direk soll dann der Wert der seiner Auswahl entspricht über den Auswahlfeldern angezeigt werden.

Ist das in Php noch machbar?
MrCount
Lösung MrCount 10.11.2016 aktualisiert um 15:04:43 Uhr
Goto Top
Na klar.
Wenn jemand NEU auf die Seite kommt, dann ist ja noch nichts ausgewählt...
Den Fall kannst du ja in PHP abfragen...

edit:

<select name="Auswahl111" id="Auswahl111" onchange="this.form.submit()">  
<option value="Auswahl">Auswahl</option>   

<option value="Ja" <?php if (isset($_POST['Auswahl111']) && ('Ja' == $_POST['Auswahl111'])){echo 'selected="selected"';}?>>Ja</option>   

<option value="Nein" <?php if (isset($_POST['Auswahl111']) && ('Nein' == $_POST['Auswahl111'])){echo 'selected="selected"';}?>>Nein</option>   

<option value="n.r." <?php if (isset($_POST['Auswahl111']) && ('n.r.' == $_POST['Auswahl111'])){echo 'selected="selected"';}?>>n.r.</option>  
</select>
MrCount
MrCount 10.11.2016 um 16:00:27 Uhr
Goto Top
Bei mir sieht das dann so aus (hier mit 2 Dropdownfeldern, die den Wert behalten):

<?php
?>

<div>
	<div>
		<span >BI: <?php echo "<pre>"; print_r($_POST); echo "</pre>"; ?></span>  
			
	</div>
		<h3>1. Allgemein</h3>
</div>
<div>
	<form name="Formular" method="post">  
		<div>
			<label>
				Test
			</label>
			<div>
				<select name="Auswahl111" id="Auswahl111" onchange="this.form.submit()">  
<option value="Auswahl">Auswahl</option>   
<option value="Ja" <?php if (isset($_POST['Auswahl111']) && ('Ja' == $_POST['Auswahl111'])){echo 'selected="selected"';}?>>Ja</option>   
<option value="Nein" <?php if (isset($_POST['Auswahl111']) && ('Nein' == $_POST['Auswahl111'])){echo 'selected="selected"';}?>>Nein</option>   
<option value="n.r." <?php if (isset($_POST['Auswahl111']) && ('n.r.' == $_POST['Auswahl111'])){echo 'selected="selected"';}?>>n.r.</option>  
				</select>
			</div>
        </div>
<br />
		<div>
			<label>
				Test2
			</label>
			<div>
				<select name="Auswahl112" id="Auswahl112" onchange="this.form.submit()">  
<option value="Auswahl">Auswahl</option>   
<option value="Ja" <?php if (isset($_POST['Auswahl111']) && ('Ja' == $_POST['Auswahl112'])){echo 'selected="selected"';}?>>Ja</option>   
<option value="Nein" <?php if (isset($_POST['Auswahl111']) && ('Nein' == $_POST['Auswahl112'])){echo 'selected="selected"';}?>>Nein</option>   
<option value="n.r." <?php if (isset($_POST['Auswahl111']) && ('n.r.' == $_POST['Auswahl112'])){echo 'selected="selected"';}?>>n.r.</option>  
				</select>
			</div>
        </div>
	</form>
</div>

Ergebnis:
2016-11-10 15_59_33-mozilla firefox
ITFlori
ITFlori 11.11.2016 um 07:08:54 Uhr
Goto Top
Super MrCount. Funktioniert Super!

Was sagt eigentlich "isset" aus?

Jetzt habe ich nur noch das Problem das er immer wenn ich was auswähle die Seite neu lädt :O Bekommen wir das auch noch weg? Dann wäre es Perfekt! :D
MrCount
Lösung MrCount 11.11.2016 um 08:02:17 Uhr
Goto Top
isset prüft, ob eine Variable existiert und nicht NULL ist.

Allein mit PHP ist es nicht möglich, die Variablen "live" zu übergeben, ohne dass neu geladen wird. (außer über Umwege z.B. mit frames/iframes)
Das müsste man mit AJAX/jQuery machen....
ITFlori
ITFlori 11.11.2016 um 08:50:33 Uhr
Goto Top
mhhh danke an alle für die Hilfe ... dann muss ich mich jetzt erstmal mit AJAX vertraut machen ...
loom2006
loom2006 11.11.2016 um 09:36:34 Uhr
Goto Top
muss nicht unbedingt mit Ajax gemacht werden, man kommt aber heutzutage nicht mehr drum herum face-smile,
wenn es dir reicht dann mach einen senden Button rein ins Form und lass dir dein Ergebnis dann ausgeben.
MrCount
MrCount 11.11.2016 um 09:40:57 Uhr
Goto Top
Ich denke, dass dies nicht das gewünschte Ergebnis, nämlich die "Liveauswertung" nach jeder Auswahl, liefern wird...
ITFlori
ITFlori 11.11.2016 um 09:42:12 Uhr
Goto Top
Nein ein Button ist nicht möglich ... Das Formular ist für Mitarbeiter und die wollen dann schauen wie Ihr Prozess bewertet wird ob Grün oder Rot. Diese Daten müssen in Echtzeit in und aus dem Formular übertragen werden.

Danke trotzdem für deine Hilfe und deine Ideen face-smile Gruß Florian
loom2006
loom2006 11.11.2016 um 09:46:32 Uhr
Goto Top
stimmt... np