Select-Box und Abfrage "gesetzt"?

Ronja

Räubertochter
ID: 51429
L
4 Mai 2006
1.010
33
Hallo Wissende,

bin leider nicht so wirklich fündig geworden.
Gibt es eine Möglichkeit bei folgender Abfrage:

HTML:
<select name="anrede" class="inputtext" id="anrede">
                      <option value="-">Bitte wählen ...</option>
                      <option value="Herr">Herr</option>
                      <option value="Frau">Frau</option>
                      <option value="Firma">Firma</option>
                    </select>

auch zu überprüfen, ob Herr oder Frau oder Firma gesetzt ist?

Wenn ja, wie ist der Ansatz (php)?

Danke für Eure Hilfe,
Ronja
 
PHP:
<select name="anrede" class="inputtext" id="anrede">
   <option <?=($_POST['anrede'] == '-' ? 'selected' : '');?> value="-">Bitte wählen  ...</option>
   <option <?=($_POST['anrede'] == 'Herr' ? 'selected' : '');?>  value="Herr">Herr</option>
   <option <?=($_POST['anrede'] == 'Frau' ? 'selected' : '');?>  value="Frau">Frau</option>
   <option <?=($_POST['anrede'] == 'Firma' ? 'selected' : '');?>  value="Firma">Firma</option>
</select>
sowas? :think:
 
Wonach suchst du genau? Ob beim Abschicken der Werte die Optionen gesetzt sind? Ob beim Überprüfen der Werte vor dem Eintragen in der Datenbank die Werte gesetzt sind? Oder das, was Gremlin aufgezeigt hat, sprich eine Vorselektion anhand vorhandener Daten vorzunehmen?
 
Ich denke er meinte nen check beim verarbeiten:
HTML:
<select name="anrede" class="inputtext" id="anrede">
  <option value="">Bitte wählen ...</option>
  <option value="Herr">Herr</option>
  <option value="Frau">Frau</option>
  <option value="Firma">Firma</option>
</select>
PHP:
if(!empty($_POST['anrede'])) {
//alles ok weiter gehts
 
Hi,

also einmal geht es natürlich darum, zu überprüfen, ob der gesetzte Wert NICHT "Bitte wählen" (also der Ausgangswert) ist. D.h. das ganze soll ein Pflichtfeld werden.
Wenn das Feld nicht verändert wurde, soll wie bei meinen anderen Inputfeldern ein Textchen über dem Feld erscheinen, "bitte geben Sie ...ein" und das entsprechende Feld wird farbig.

Bei den normalen inputfeldern sieht das bei mir so aus:

PHP:
<span class="formular">Vorname*</span>
<?php if ($fehler["vorname"] != "") { echo $fehler["vorname"]; } ?><input type="text" style="background-color:<?php if ($fehler["vorname"] != "") { echo "#FF6500"; } else { echo  "#fefefe"; } ?>" name="vorname" id="textfield" value="<?php echo $_POST[vorname]; ?>" <?php if ($fehler["vorname"] != "") { echo 'class="error"'; } ?>/></td>

Bedeutet, wenn Feld nicht ausgefüllt, kommt Text und Farbänderung.

Meine Frage ist jetzt, ob dies ähnlich für mein "Anrede-Feld" möglich ist und wie ich das umsetzen kann.

Dankeschön :)
Ronja
 
Okay, hab ich versucht.

Wo ist mein Fehler?

PHP:
<?php if ($fehler["anrede"] != "nix") { echo $fehler["anrede"]; } ?><select name="anrede" style="background-color:<?php if ($fehler["anrede"] != "nix") { echo "#FF6500"; } else { echo  "#fefefe"; } ?>" id="anrede" value="<?php echo $_POST[anrede]; ?>" <?php if ($fehler["anrede"] != "nix") { echo 'class="error"'; } ?>/>
   <option <? if($_POST['anrede']=="nix"){ echo "selected";}?> value="nix" >Bitte wählen  ...</option>
   <option <? if($_POST['anrede']=="Herr"){ echo "selected";}?> value="Herr">Herr</option>
   <option <? if($_POST['anrede']=="Frau"){ echo "selected";}?> value="Frau">Frau</option>
   <option <? if($_POST['anrede']=="Firma"){ echo "selected";}?> value="Firma">Firma</option>
