Dropdown-Menü: Wert nach Submit beibehalten
seppm
- php
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">
<?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>";
}
?>
</select>
<input type="submit" name="Submit" value="Senden">
</form>
Hallo Sepp,
seltsam das kleine Script hat so viele Fehler
und dürfte [gar nicht] gehen.
Wie dem auch sei...
Schleife soll dynamisch erzeugt werden, dann innerhalb dieser Schleife eine If abfrage ob der übergebene Wert der gleiche ist,
wie der aktuelle in der Schleife.
zb.
while ($row = mysql_fetch_array($res)) {
$wert = $row['Witzart'];
if($wert == $_GET['Art']){$tmp = 'selected';}
echo "<option $tmp value="$wert">$wert</option>";
if($tmp){unset ($tmp);}
}
Müsste so weit gehen , nicht getestet.
Nur was mich wundert :
echo "<option>", $row["Witzart"],"</option>";
1. Kommas anstatt Punkte ? Das soll gehen ?
2. Kein Value( zumindest nicht schön )
3. Du benutzt für variabeln Namen gross/kleinschreibung
gemischt, halte ich auch nicht für toll und sehr fehler
anfällig.
Aber na ja hoffe konnte dir helfen ;-)
Gruss Nikki
Wow, vielen Dank, es funktioniert so!
Hier noch das gesamte Script, vielleicht kanns ja jemand brauchen.
(Funktioniert trotz der Kommas:-)
<html>
<head>
<title>Witzdb</title>
</head>
<body>
<form name="FormArt" method="get" action="index1.php">
<select name="Art" onChange="index1.php">
<?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)) {
$wert = $row['Witzart'];
if($wert == $_GET['Art']){$tmp = 'selected';}
echo "<option $tmp value="$wert">$wert</option>";
if($tmp){unset ($tmp);}
}
?>
</select>
<input type="submit" name="Submit" value="Senden">
</form>
<table>
<tr>
<?php
$Art = $_GET[Art];
$dbverb=mysql_connect("localhost", "root", "");
mysql_select_db("Witzdatenbank",$dbverb);
$res = mysql_query("SELECT Witztext FROM witz WHERE Witzart LIKE '$Art'");
while ($row = mysql_fetch_array($res)) {
echo "<td>",$row[Witztext],"</td>";
}
?>
</tr>
</table>
</body>
</html>
<!--
Hier noch das SQL für die DB
witz
CREATE TABLE witz
(
Witztext
varchar(50) NOT NULL default '',
Witzart
varchar(30) NOT NULL default '',
Bewertung
char(2) NOT NULL default ''
) TYPE=MyISAM;
witz
INSERT INTO witz
VALUES ('Hier ist der Witz', 'Fun', '5');
INSERT INTO witz
VALUES ('der 2. Witz', 'Fun', '4');
INSERT INTO witz
VALUES ('der 3. Witz', 'Computer', '5');
-->
Hello,
Hier noch das gesamte Script, vielleicht kanns ja jemand brauchen.
(Funktioniert trotz der Kommas:-)
<select name="Art" onChange="index1.php">
Du hast aber den Witz mit dem onChange noch nicht erklärt. Was passiert da bzw. soll da passieren, wenn einer einen anderen Wert auswählt?
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Ups, das ist ein Überbleibsel aus meinen zahlreichen erfolglosen Versuchen.
Leider gab keine Fehlermeldung drum hab ich nix gemerkt.
Richtig wäre:
<select name="Art">
Hello Nikki,
Nur was mich wundert :
echo "<option>", $row["Witzart"],"</option>";
- Kommas anstatt Punkte ? Das soll gehen ?
Ja, echo kann das mit Kommata, genauso wie WriteLn() in Pascal. Beide sind keine Funktionen, sondern Sprachkonstrukte des Compilers bzw Parsers.
Die Ausgaben werden dann automatisch angereiht und, ich glaube sogar, ins TAB-Raster geschoben. Das weiß ich aber nicht mehr bestimmt und will es jetzt auch nicht ausprobieren.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
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;
}
#==============================================================================
#==============================================================================
$_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);
###############################################################################
###############################################################################
?>
<!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