# Listbox onChange Seite neu laden



## aquarius (28. Oktober 2003)

Hi,

ich habe ne Listbox (Select < das sei nur gesagt weil man das auch ComboBox nennt) die listet die Werte eines Arrays auf... nun möchte ich, die Seite die diese Listbox anzeigt onChange neu laden und den ausgewählten Wert übergeben, damit das PHP Script entsprechend darauf reagiert... ich krieg das ums verrecken aber nicht hin... hab das mit dem loaction Objekt probiert... aber es geht nicht... kann mir jemand schnell helfen ! 


Dankeschön schoma


----------



## Tim C. (28. Oktober 2003)

Du bist im falschen Film äääh Forum 

onChange Aktionen können nicht PHP sein, sondern müssen Javascript sein. Deshalb verschiebe ich dich mal dahin.

*-moved-*


----------



## Sven Mintel (28. Oktober 2003)

Du musst das Formular senden,z.B so:

```
<form action="<?php echo $_SERVER['PHP_SELF'] ?>">
<select name="wert"onchange="this.form.submit()">
<option>bitte ausw&auml;hlen</option>
<option>bla</option>
<option>blubb</option>
</select>
</form>
```

Auf die Variable greifst du in PHP dann mit $_GET['wert'] zu.


----------



## aquarius (28. Oktober 2003)

grossartig... dankeschön. Dachte mir schon das es sowas einfaches is.... vielen Dank.


----------



## derZwerch (11. März 2004)

Weiss nicht recht ob das hier reinpasst, das problem tritt im Zusammenhang mit vorhergehender lösung ein.
Habe also auch ein select und wähle etwas aus, ja nach Auswahl werden dann Daten aus der Datenbank ausgelesen, alles kein Problem
meine Frage betrifft jetzt das Optionsmenue kann ich dieses soweit manipulieren das es auf dem gewählten wert stehen bleibt?

hier der Quellcode(also nur ein Auszug aus meinem gesamten Code)

```
echo("<form action='$PHP_SELF' method=\"post\">");
echo("</head>");


 echo ("<table width=\"50%\" height=\"58\" > <tr><td></td>");


$dbanfrage = "SELECT * from PC order by IP";
  	$result = mysql_query ($dbanfrage); 							
	echo "<td> <select name=\"id\" onchange=\"this.form.submit()\" size=\"1\"> \n"; 
	while($row=mysql_fetch_array($result))
		{ 
      $help=$row[IP];
      echo ("<option onchange=\"wechsel($ID)\"value='$row[IP]'($_POST[ip])==($row[IP]) selected :>$row[IP]</option>"); 
		}
		
	echo "</select></td></tr>";

if($_POST['id'])
{
$ip=$_POST['id'];
echo(" postabfrgae"); 
echo $ip;
}
```


----------



## aquarius (11. März 2004)

Also ich weiss nicht genau was dein Code machen soll... ich habe ihn versucht nachzuvollziehen... aber irgendwie gelang mir das nicht wirklich, vielleicht liegts auch daran das es nicht alles ist. 

echo ("<option onchange=\"wechsel($ID)\"value='$row[IP]';
if($row[ip]==$id){print' selected';}
echo("bla");

So ungefähr... 


Ich hoffe ich konnte helfen, bzw. hoffe dein Problem richtig verstanden zu haben.


----------



## Sven Mintel (11. März 2004)

du musst halt dafür sorgen, dass in der zuvor ausgewählten <option> nun ein "selected" steht.... :
	
	
	



```
<option selected>BLUBB</option>
```
 ....und zwar nur in dieser.

P.S. der onchange-Funktionsaufruf gehört in <select>


----------



## NoFate (10. April 2004)

*Weiterer Lösungsansatz*

Hi,

wenn auch spät, hier ein weiterer Lösungsansatz.


```
<select name="select" onChange="location.replace('http://'+this.value+'')">
<option value="192.168.0.1">Neue IP: 192.168.0.1</option>
<option value="192.168.0.2">Neue IP: 192.168.0.2</option>
<option value="192.168.0.3">Neue IP: 192.168.0.3</option>
</select>
```

Die Funktion location.replace() ist ähnlich der Funktion window.location.href='datei.html', es können aber zusätzlich Variablen aus einem Formular weitergegeben werden. Des Weiteren wird die History überschrieben.

Liebe Grüße

NoFate


----------

