Dropdown mit Datenbankinhalt füllen

  • Guten Abend zusammen,

    im Laufe des Abends ist noch eine Frage aufgetaucht, die ich mit der Suchfunktion nicht beantwort bekomme...


    Ich habe in einem Formular ein Dropdownfeld,
    der Inhalt der Liste existiert als Tabelle (wcf1_partys) in der Datenbank mit [partyID] und [partyname] welche über das ACP gefüllt wird (funktioniert auch).

    Diese Liste, möchte in einem Formular verwenden...

    Wie ich das ins Template einbaue, weiß ich,
    aber wie hole ich mir die Daten (innerhalb meiner Klasse) für das Dropdown?

    Ich habe mir jetzt schon diverse .class Dateien angesehen, aber ich werde nicht ganz schlau draus,
    oder bin inzwischen einfach zu müde... :rolleyes:

    Hat jemand nen Rat?

    Grüße
    Noisemaker

    When nothing goes right..... go left! 8)

    • Offizieller Beitrag
    Code
    {foreach from=$parties item=party}
    	{$party[partyID]} = {$party[partyname]}<br />
    {/foreach}

    Das obige Template enthält nur den relevanten Ausschnitt, für den genauen Aufbau einer Seite solltest du dir andere Templates anschauen. Ansteuerbar wäre die Seite dann über index.php?page=Party

    PS: Der Plural von "Party" heißt "Parties" und nicht "Partys" ;)

  • Guten Morgen,

    danke für die schnelle Antwort Alexander... :thumbup:

    Die Seite ansich existiert schon, muss den Code dann heute abend nur einbauen...


    Vielen Dank

    When nothing goes right..... go left! 8)

  • Hallöchen,

    ich bin erste heute dazu gekommen weiter dran zu arbeiten...
    Irgendwie ist das noch ein Fehler drin...

    Wenn ich innerhalb der Klasse bei readData() folgendes von Alexander verwende:

    Code
    $result = WCF::getDB()->prepareStatement($sql);


    kommt eine Fehlermeldung. (genau die o.g. Zeile)

    Code
    Fatal error:  Call to undefined method MySQLDatabase::prepareStatement() in /www/htdocs/w00d7705/wcf/lib/form/CashmanHeaddataForm.class.php on line 33

    Verwende ich statt "prepareStatement" "sendQuery" kommt zwar das dropdown,
    aber es enthält nicht nur die Values aus der Spalte "partyname" sondern auch die IDs -> sieht komisch aus... (siehe Anhang)

    Der entsprechende Template Code für das Feld lautet:

    HTML
    <div class="formElement{if $errorField == 'eventnamearea1'}formError{/if}">						
    						<div class="formFieldLabel">
    							<label for="eventnamearea1">{lang}wcf.cashman.tab1.field1.eventname{/lang}</label>
    						</div>
    						<div class="formField">
    							{htmlOptions options=$parties selected=$eventnamearea1 name=eventnamearea1 id=eventnamearea1 disableEncoding=true}
    						</div>
    					</div>

    Ausserdem hätte ich gerne, dass im DropDown nichts drin steht, wenn nicht etwas ausgewählt wurde.
    Derzeit ist es so, das der erste Wert standardmäßig drin steht.

    Was mache ich denn falsch?

    Greetz Noise

    • Offizieller Beitrag

    Bei WCF 2.0 ist es prepareStatement(), ich habe mich einfach vertan, sendQuery() ist natürlich richtig. Entschuldigung ;)

    Verwende einfach folgendes Konstrukt im Template:

    Code
    <select name="eventnamearea1">
    	{foreach from=$parties item=party}
    		<option value="{@$party[partyID]}"{if $party[partyID] == $eventnamearea1} selected="selected"{/if}>{$party.partyname}</option>
    	{/foreach}
    </select>

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!