Enum Werte in Formular laden und verändern

schaut doch schonmal ganz gut aus, also die richtigen Werte bekommst du schonmal aus der Datenbank aufgeteilt hast du sie auch...

PHP:
echo '<select id="bettw" name="bettw">';
echo '<option value="'.$werte[0].'">'.$werte[0].'</option>';
echo '<option value="'.$werte[1].'">'.$werte[1].'</option>';
echo '</select>';

so würde die ausgabe in einem Select aussehen. Nur wird dir das vermutlich nichts bringen, weil in deinem enum Feld sowieso immer beides steht, es sei denn du speicherst die Antwort in einem anderen Feld.

Der Zugriff auf die Variable wäre dann $_POST['bettw'] bzw $_GET['bettw'] in dem Script das du bei der action Eigenschaft deines Formulars angegeben hast.

Grüße
 
Hi Phil,
wie meinst Du die Antwort in ein anderes Feld speichern ? und überhaupt gibt es keine elegantere Lösung als typ ENUM ? oder wie würdest Do sowas macher ja/nein oder Herr/Frau

Der Zugriff ist auch so wie von Dir unten beschrieben

Dank und Gruss

schaut doch schonmal ganz gut aus, also die richtigen Werte bekommst du schonmal aus der Datenbank aufgeteilt hast du sie auch...

PHP:
echo '<select id="bettw" name="bettw">';
echo '<option value="'.$werte[0].'">'.$werte[0].'</option>';
echo '<option value="'.$werte[1].'">'.$werte[1].'</option>';
echo '</select>';

so würde die ausgabe in einem Select aussehen. Nur wird dir das vermutlich nichts bringen, weil in deinem enum Feld sowieso immer beides steht, es sei denn du speicherst die Antwort in einem anderen Feld.

Der Zugriff auf die Variable wäre dann $_POST['bettw'] bzw $_GET['bettw'] in dem Script das du bei der action Eigenschaft deines Formulars angegeben hast.

Grüße
 
Hi,

in deinem enum Feld steht ja immer y,n, du kannst also nicht sagen ob die Person nun männlich oder weiblich ist. Deswegen sagte ich schonmal das ein Feld mit Datentyp int und Feldlänge von 1 voll und ganz ausreichen würde. Dann wäre zum Beispiel eine 0 im Feld bettw = männlich, eine 1 = weiblich und eine 3 = irgendwas, usw. bis maximal 9 Fälle.

Dann kannste das ja per mysql_query auslesen und bekommst zum beispiel ne 1 für weiblich.

PHP:
$Zuordnung = array(0 => 'männlich', 1=>'weiblich', 3=>'irgendwas anderes');

echo '<select id="bettw" name="bettw">';
foreach ($Zuordnung as $value => $key){
 echo '<option value="'.$key.'"';
 if ($value == $result_wert_vom_select){
  echo "selected";
 }          
 echo '>'.$value.'</option>';
}
echo '</select>';

so in etwa sollte das ganze dann aussehen, obs so funktioniert hab ich jetzt nicht getestet, sollte aber vom prinzip her hinkommen
 
Auch wenn Enum vom Gedanke her eigentlich eine feine Sache ist. So ist es von der Handhabung scheinbar doch recht kompliziert. Das wird auch der Grund sein warum zumindest hier keiner was damit zu tun haben will.

Wenn du wie schon geschrieben entweder den Datentyp Integer nimmst und dann z.B. "0" in "Nein" und "1" in "Ja" umwandelst oder wenn du den Typ VarChar nimmst und in deinen Formularen die möglichen Werte in eine Listbox einträgst, dann bist du sicher einfacher dran. Auf diese Weise kann der Anwender auch keine falschen Werte eintragen.

Du kannst was das Befüllen der Listen angeht sogar über eine Hilfstabelle noch automatisch gestallten.

Die Hilfstabelle hat 2 Felder: Feldname und Wert.
Wenn du jetzt eine Adressdatenbank hast, dann gibt es dort die Tabelle Adressen. In dieser Tabelle gibt es neben dem Vornamen, dem Nachnamen, der Straße auch noch ein Feld für die Anrede (erlaubt sind hier: Herr, Frau, Fräulein).

In die Hilfstabelle trägst du jetzt ein:
"Anrede", "Herr"
"Anrede", "Frau"
"Anrede", "Fräulein"

Somit kannst du durch eine einfache Abfrage alle für dieses Feld gültigen Werte ermitteln und diese auch einfach verwalten.

Gruß Thomas
 
..d.h das Feld beinhaltet nur einen wert 0,1,2...etc
Und wie erfolgt die Eingabe für den User ? der soll ja vertändliche Werte auswählen..und meine Eingabe aber ist immer nur 0,1,2,3..etc
ich ha ein INT feld definiert ind versuche ein bischen zu experimentieren :-)
danke


Hi,

in deinem enum Feld steht ja immer y,n, du kannst also nicht sagen ob die Person nun männlich oder weiblich ist. Deswegen sagte ich schonmal das ein Feld mit Datentyp int und Feldlänge von 1 voll und ganz ausreichen würde. Dann wäre zum Beispiel eine 0 im Feld bettw = männlich, eine 1 = weiblich und eine 3 = irgendwas, usw. bis maximal 9 Fälle.

Dann kannste das ja per mysql_query auslesen und bekommst zum beispiel ne 1 für weiblich.

PHP:
$Zuordnung = array(0 => 'männlich', 1=>'weiblich', 3=>'irgendwas anderes');

echo '<select id="bettw" name="bettw">';
foreach ($Zuordnung as $value => $key){
 echo '<option value="'.$key.'"';
 if ($value == $result_wert_vom_select){
  echo "selected";
 }          
 echo '>'.$value.'</option>';
}
echo '</select>';

so in etwa sollte das ganze dann aussehen, obs so funktioniert hab ich jetzt nicht getestet, sollte aber vom prinzip her hinkommen
 
Hallo Thomas,
jetzt bin ich total durcheinander ..ich habe ein Feld INT definiert ...wie Phil geimeint hat ...allerdings komme ich mit der Umwandlung nicht klar...es soll ja für 0 ein Nein und für 1 ein Ja im Formular laden und verändernsoll genauso funktionieren...
mein code sieht so aus :


PHP:
$query2= "SELECT bettw2 FROMtebelle  WHERE id='6'  ";
$rsProfile = mysql_query($query2);
$row3= mysql_fetch_array($rsProfile);

mit
print_r($row3);

bekoome ich den gespeicherten wert :

Array
(
[0] => 1
[bettw2] => 1

)


die select Anweisung mache ich so

PHP:
<select  id="bettw2" name="bettw2">
<option input value="<?php echo $row3 ?>">JA</option>
<option input value="<?php echo $row3 ?>">NEIN</option>
</select>


wie funktioniert die Zuordnung

Verzweifelte Grüsse



Auch wenn Enum vom Gedanke her eigentlich eine feine Sache ist. So ist es von der Handhabung scheinbar doch recht kompliziert. Das wird auch der Grund sein warum zumindest hier keiner was damit zu tun haben will.

Wenn du wie schon geschrieben entweder den Datentyp Integer nimmst und dann z.B. "0" in "Nein" und "1" in "Ja" umwandelst oder wenn du den Typ VarChar nimmst und in deinen Formularen die möglichen Werte in eine Listbox einträgst, dann bist du sicher einfacher dran. Auf diese Weise kann der Anwender auch keine falschen Werte eintragen.

Du kannst was das Befüllen der Listen angeht sogar über eine Hilfstabelle noch automatisch gestallten.

Die Hilfstabelle hat 2 Felder: Feldname und Wert.
Wenn du jetzt eine Adressdatenbank hast, dann gibt es dort die Tabelle Adressen. In dieser Tabelle gibt es neben dem Vornamen, dem Nachnamen, der Straße auch noch ein Feld für die Anrede (erlaubt sind hier: Herr, Frau, Fräulein).

In die Hilfstabelle trägst du jetzt ein:
"Anrede", "Herr"
"Anrede", "Frau"
"Anrede", "Fräulein"

Somit kannst du durch eine einfache Abfrage alle für dieses Feld gültigen Werte ermitteln und diese auch einfach verwalten.

Gruß Thomas
 
Morgen,

deine select Anweisung funktioniert so nicht, bzw das select ist richtig, aber die options nicht. Deswegen brauchst du ja das hilfsarray in dem die Zuordnung steht. So wie du es jetzt hast, haben alle options das selbe Value und das ist ja nicht gewollt.

aussehen würde dein HTML Code aktuell so:
PHP:
<select  id="bettw2" name="bettw2">
  <option input value="1">JA</option>
  <option input value="1">NEIN</option> 
</select>
nur das würde dir ja nichts bringen, aussehen sollte das eher so:
PHP:
<select  id="bettw2" name="bettw2">
  <option input value="0">JA</option>
  <option input value="1" selected>NEIN</option> 
</select>

und das erreichst du durch den Code den ich dir oben schonmal gegeben hatte

PHP:
$Zuordnung = array(0 => 'ja', 1=>'Nein', 3=>'vielleicht');

echo '<select id="bettw" name="bettw">';
foreach ($Zuordnung as $value => $key){
 echo '<option value="'.$key.'"';
 if ($value == $row3){
  echo "selected";
 }          
 echo '>'.$value.'</option>';
}
echo '</select>';

dann sollte das auch funktionieren....
 
Morgen Phil Danke für deine Geduld...ich habs geändert
..De Wert wird auch gelesen... ich habs in der Datenbank geändert und es funktioniert ..aber der neuer selectierte Wert wird nicht abgeschickt...bzw. geändert mit dieser Abfrage erreicht man im übrigen genau das gleiche alleding
..aber abgeschickt wird auch ..

PHP:
<input type="checkbox" name="bettw2" value="0"
<?php 
if ($bettw2 == '0') { 
    echo 'checked="checked"'; 
}






QUOTE=Badboyws;1810294]Morgen,

deine select Anweisung funktioniert so nicht, bzw das select ist richtig, aber die options nicht. Deswegen brauchst du ja das hilfsarray in dem die Zuordnung steht. So wie du es jetzt hast, haben alle options das selbe Value und das ist ja nicht gewollt.

aussehen würde dein HTML Code aktuell so:
PHP:
<select  id="bettw2" name="bettw2">
  <option input value="1">JA</option>
  <option input value="1">NEIN</option> 
</select>
nur das würde dir ja nichts bringen, aussehen sollte das eher so:
PHP:
<select  id="bettw2" name="bettw2">
  <option input value="0">JA</option>
  <option input value="1" selected>NEIN</option> 
</select>

und das erreichst du durch den Code den ich dir oben schonmal gegeben hatte

PHP:
$Zuordnung = array(0 => 'ja', 1=>'Nein', 3=>'vielleicht');

echo '<select id="bettw" name="bettw">';
foreach ($Zuordnung as $value => $key){
 echo '<option value="'.$key.'"';
 if ($value == $row3){
  echo "selected";
 }          
 echo '>'.$value.'</option>';
}
echo '</select>';

dann sollte das auch funktionieren....
 
nochmal morgen,

wenn das select Tag nicht innerhalb eines <form></form> Tags ist, dann wird das auch nicht abgeschickt (eigentlich logisch, weil ganz normale Formularverarbeitung) Du musst dir also ein richtiges Formular machen, wie das funktioniert, wenn mans nicht weiß, kann man ergoogeln

ansonsten ist das mit der Checkbox schon richtig, nur musst du aufpassen das du im "unchecked" Fall auch wirklich 1 bekommst. Soweit ich das im Kopf hab, macht man für unchecked immer 0 und für checked 1 als Value, müsstest aber ausprobieren.

Wie gesagt, um das wieder in ne DB zu schreiben, musst da nen richtiges Formular drauß machen und den Wert der Checkbox, oder des Select Fields per $_POST[] oder $_GET abfragen
 
hi,
irgendwo mache ich einen anderen Fehler ....den der Wert in der DB wird richtig gelesen aber nicht übertragen und das es in einem richtigen Formular drinnen ist ..denn ich habe andere Felder drinnen (andere Typen ) die werden richtig gelesen und aktualisiert....wo aber der Fehler ist kann nicht sagen mir fehlt einfach auch nichts mehr ein..was ich vernüftig fragen kann.

nochmal morgen,

wenn das select Tag nicht innerhalb eines <form></form> Tags ist, dann wird das auch nicht abgeschickt (eigentlich logisch, weil ganz normale Formularverarbeitung) Du musst dir also ein richtiges Formular machen, wie das funktioniert, wenn mans nicht weiß, kann man ergoogeln

ansonsten ist das mit der Checkbox schon richtig, nur musst du aufpassen das du im "unchecked" Fall auch wirklich 1 bekommst. Soweit ich das im Kopf hab, macht man für unchecked immer 0 und für checked 1 als Value, müsstest aber ausprobieren.

Wie gesagt, um das wieder in ne DB zu schreiben, musst da nen richtiges Formular drauß machen und den Wert der Checkbox, oder des Select Fields per $_POST[] oder $_GET abfragen
 
Zurück