Tom: Dropdown-Menü: Wert nach Submit beibehalten

Beitrag lesen

Hello,

Ich habe ein Dropdownmenü und einen Submitknopf.
Wenn ich auf den Submitknopf drücke, wird der Wert der Dropdownmenüs normal übermittelt.

Was mich stört ist, dass das Dropdownmenü nach dem drücken des Submitknopfes wieder in die Grundstellung zurückgeht. Ich möchte erreichen, dass das Dropdownmenü auch nach dem drücken des Submitknopfes seine Einstellung behält.

<form name="FormArt" method="get" action="index1.php">

<select name="Art" onChange="index1.php">                Was soll das onchange="..."?

<?php
$dbverb=mysql_connect("localhost", "root", "");
mysql_select_db("Witzdatenbank",$dbverb);
$res = mysql_query("SELECT DISTINCT Witzart FROM witz");
while ($row = mysql_fetch_array($res)) {

echo "<option>", $row["Witzart"],"</option>";            Hier fehlt der Vergleich mit den
                                                           POST-Werten für das 'selected'

}
?>
</select>
<input type="submit" name="Submit" value="Senden">
</form>

Um sowas zu testen, baut man sich am Besten ein statisches Array.

Aus diesem Array fütternt man seine Anzeigefunktion

Ich schicke Dir hier mal eine kleine Musterlösung.
Das Einzige was man (leider) noch nachbessern müsste, wäre ein Size-Attribut für das <select>, weil CSS scheinbar noch zu blöd ist dazu, die Abzahl der anzuzeigenden Optionen vorzugeben.

<?php  ### make_selectbox.php ###

#------------------------------------------------------------------------------
function make_selectbox
#------------------------------------------------------------------------------
(
 $name,               # Name der Selectbox ohne []
 $type,               # S für sinlge, M für Multiple
 $_options,           # assoziatives Array mit den möglichen Optionen
 $_selection=array(), # indiziertes Array mit den letzten Post-Werten (Value=" ")
 $_classes=array()    # Array mit den Klassendefinitionen, die eingebunden werden
)
{
  $select = "\n<select name="".trim($name).'[]"'.
                      ((!empty($_classes['select']))?' class="'.$_classes['select'].'"':'').
                      ((strtolower($type)=='m')?' multiple':'').">\n";

foreach($_options as $key => $val)
  {
    $select.='  <option'.(!empty($_classes['option'])?' class="'.$_classes['option'].'"':'')."\n".
             "          value="$key"".(in_array($key,$_selection)?' selected="selected"':'').'>'.
                         htmlentities($val)."</option>\n";
  }

$select .= "</select>\n";

return $select;
}

#==============================================================================

main section

#==============================================================================

$_options[1] = 'Hotel';
$_options[2] = 'Gasthof';
$_options[3] = 'Pension';
$_options[4] = 'Ferienwohnung';
$_options[5] = 'Ferienzimmer';
$_options[6] = 'Schlafsaal';
$_options[7] = 'Wohnwagen';
$_options[8] = 'Zelt';

if (isset($_POST['unterkunft']) and is_array($_POST['unterkunft']))
{
  $_selection = $_POST['unterkunft'];
}
else
{
  $_selection[] = 1;
}

$_classes['select'] = 'sel_unterkunft';
$_classes['option'] = 'opt_unterkunft';

$select = make_selectbox('unterkunft','M',$_options,$_selection,$_classes);

###############################################################################

HTML-Output

###############################################################################
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
  <TITLE>Selectbox</TITLE>
  <META NAME="Author" CONTENT="Thomas Schmieder, bitworks Deutschland">
  <META NAME="Keywords" CONTENT="Beispiele, HTML, PHP, Programmierung, Selectbox">
  <META NAME="Description" CONTENT="Kleine Tools für PHP-Programmierer">

<style type="text/css">
  <!--
  .sel_unterkunft
  {
    font-family:Century Gothic,Helvetica,Arial,sans-serif;
    font-size:12pt;
    width:200px;
    height:10em;
  }
  -->
  </style>
</HEAD>

<BODY>

<h3>Selectbox multiple</h3>

<!-- Zum Anschauen der Post-Parameter Kommentierung wechseln
<form action="http://selfhtml.bitworks.de/debug/kontrolle.php" method="POST">
-->
<form action="" method="POST">
  <?php echo $select; ?>
  <p><input type="submit" name="btn[test]" value="lass sehen"></p>
</form>
</BODY>
</HTML>

Harzliche Grüße aus http://www.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau