HTML SELECT und OPTION AUSGABE

Yonnyy

Mitglied
Hi Leute also ich verstehe es nicht wieso der Script nicht richtig funktioniert

Code:
<select name="function" size="1" onchange="alert(this.form.function.options[this.form.function.selectedIndex].value)">
        <?php
             $res = mysql_query("SELECT * FROM function");

            while($row = mysql_fetch_array($res)) {
                if($row['name']=="User") {
                    @$type = "selected";
                }
                echo '<option '.@$type.' value="'.$row['function'].'" >'.$row['name'].'</option>';
            }
        ?>
 </select>
<?php 
       $function = $_POST['function'];
?>

Wobei die Variable $function immer 3 ist obwohl eine zahl je nach dem 0-3 rauskommen müsste. Natürlich ist das ganze mit noch anderen inputs in einem Formular mit der Methode POST. Die anderen Inhalte des Formulars werden ausgegeben, bis auf das, das ist fehlerhaft. Das onchange zeigt übrigens den richtigen value an.

Danke schon mal im Voraus.
Yonnyy
 
Warum setzt du vor das $type ein @? Es hat seinen Sinn, dass da ein Notice über eine nicht initialisierte Variable kommt.

Hast du mal den HTML-Code kontrolliert, was in den Optionen als Value drin steht?

So könntest du die while-Schleife schon mal etwas verbessern:

PHP:
            while($row = mysql_fetch_array($res)) {
                $type = $row['name']=="User" ? 'selected="selected"' : '';
                echo '<option '.$type.' value="'.$row['function'].'" >'.$row['name'].'</option>';
            }

Wie gesagt: kontrolliere, was im HTML-Code steht, ob da nicht evtl. was schieft läuft.
 
Danke, aber funktioniert immer noch nicht und was hat das alles mit dem $type zu tun? Ich hab so das Gefühl, dass der den value 3 nimmt da das auch das am anfang bei der frisch aufgerufenen Seite ausgewählt ist. Und er das dann irgendwie übernimmt.
 
Zurück