Formular mit DER Drop-Down-Liste

Blackhawk50000

Erfahrenes Mitglied
Also ich habe ein Formular in dem ich eine Drop-Down-Liste eingebettet habe. Die einträge der liste bekom ich aus ner datenbank damit die in deutsch und endlisch zu sehen sind.

wenn ich dann auch absenden gehe ruft sich das formular nach einem check selbst wieder auf, und meckert wo einträge fehlen oder nicht korrekt sind. alle einträge, egal ob falsch oder richtig, stehen dann noch da.... alle radio buttons sind noch so ausgewählt und die checkboxen genau so.... ebenso wie die textboxen noch den text enthalten.
aber bei der dropdownliste ist nicht mehr der vorher gewählte eintrag da... wie mach ich das, das nach dem klick auf den button der eintrag immernoch ausgewählt ist..... hier mein code zu der liste

PHP:
function draw_TischDeko($err)
{
	echo "<br>\n";
	echo $_REQUEST['TischDeko'];
	echo "<fieldset>\n";
	echo "<legend>$err<label for='Tischdeko'><span class=\"legHeader\">&nbsp;" . $_SESSION['geb_Deko'] . ":</span></label></legend>\n";
	echo "<label for='ez'>" . $_SESSION['geb_DekoThema'] . ":</label>\n";
	echo "<SELECT NAME=\"TischDeko\" id=\"ez\">\n";
	echo "		  <option>Bitte auswählen</optio>\n";
	echo "     <optgroup label=\"Mädchendekoration\">\n";
	echo "        <option value=\"" . $_SESSION['geb_Deko01'] . "\">".$_SESSION['geb_Deko01']."</option>\n";
	echo "        <option value=\"" . $_SESSION['geb_Deko02'] . "\">".$_SESSION['geb_Deko02']."</option>\n";
	echo "        <option value=\"" . $_SESSION['geb_Deko03'] . "\">".$_SESSION['geb_Deko03']."</option>\n";
	echo "        <option value=\"" . $_SESSION['geb_Deko04'] . "\">".$_SESSION['geb_Deko04']."</option>\n";
	echo "      </optgroup\">\n";
	echo "      <optgroup label=\"Jungendekoration\">\n";
	echo "        <option value=\"" . $_SESSION['geb_Deko05'] . "\">".$_SESSION['geb_Deko05']."</option>\n";
	echo "        <option value=\"" . $_SESSION['geb_Deko09'] . "\">".$_SESSION['geb_Deko09']."</option>\n";
	echo "        <option value=\"" . $_SESSION['geb_Deko06'] . "\">".$_SESSION['geb_Deko06']."</option>\n";
	echo "        <option value=\"" . $_SESSION['geb_Deko07'] . "\">".$_SESSION['geb_Deko07']."</option>\n";
	echo "        <option value=\"" . $_SESSION['geb_Deko08'] . "\">".$_SESSION['geb_Deko08']."</option>\n";
	echo "      </optgroup\">\n";
	echo "    </select><br>\n";
	echo " <label for='deko'>".$_SESSION['geb_DekoAlternat']."</label>&nbsp;<input name=\"dekoAlternat\" id=\"dekoAlternat\" value=\"" . $_POST['dekoAlternat'] . "\" type=\"text\" size=\"20\" maxlength=\"30\">\n";
	echo "</fieldset>\n";
}
 
Hi,

wo kommen denn in dem Schnipsel die Daten aus der DB? Du füllst die Liste ja aus der Session...

DB würde denke ich in etwa so aussehen:

PHP:
while($row = mysql_fetch_assoc($result)) {
   echo '<option value="' . $row['TischDeko'] . '"';
   if($row['TischDeko'] == $_POST['TischDeko']) {
      echo ' selected'; //gesendeten Eintrag wieder auswählen
   }
   echo '>' . $row['TischDeko'] . '</option>';
}

LG
 
ja genau ich neme die einträge aus der session variable die ich aber aus der datenbank fülle...(habe nicht ich geschrieben sondern mein vorgänger und ich muss es modifizieren)

die idee das direkt aus der DB zu hlen hatte ich auch schon nur weiß ich nicht wie... das codefragment sieht schon sehr hilfreich aus... kann ich das so verwenden wie es da ist? wenn nicht, was muss ich noch machen und beachten?
 
Hallo,

du kannst das eigentlich so verwenden.

Nur musst du noch die MySQL-Query ausführen, um an die Daten in der Datenbank zu kommen:
PHP:
$result = mysql_query("SELECT * FROM `table`");
while($row = mysql_fetch_assoc($result))
{ 
      echo '<option value="' . $row['TischDeko'] . '"'; 
      if($row['TischDeko'] == $_POST['TischDeko'])
      { 
            echo ' selected'; //gesendeten Eintrag wieder auswählen 
      } 
      echo '>' . $row['TischDeko'] . '</option>'; 
}
Ansonsten sollte eigentlich alles stimmen.

