2009-06-22 2 views
0

ich CakePHP und MySQL für meine Anwendung verwendeWie speichere ich Daten für ein Dropdown in einer Formulargenerierungsanwendung in CakePHP?

Ich habe drei Tabellen:

  • Forms (id, name, erstellt, modifiziert)
  • Attribute (id, form_id, Etikett, Typ, sequenceno)
  • Ergebnisse (id, form_id, attribute_id, Etikett, den Wert, submitted_by)

Die Anwendung I ist wie Form Builder entwickle. Generieren der Felder basierend auf dem Typ (zB .. Wenn type = "text" -> textbox erzeugen)

Jetzt habe ich einen Zweifel, wenn ich mein Typ ist "Dropdown" dann wird es eine Dropdown-Box mit haben einige Optionen. Wie kann ich diesen Wahlnamen behalten? Zum Beispiel:

<select id="jselect"> 
<option id="choice1">Male</option> 
<option id="choice2">Female</option> 
</select> 

Mein Beispieleintrag in der Tabelle in Attributtabelle sein wie wird

 1 1 name text 1 
     2 1 age number 2 
     3 1 address Textarea 3 

Und in meiner Ergebnistabelle

 1 1 1 name aruna 
     2 1 2 age 22 
     3 1 3 address XYZ 

das ist, wie kann ich malt speichern und weibliche Entscheidungen in der Tabelle? Da ich das Privileg haben werde, den Wahlnamen sogar dazwischen zu ändern.

+0

Randbemerkung: Sie möchten möglicherweise eine Spalte default_value in die Tabelle Attribute aufnehmen. –

Antwort

0

Haben Sie versucht, eine Enum zu verwenden?

The ENUM Type

+0

Ich denke, er will * programatically * Ändern Sie die möglichen Antworten –

0

Wenn ich gut verstehen Sie die possbile Antworten für Drop-Down-Typ Attribute speichern? Dann haben Sie zwei approches:

  • Separate Tabelle, übergeordnetes Attribut von id und möglichem Wert (einen pro Zeile)
  • Feld in der Attributtabelle, contaning mögliche Antworten als Label/Wert-Paare halten. In diesem Fall können Sie in einer TEXT-Spalte ein assoziatives 'd PHP-Array speichern, das value => label enthält. Es ist einfacher für die Wartung und Nutzung in PHP (unserialize das Feld zu verwenden, ändern Sie es, einzelne UPDATE zu ändern), aber Sie können diesen Wert nicht richtig in einer SQL-Abfrage.

Edit: Beispiel für Lösung # 2

Feld Hinzufügen answers vom Typ TEXT zu Ihrem Attributes Tisch.Dann führen Sie diesen PHP-Code:

// obtain this array programatically: 
$genders = array(
    ''  => 'Unknown', 
    'M' => 'Male', 
    'F' => 'Female', 
); 
// put this into the 'answers' field instead of displaying it 
echo serialize($genders); 

Dies wird Ihnen ein Attribut Eintrag wie folgt aus (was erklärt, warum dies kaum Abfrage-fähig ist):

4 1 gender dropdown 4 a:3:{s:0:"";s:7:"Unknown";s:1:"M";s:4:"Male";s:1:"F";s:6:"Female";} 

dann in Ihrem PHP-Code, nur:

$genders = unserialize($my_attribute_row['answers']); 
// here you have your array back 
+0

werden Sie etwas klarer sein .. Bitte – useranon

+0

Hier ist, hoffe dies hilft. Wenn Sie nach Klarheit fragen, geben Sie bitte an, was Sie wollen (wie "Können Sie ein Beispiel geben, wie man X macht") –

Verwandte Themen