- 20 April 2006
- 22.682
- 1.316
Werde dir klar, wie die DB sein soll - und genau so gestaltest du dann die KlasseAlles in eine Tabelle schreiben will ich nicht ,da es ja dann Unmengen an NULL-Werten gibt bzw. Spalten, die nie benötigt werden
Follow along with the video below to see how to install our site as a web app on your home screen.
Anmerkung: This feature may not be available in some browsers.
Werde dir klar, wie die DB sein soll - und genau so gestaltest du dann die KlasseAlles in eine Tabelle schreiben will ich nicht ,da es ja dann Unmengen an NULL-Werten gibt bzw. Spalten, die nie benötigt werden
usw. Somit kann ich dann aus dem POST-Array den Key als Name eintragen. Ich habe aber auch im Template alle Namen per Hand eingetragen, da ich somit das Template frei gestalten kann. Es müsen also immer die Werte im Template mit den Werten aus der DB übereinstimmen bzw. wenn man einen Namen ändert muss er in der DB und Template geändert werden. Gibts da nicht noch eine bessere Variante das zu lösen?PHP:public class Article { private $id; private $propertiesLoaded = array(); public __construct($id) { $this->id = $id; loadMe(); } private function loadMe() { $row = DBManager::get()->queryfResult("SELECT name, price, ... FROM article WHERE id = %u;", $this->id); $this->setName($row['name']); $this->setPrice($row['price']); } public function getProperty($propertyName) { if(!isset($this->propertiesLoaded[$propertyName])) { $row = DBManager::get()->queryfResult("SELECT value FROM articleProperty WHERE article_id = %u AND name = '%s';", $this->id, $propertyName); if($row) $this->propertiesLoaded[$propertyName] = $row['value']; else $this->propertiesLoaded[$propertyName] = null; // not set } return $this->propertiesLoaded[$propertyName]; } } [/QUOTE] Natürlich möchte ich über ein Eingabeformular auch Daten speichern. Ich habe nun Inputfelder mit [PHP]name="article['height']"
Natürlich.Gibts da nicht noch eine bessere Variante das zu lösen?
Das hier eben nicht machenIch habe aber auch im Template alle Namen per Hand eingetragen[...]
Du kannst dann nur Eigenschaften ändern, die es schon gibt. - Also gar keine am AnfangMan könnte doch die Tabelle mit den Eigenschaften auslesen und das Formular erzeugen oder hast du noch ne andere Idee?
Du kannst dann nur Eigenschaften ändern, die es schon gibt. - Also gar keine am Anfang![]()
Jo, das is ok.Somit habe ich in einer Tabelle alle Eigenschaften die es geben kann[...]
Richtig. Hier kannst du, da du in diesem speziellen Fall nur eine einzelne Eigenschaft selektierst, um sie vergleichen zu können, MySQL explizit zum Cast anweisen:Ich würde gern nach bestimmten Eigenschaften sortieren. Wenn alles als Varchar abgelegt ist, wird das ja bei Zahlenangaben nicht mehr funktionieren.
[FONT=Courier New][B][COLOR=#9932cc]SELECT[/COLOR][/B] varcharColumn
[B][COLOR=#9932cc]FROM[/COLOR][/B] articleProperties
[B][COLOR=#9932cc]WHERE[/COLOR][/B] propertyId = 42
[B][COLOR=#9932cc]ORDER[/COLOR][/B] [B][COLOR=#9932cc]BY[/COLOR][/B] [B][COLOR=#9932cc]CAST[/COLOR][/B][COLOR=#9932cc]([/COLOR]varcharColumn [B][COLOR=#9932cc]AS[/COLOR][/B] [B][COLOR=#9932cc]SIGNED[/COLOR][/B] [B][COLOR=#9932cc]INTEGER[/COLOR][/B][COLOR=#9932cc])[/COLOR] [B][COLOR=#9932cc]ASC[/COLOR][/B];[/FONT]
Dass du ihn weistWelchen Vorteil hat es denn, wenn ich den Typ mit abspeichere?
