ice-breaker
return void
- 27 April 2006
- 6.257
- 585
äh ja, es ist eben so, dass per Default einfach erstmal alles verboten ist, nur wenn einem ein Recht eingeräumt wird, kann man dieser Tätigkeit nachgehen.
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.
Also ich bin mir nicht sicher ob ich das richtig verstanden habe, es geht Dir darum einfach den nächsten Datansatz aus einer Tabelle zu bekommen und das möglichst DBMS unabhängig, also ohne auto_increment?bevor ich jetzt so richtig loslege mit dem projekt habe noch zwei anliegen..
meine anwendung soll auf mehreren dbms laufen.. deswegen verzichte ich auf auto_increment (wie schick das ist merkt man erst, wenn man es nicht mehr nutzt) ich habe bis jetzt noch keine anständige möglichkeit gefunden das mit Zend_Db zu simulieren.. unter MDB2 gibt es die möglichkeit mit nextId('tabelle') die nächste id für die gewünschte tabelle auszulesen.. im hintergrund wird die id aus ner tabelle gelesen, die nur die aktuell höchste id gespeichert hat.. bei Zend_Db habe ich jetzt nach längerem suchen nix in der richtung gefunden.. die möglichkeit mit $_sequence ist ja auch nur für wenige dbms anwendbar.. habe ich an der falschen stelle gesucht? ich bin ernsthaft am überlegen, ob ich MDB2 verwenden soll.. (nicht nur aus dem grund.. aber wenn man komplett auf Zend_Db setzt, dann sind die queries recht unverständlich für leute, die sich damit nicht auskennen..)
Was möchtest Du denn dann? Ist das korrekt das dann development und produktiv umgebungen in verschiedenen Unterordnern liegen? Wenn ja liegt die "index.php" dann einfach einen Ebene hoher im Public? Soweit ich weiß passt Du doch dann in dem Fall die Konstante APPLICATION_PATH einfach an und änderst den include_path. Ein direkteres Beispiel wäre dann hilfreich.und zum anderen habe ich ein problem mit den pfaden.. im produktivsystem wird das ganze in einem unterordner liegen.. um die pfade vom root verzeichnis aus angeben zu können muss man also immer das base directory vom public ordner voranstellen.. hat das framework dafür schon eine lösung? oder muss ich selber eine konstante deklarieren? (habe nur APPLICATION_PATH gefunden und das is nicht das, was ich möchte..)
Also ich perönlich gebe immer absolute Pfade an mit / beginnend, was mir zwar derzeit reicht, allerdings in bestimmten Situationen zu Problemen führen kann.(siehe letztes Zitat von Dir)und wie kann man das in css oder javascript dateien lösen? also mit pfaden zu bildern und so? ...
auch wenn ich kein Fan davon bin: Zend_Db_Table hat eine AutoIncrenment-Abstraktion über alle unterstützenden RDBMS, denn solch eine Funktionalität hat jedes RDBMS, sie heissen meist nur anders und funktionieren ein klein wenig anders.Hat Zend_Db bzw. Zend_Db_Select nicht für solche Sachen eine Methode die next() oder so änölich heist? Ice dürfte da mehr wissen.
Base-Path nutze ich immer, funktioniert perfektAlso ich perönlich gebe immer absolute Pfade an mit / beginnend, was mir zwar derzeit reicht, allerdings in bestimmten Situationen zu Problemen führen kann.(siehe letztes Zitat von Dir)
Aber dafür gibt es ab ZF 1.9 (glaube ich) den Base Path View Helper den man zur Not vorranstellen kann. Und man könnte so einen eigenen View Helper schreiben der den automatisch immer mit hinzufügt.
Also ich bin mir nicht sicher ob ich das richtig verstanden habe, es geht Dir darum einfach den nächsten Datansatz aus einer Tabelle zu bekommen und das möglichst DBMS unabhängig, also ohne auto_increment?
Hat Zend_Db bzw. Zend_Db_Select nicht für solche Sachen eine Methode die next() oder so änölich heist? Ice dürfte da mehr wissen.
Was möchtest Du denn dann? Ist das korrekt das dann development und produktiv umgebungen in verschiedenen Unterordnern liegen? Wenn ja liegt die "index.php" dann einfach einen Ebene hoher im Public? Soweit ich weiß passt Du doch dann in dem Fall die Konstante APPLICATION_PATH einfach an und änderst den include_path. Ein direkteres Beispiel wäre dann hilfreich.
auch wenn ich kein Fan davon bin: Zend_Db_Table hat eine AutoIncrenment-Abstraktion über alle unterstützenden RDBMS, denn solch eine Funktionalität hat jedes RDBMS, sie heissen meist nur anders und funktionieren ein klein wenig anders.
Aber auch die normalen Db-Funktionen ($db->lastInsertId()) unterstützen sequences, man muss als Parameter nur den Sequence-Namen angeben, Datenbanken die AutoIncrenment von Haus aus können, ignorieren den Sequence-Namen dann
du brauchst es nicht immer davor stellengenau so ist es. ich gebe meine pfade auch immer absolut mit / beginnend an.. geht ja auch nicht anders wegen den URLs und mod_rewrite.. ich brauche die base url jetzt in einer variable, damit ich sie in den views vor jeden pfad stellen kann.. ich habe mittlerweile Zend_Controller_Front::getInstance()->getBaseUrl(); gefunden.. werde damit wohl ne konstante definieren, die ich dann in den views verwenden kann..
Sequences funzen in jedem RDBMS ein wenig anders, deswegen ist so eine Abstraktion wie Zend_Db ja sinnvoll.wie funktioniert das dann konkret? bzw hast du mir nen link? ich werde aus der docu leider nid so ganz schlau..
15.1.4.2. Retrieving a Generated Valueentweder ich stehe auf dem schlauch oder lastInsertId() bringt mir nix.. kommt mir auch so vor als verstünde ich nich so ganz, was sequence denn genau bedeutet.. ich mach mich da erstmal noch schlau![]()
wie funktioniert das dann konkret? bzw hast du mir nen link? ich werde aus der docu leider nid so ganz schlau..
$db->insert(array());
$db->lastInsertId('table', 'column');
CREATE SEQUENCE userid_seq
START WITH 1
INCREMENT BY 1;
userid_seq.nextval
INSERT INTO user (id, name, passwd) VALUES (userid_seq.nextval, 'whizzler', GNUHASH_SHA256('whizzler's pw'))
$front->addModuleDirectory('/path/to/application/modules');
resources.frontController.moduleDirectory = APP_DIR "\module"
resources.frontController.defaultModule = "default"
edit: haidernai! ist der text lang geworden. danke schonmal für jeden, der die geduld hat das ganze durchzulesen![]()

tut mir leid, ich hatte sie nicht, weiß aber worauf du hinaus willst![]()
tut mir leid, ich kann mir das gerade echt nicht vorstellen, am besten untermauert man sowas immer mit sample-code![]()
Class Default_Model_DBTable_User extends Zend_Db_Table_Abstract
{
protected $_name = 'user';
protected $_primary = 'user_id';
}
class Default_Model_UserMapper_Interface
{
public function find($id);
public function fetchAll();
public function setUserStatus($id, $status);
// usw.. sind natürlich mehr methoden nötig
}
class Default_Model_UserMapper_Db implements Default_Model_UserMapper_Interface
{
protected $_dao = null;
protected $_daoClass = 'Default_Model_DBTable_User';
public function __construct()
{
$this->_dao = new $_daoClass;
}
public function getDao()
{
if($this->_dao === null)
{
$this->_dao = new $_daoClass;
}
return $this->_dao;
}
public function setUserStatus()
{
//user status setzen
}
//die weiteren methoden, die das interface vorschreibt
}
Class Default_Model_User
{
$_mapper = null;
public function __construct(Default_Model_UserMapper_Interface $mapper)
{
$this->_mapper = $mapper;
}
//hier kommen die benötigten methoden inkl geschäftslogik hin
}
wenn ich mir das so, wie ich es jetzt geschrieben habe anschaue, dann ist es dem ansatz, der in deinem dritten link stand doch schon sehr ähnlich![]()
$user= new Default_Model_User(new Default_Model_UserMapper_Db());
$user->setUserStatus("regestriert"); // schau dir mal mein Beispiel an, da ist das über Konstanten gelöst ;) eine deutlich sichere Methode
$user->save();
speichern, was genau nun passiert und wie weiß ich nicht, wenn ich aber einem neuen User-Objekt erst einen Mapper übergeben muss, ist alles hinfällig.
oh, WhiZZler, wir wollen nun alles in Amazons SimpleDB speichern, korrigier doch mal alle User-Konstruktoren![]()