Hi,
dann werd ich einfach mal einen Punkt posten an dem ich nicht weiterkomme. 
Es ist mein erster Versuch eine Joomla MVC Komponente zu erstellen also seid nicht so hart mit mir ;D
@KaSsi
Ich habe mich für eine eigene Komponente entschieden, da es an sich keine Community ist. Jeder soll nur sein eigenes Profil im Frontend sehen können. Moderatoren sehen im Backend dafür alles. Der Hauptgrund ist aber, dass bei den meisten Komponenten die Daten nach dem Key Value Prinzip in der Datenbank gespeichert werden. Das erschwert komplexe SQL Abfragen.
Und ein weiterer Grund ist, dass ich was dazu lernen möchte.^^
Nun zu dem Problem: 
Ich habe im Backend eine Profil Verwaltung zum Editieren der Datensätze. Dabei gibt es eine 1 zu N Detailtabelle "Kinder":

Ich habe in der Datenbank entsprechend einen Table angelegt in dem die "Kinder" gespeichert werden.
Im Model versuche ich über eine quick and dirty Lösung die Vohandenen Kinder Datensätze zu löschen und dann die Neuen hinzuzufügen "function store_kinder($post)".
Beim Speichern passiert nun folgendes:
Das Delete wird ausgeführt. Das Insert Statement wird aber nur für neu hinzugefügte Kinder ausgeführt, und nicht für geänderte oder bereits vorhandene.
Geänderte und vorhandene Kinder-Datensätze sind also gelöscht!
Meiner Vermutung nach sind also im Post nur die neuen Kinder verfügbar. Ist das so? Wenn ja wieso? Und wie kann ich das lösen?
PHP-Code:
function store()
{
$row =& $this->getTable();
$data = JRequest::get( 'post' );
$this->store_kinder($data);
/* convert checkbox arrays from post into concated string
to store arrays in database table
*/
foreach($data as $key => $value)
{
if (is_array($value))
{
$data[$key] = implode(';', $value);
}
}
// Bind the form fields to the table
if (!$row->bind($data)) {
$this->setError($this->_db->getErrorMsg());
return false;
}
// Make sure the record is valid
if (!$row->check()) {
$this->setError($this->_db->getErrorMsg());
return false;
}
// Store the table to the database
if (!$row->store()) {
$this->setError( $row->getErrorMsg() );
return false;
}
return true;
}
// 02 MAY 2011: added kinder
function store_kinder($post)
{
$query = "DELETE FROM `#__joeprofile_child` WHERE `user_id` = ".$post['user_id'];
$this->_db->setQuery($query);
$result = $this->_db->query();
// fetchen der post Variablen k1name, k2name, k3name, k4name, k1geburtsdatum, k2geburtsdatum ...
for ($i=1; $i < 5; $i++)
{
$kname = $post["k" . $i . "name"];
$kgeburtsdatum = $post["k" . $i . "geburtsdatum"];
$kgeschlecht = $post["k" . $i . "geschlecht"];
if($kname!="" || $kgeburtsdatum!="" || $kgeschlecht!="")
{
$query = "INSERT INTO `#__joeprofile_child` (`name`,`geburtsdatum`,`geschlecht`,`user_id`)
VALUES('" .mysql_real_escape_string($kname). "',STR_TO_DATE('" .mysql_real_escape_string($kgeburtsdatum)."','%d.%m.%Y')
,'" .mysql_real_escape_string($kgeschlecht)."',".$post['user_id'].")";
$this->_db->setQuery($query);
$result = $this->_db->query();
}
}
return true;
}
MfG
joe
Lesezeichen