noerion: Auswahlformular

Hallo erstmal

Ich habe da ein kleines Problem.
ich habe ein PHP Script das aus in eine Datenbank schreiben soll, es besteht aus Formularen. Sowohl Textboxen als auch Auswahllisten.
Damit der User nicht alles neu eintragen muss lade ich die bestehenden Daten aus der DB in die Formulare.
Es sind so Sachen wie Texte, Schriftgrößen usw.
Bei den Textboxen funzt es ja ganz prima, nur mit den Auswahllisten hab ich noch schwierigkeiten.
es geht darum das beim Schriftformat der Text Bsp "Fett" sein soll während die Value aber "B" ist.
für diesen zweck habe ich eine Funktion gebastest die das Abfragen soll.

<script type="text/javascript">
<!--
function format(form)
{

switch(form)
{
case "":
        formi="normal";
        break;
case "B":
         formi="fett";
 break;
case "I":
      formi="kursiv";
 break;
case "U":
 formi="unterstrichen";
 break;
case "BI":
         formi="fett/kursiv";
 break;
case "IU":
 formi="unterstrichen/kursiv";
 break;
case "BUI":
         formi="fett/unterstrichen/kursiv";
 break;
}

return form;
return formi;
}
//-->
</script>

ich rufe die dann folgendermaßen auf

echo "<td><select name="schriftform1" size="1"".
 "onchange=$name=(this.form.schriftform1.options[this.form.schriftform1.selectedIndex].value)".
         "onLoad="form(document.$_POST[schriftform1].1.value)">";
 if ($formi)
    {
    echo "<option selected value="".$form."">".$formi."</option>";
    }
 else
 {
 echo "<option selected value="">normal</option>";
 }
 echo "<option value="">normal</option>".
 "<option value="B">fett</option>".
 "<option value="I">kursiv</option>".
 "<option value="U">unterstrichen</option>".
 "<option value="BI">fett/kursiv</option>".
 "<option value="BU">fett/unterstrichen</option>".
 "<option value="BUI">fett/kursiv/unterstrichen</option>".
 "<option value="IU">kursiv/unterstrichen</option>".
 "</select></td>";

leider sind die beiden Rückgabewerte der Funktion aber immer leer. warum ist das so? wo liegt mein Fehler?
hoffe es kann mir jemand helfen.

  1. ich habe ein PHP Script das aus in eine Datenbank schreiben soll, es besteht aus Formularen. Sowohl Textboxen als auch Auswahllisten.
    Damit der User nicht alles neu eintragen muss lade ich die bestehenden Daten aus der DB in die Formulare.
    Es sind so Sachen wie Texte, Schriftgrößen usw.
    Bei den Textboxen funzt es ja ganz prima, nur mit den Auswahllisten hab ich noch schwierigkeiten.
    es geht darum das beim Schriftformat der Text Bsp "Fett" sein soll während die Value aber "B" ist.
    für diesen zweck habe ich eine Funktion gebastest die das Abfragen soll.

    Dazu brauchst du keine Funktion, sonder schreib in den HTML code des option einfach selected, fertig.

    Und zwar hier:

    echo "<option value="">normal</option>".
     "<option value="B">fett</option>".
     "<option value="I">kursiv</option>".
     "<option value="U">unterstrichen</option>".
     "<option value="BI">fett/kursiv</option>".
     "<option value="BU">fett/unterstrichen</option>".
     "<option value="BUI">fett/kursiv/unterstrichen</option>".
     "<option value="IU">kursiv/unterstrichen</option>".

    Du musst bei jeder option prüfen ob der wert aus deiner DB mit der deines option wertes übereinstimmt.

    In Perl gibt es vor solche Sachen das CGI Modul, wo du lediglich den default Wert übergibst, keine Ahnung ob es für sowas in PHP auch eoine Funktion gibt.

    Zum (unnötigen) JS:

    ich versteh ja nicht warum soviele mit switch/case arbeiten, es macht i.d.R. den Code unübersichtlich und ist schwer wartbar, du kannst den gleichen Effekt wesentlich einfacher mit einem Objekt erzeilen, :

    <script type="text/javascript">
    <!--

    var wert = new Object();
    wert['B'] = 'fett';
    wert['I'] = 'kursiv';
    wert['U'] = 'unterstrichen';
    .....

    und dann ist deine Funktion nur noch ein einzeiler:

    function format(form)
    {

    return wert[form] ? wert[form] : 'normal';

    }
    //-->
    </script>

    Struppi.

    1. mit dem selected geht es ja nicht!
      WEnn ein User seinen Wert ändert, dann soll er das auch in dem Script sehen.
      Das heißt der Wert aus der DB muss dann angezeigt werden und kein festselektierter Wert.
      mit Objekten habe ich noch wenig Erfahrung. darum weiß ich nicht so recht wie das funktionieren soll.

      1. mit dem selected geht es ja nicht!
        WEnn ein User seinen Wert ändert, dann soll er das auch in dem Script sehen.

        Das versteh ich nicht.
        Dein PHP Skript holt aus einer DB einen Wert und der soll vorselektiert werden, fertig.

        Oder versteh ich dich falsch?

        Das heißt der Wert aus der DB muss dann angezeigt werden und kein festselektierter Wert.

        Ja eben, du sollst im PHP Skript prüfen welchen Wert du hast und dann das entsprechende option selektieren, dass machst du aber bisher nicht.

        mit Objekten habe ich noch wenig Erfahrung. darum weiß ich nicht so recht wie das funktionieren soll.

        probier es aus, es ist ähnlich wie mit assoziativen Arrays.

        var obj = new Object();

        obj['test1'] = 'Wert1';
        obj['test2'] = 'Wert2';

        alert(obj.test1);
        alert(obj.test2);

        oder:

        for(var key in obj) alert('Der Wert von ' + key + ' ist :' + obj[key]);

        Struppi.