MfG
Fabsch
 
das problem ist jetzt nur noch das die tabelle nicht einfach nur ne tabelle ist sondern auch mehrere spalten hat....

id----reihenfolge-----optgroup--------------------de--------------------en
0--------0--------------tischdenko------------unterwasser------under water
1--------1--------------tischdenko---------------fussball------------football

wie mach ich das dann?
(die sprache wird gaaaanz am beginn der session (die session von der seite) gewählt
 
Hi,

komisches DB-Design... Mit den beiden Zeilen kann ich jetzt nichts anfangen. Zeig' doch mal, wie die Sessionvariablen gefüllt werden, vielleicht erklärt das mehr.

LG
 
Also dein Db design solltes du nochmals überdenken. Soweit ich das aus den 2 Zeilen sehe hast du dort eine Redunaz drin die man vermeiden sollte.

Mfg Splasch
 
die session variablen werden folgendermaßen gefüllt...
(denke doch mal das es das ist, wie gesagt das ist NICHT mein werk... ich muss es nur etwas änder aber basierend auf DIESEM werk.....

also zu den Session variablen und dann noch ne frage von mir:
also erst mal in die datenbank..... ganz normal... und dann die sprache auswählen :
PHP:
if(isset($_REQUEST['lang']))
{
    if($_REQUEST['lang'] == "de")
    {
		$_SESSION['lang'] = "de";
    }
    elseif($_REQUEST['lang'] == "en")
    {
	    $_SESSION['lang'] = "en";
    }
    else
    {
    	$_SESSION['lang'] = "en";
  	}
}

anschließend folgendes... (NICHT MEIN WERK :D)
hier werden (glaub ich) tausende von sessionvariablen angelegt, und zwar jedesmal wenn ne neue website session angelegt wird..... d.h. jeder user hat seine eigene bebliotek an sessionvariablen..... in der tebelle translate sind alle teste deutsch und englisch.....

PHP:
$db->setFetchMode(DB_FETCHMODE_ASSOC);
$query =& $db->query("SELECT alias, " .$_SESSION['lang']. " FROM translate");
if (PEAR::isError($query))
{
	die($query->getMessage());
}

//array basteln
//alias als index von $_SESSION und de/en text als wert
while ($row = $query->fetchRow())
{
  $_SESSION[$row['alias']] = $row[$_SESSION['lang']];
}

ich weiß das der mist schwachsinnig ist.... aber naja was solls.... ich habe jetzt ne andere frage zu dieser funktion...

PHP:
function draw_kuchen2()
{
	global $db;
		$sql = "SELECT * FROM FormOptions WHERE OptGroup = 'Kuchen' Order by Reihenfolge LIMIT 0, 20 ";
		$query = $db->query($sql);

		if (PEAR :: isError($query))
		{
			die($query->getMessage() . " " . $sql);
		}

		echo "<fieldset>\n";
		echo '<legend><span class="legHeader">&nbsp;' . $_SESSION['geb_kuchen'] . "&nbsp;</span></legend>\n";
		echo '<table border = "0" width="60%">';
		while ($row = $query->fetchRow())
			{
			      echo '<tr><td><input type = "checkbox" value="' . $row[$_SESSION['lang']] . '"';
			      if($row[$_SESSION['lang']] == $_POST[$_SESSION['lang']])
			      {
			            echo 'checked="checked"'; //gesendeten Eintrag wieder auswählen
			      }
			      echo '>&nbsp;' . $row[$_SESSION['lang']] . "&nbsp;
			      	</td>
			      	<td>
							" . $_SESSION['geb_form27'] . "
					</td>
					<td>
							<input type=\"text\" id=\"kuchenanz\" value=\"" . $_REQUEST['kuchenanz'] . "\" name=\"kuchenanz\" border=\"0\" size=\"2\" maxlength=\"3\">
					</td>
					<td>
							&euro;&nbsp;" . $row['Preis'] . "
					</td>
			      </tr>\n";
//hier
			}
		echo '</table>';
		echo "</fieldset>\n";
}

hier wird aus der datenbank alle einträge von OptGroup ausgelesen und ausgegeben... alles dynamisch....

ich will das ganze so haben das.... wenn ich eines anchecke und in das textfeld die anzahl angebe, DANN erstmal auf den absenden button klicke, dann soll der preis * die anzahl gerechnet werden und dann aber noch die anzahl im textfeld drinnen stehen und der hacken in der checkbox sein.....

ich möchte bitte die variable bei //hier testweise ausgeben lassen
 
Zurück