</select>

Merci ....
 
PHP:
<?php echo ($_POST["anrede"] == "nix") ? $fehler["anrede"] : '' ?><select name="anrede" style="background-color:<?php echo ($_POST["anrede"] == "nix") ? ' #FF6500' : ' #fefefe'; ?>;" id="anrede"<?php echo ($_POST["anrede"] == "nix") ? ' class="error"' : ''; ?>>
   <option <? echo ($_POST['anrede']=="nix") ? ' selected="selected"' : ''; ?> value="nix" >Bitte wählen  ...</option>
   <option <? echo ($_POST['anrede']=="Herr") ? ' selected="selected"' : ''; ?> value="Herr">Herr</option>
   <option <? echo ($_POST['anrede']=="Frau") ? ' selected="selected"' : ''; ?> value="Frau">Frau</option>
   <option <? echo ($_POST['anrede']=="Firma") ? ' selected="selected"' : ''; ?> value="Firma">Firma</option>
</select>

Und ich würde es mit empty machen wie schon weiter oben geschrieben.

*edit
Und ein select hat niemals ein value nur eine selectierte option, welche das value beinhaltet.
 
Zuletzt bearbeitet:
[..]Solche Überprüfungen niemals mit Blacklist machen, nur mit Whitelist.

Und da ist, bei mehreren Möglichkeiten, der schönste Weg (meiner Meinung nach) über ein Array mit diesen Möglichkeiten und benutzen der in_array() oder array_key_exists() Funktion.

z.B.:
PHP:
$values = array(
  '' => 'Bitte wählen',
  'Herr' => 'Herr',
  'Frau' => 'Frau',
  'Firma' => 'Firma'
);

if(isset($_POST['anrede']) && !array_key_exists($_POST['anrede'], $values)) {
   // Ungueltiger Wert uebermittelt
}

// Ausgabe kann nun auch automatisiert ueber das Array geloest werden, auch die Ueberpruefung welcher Wert selektiert werden soll
 
Zuletzt bearbeitet:
@thehacker

Ja, ich weiß. Aber generell müsste man anders an das Problem herangehen. Ich wollte damit nur sagen, wie man es am leichtesten mit dem bestehenden Code am schnellsten machen kann. Selbstverständlich ist da Tür und Tor offen für Foo, FooBar und vor allem FooXSS ;) Ich würde auch eher zu der Lösung tendieren:

Und da ist, bei mehreren Möglichkeiten, der schönste Weg (meiner Meinung nach) über ein Array mit diesen Möglichkeiten und benutzen der in_array() oder array_key_exists() Funktion.

Ist halt immer schwer zu beurteilen, welche Lösung man jemandem liefert, der gerade PHP lernt. Da wird's unter Berücksichtigung aller Aspekte im realen Gebrauch schnell sehr komplex =)
 
Ist halt immer schwer zu beurteilen, welche Lösung man jemandem liefert, der gerade PHP lernt. Da wird's unter Berücksichtigung aller Aspekte im realen Gebrauch schnell sehr komplex =)
Lieber eine zu komplexe Antwort, als eine Antwort, die so tut, als sei PHP das leichteste der Welt und hinterher sind alle möglichen Sicherheitslücken drinnen.

Man sieht ja, was in der Lose4-Welt verbreitet ist: Von 10.000 Webseiten, die die Lose-Kiddies programmiert haben, würd ich den Code von 9.999 Seiten nicht mal geschenkt annehmen.
 
@thehackker & freddixx: für mich als lernenden ist es immer am besten wenn beides beschrieben wird und die unterschiede....

also ich lern nichts bei "immer whitelist machen"

und ich lern was bei "immer whitelist machen, weil blacklist zu gefährlich wegen angriffen"
 
Wollte Euch herzlichst für Eure zahlreichen Tipps danken!
War sehr hilf- und lehrreich!

Merci
Ronja