PHP Klick auf Combobox direkt anzeigen

Clocker 2800+

Lt. Commander
Registriert
Apr. 2007
Beiträge
1.409
Hi.

ich habe eine ganz normale Combobox mit ein paar Einträgen.

Wie kann ich jetzt einen Eintrag direkt auswerten, wenn er ausgewählt wurde ?

Also NICHT erst mit dem $_POST-Befehl und einer anderen Seite.

Also dann direkt z.B. was mit echo anzeigen lassen.
 
Das geht nur mit JavaScript. PHP läuft auf dem Server und nicht beim Nutzer, daher kann es auch nicht direkt auf Benutzereingaben reagieren. Du könntest beides auch koppeln, in dem JavaScript das Formular absendet, sobald etwas in der Combobox gewählt wurde.

Andere Scriptsprachen (ASP, AJAX, ...) lasse ich jetzt mal außen vor, weil selten unterstützt.
 
Nur mit PHP ist das meines Wissens nach nicht möglich, da musst du zusätzlich Java-Script verwenden.

Ein Weg wäre dann z.B., dass du das Formular auch bei Auswahl eines anderen Eintrages absenden lässt. Mit PHP kannst du dann unterscheiden, ob das Formular per Skript oder per Absenden-Button abgeschickt wurde und es dann entweder komplett auswerten oder nur die Auswahl dieses einen Feldes per echo anzeigen. Um die $_POST-Variablen wirst du so aber nicht rumkommen.

Eine andere Möglichkeit wäre, dich mit AJAX zu beschäftigen, was aber deutlich aufwändiger wird (aber auch "schöner").
 
Kann mir hier jemand ein kleines Beispiel geben, da ich erst angefangen habe, mich mit php zu beschäftigen.

Kann man den ausgewählten Eintrag auch direkt noch im Skript auswerten ?
Oder brauch ich dazu ne exra Seite, die dann den POST-Befehl benutzt ?
 
Du könntest auf diese boxen ein onklick setzen mit der aktion send formular (sind nich die korrekten namen, aber bei selfhtml sollte das beschrieben sein). Damit werden dann Post Daten gesendet die du abfragen kannst.
 
Ich war mal so frei dir ein kleines Beispielscript zu schreiben.

HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title>Ohne Titel 1</title></head>
<body>

<script type="text/javascript">
  function cbxChange() {
    document.getElementById("label").innerHTML = document.getElementsByName("cbxAuswahl")[0].value;
  }	
</script>

<form>
<select name="cbxAuswahl" size="1" onchange="cbxChange();">
  <option value="Blaubeerkuchen">Auswahl1</option>
  <option value="Paprikapaste">Auswahl2</option>
</select>
</form>
<div id="label"></div>

</body>
</html>
 
Dazu musst du das Formular manuell oder automatisch abschicken.
HTML:
...
  function cbxChange() {
    document.frmAuswahl.submit();
  }
</script>

<form name="frmAuswahl">
...

Sobald jmd die Auswahl ändert oder das Formular per Senden-Bution abschickt wird das Formular abgesendet und unter $_POST['cbxAuswahl'] steht der gewählte Wert in PHP.

@Hanni2k
Die Bezeichnungen habe ich von Visual Studio übernommen. In Wikipedia findet sich die gleiche Definition, daher einfach mal bei Wiki schauen.
 
Du kannst mit Ajax bei Auswahl den Wert an ein PHP Script senden. Dieses wertet das aus und liefert durch Ajax das zurück, was du im Endeffekt mit der Variable anstellen wolltest :)
 
Super !

Aber wenn ich ja den Eintrag in der Combobox ändere, dann wird ja die komplette Seite praktisch neu geladen.

Und wie kann ich jetzt noch machen, dass der vorher ausgewählte Eintrag in der Combobox erhalten bleibt ? (weil ja die Seite neu geladen wurde)

Außerdem habe ich ein Dateiuploadfeld:
Hier mal der Code.
PHP:
$numoffiles = 1;
	echo '<form method="post" action="'.$_SERVER['PHP_SELF'].'" enctype="multipart/form-data">' ;
	for ($i = 1; $i<=$numoffiles; $i++)
	{
		echo 'Datei: ' . '<input type="file" name="file[]" size="30" style="cursor:hand;"/> <br /> ';
	}
	echo '<input type="submit" name="action" value="hochladen" />';
	echo '</form>';

Wie kann ich da den Eintrag im Textfeld beibehalten ?
--> Also die schon vorher ausgewählte Datei (den Dateipfad) nach der Seitenaktualisierung wieder in die Textbox "hineinschreiben" ?
--> Vielleicht mit "value" ?
 
Dazu musst du die Ausgabe der Combobox noch etwas verändern. Ich habe es mal etwas zusammengefasst. Folgender Abschnitt erstellt die Combobox und gibt sie aus. Getestet habe ich es nicht, aber es sollte funktionieren.

PHP:
<?php

// Feld mit allen Elementen (jeweils Wert und Anzeige)
$data = array('Blaubeerkuchen' => 'Auswahl1', 'Paprikapaste' => 'Auswahl2');
// Combobox anfangen
$cbx = '<select name="cbxAuswahl" size="1" onchange="cbxChange();">';
// für alle Elemente
foreach($data as $key => $value) {
  // wenn aktuelles Element gleich dem per Post übergebenen
  $selected = ($key == $_POST['cbxAuswahl']) ? ' selected="selected"' : '';
  // Eintrag in Combobox
  $cbx .= '<option value="' . $key . '"' . $selected . '>' . $value . '</option>';
}
// Combobox schließen
$cbx .= '</select>';
// Combobox ausgeben
echo $cbx;

?>
 
Kann man das mit dem Dateiuploadfeld noch machen (vorheriger Beitrag) ?
Also wie den Eintrag im Textfeld nach der Seitenaktualisierung beibehalten ?
 
Zuletzt bearbeitet:
Das geht meines Wissens nicht, weil man FileUpload-Feldern keinen Standardwert, sprich eine Datei, zuweisen kann. Das kann nur durch den Nutzer geschehen, der ja eine lokale Datei auswählt. Wenn man die Combobox über dem FileUpload-Feld anzeigt, werden die meisten Nutzer erst die Auswahl bei der Combobox treffen und dann eine Datei auswählen. Damit sollte das Problem eigentlich umgangen sein.
 
Ein Blick in den Quelltext zeigt, das viel JavaScript verwendet wird. Du könntest dir die Dateien herunterladen und versuchen dahinter zu kommen wie es funktioniert. Die Felder für den Upload werden jedenfalls dynamisch eingeblendet.
 
Zurück
Oben