• Willkommen im Zend Framework Forum

    ZF1 Zend Framework 1 + ZF2 Zend Framework 2

    Das Zend Framework Forum ist seit 2006 die erste Anlaufstelle für Zend Framework Entwickler in Deutschland. Mit über 70.000 Beiträgen und einer steigenden Nutzerzahl bietet das Forum hilfreiche Themen und ZF-Tutorials für professionelle Entwickler, fortgeschrittene Programmierer sowie Zend Framework Einsteiger.
    Wenn dies Dein erster Besuch in der Zend Framework Community ist, lies bitte zuerst die Hilfe - FAQ durch. Du musst Dich registrieren, bevor Du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um die Registrierung zu starten. Du kannst auch jetzt schon Beiträge lesen. Hier im Forum findest Du die Zend Framework Hilfe, die Du suchst!

    Grüße an alle Zend Framework Entwickler. Das Team vom Zend Framework Forum!

    Drupal Agentur

Problem beim Löschen von Datensätze

Wer?

New member
Hallo,
Bekomme folgende Fehlermeldung beim Löschen einer row mit $row->delete():

Message: File "data.php" does not exist or class "data" was not found in the file

Zum Hintegrund:
Ich möchte alle Daten einer Datenbank mit einer etwas komplexeren Struktur, löschen, befor ich sie wieder befülle, indem ich mit $table->fetchAll() und dann über eine Schleife, die die einzelnen rows lösche mit $row->delete(). Diese Zeile erzeugt die obere Fehlermeldung. Zur Fehlermeldung kann ich so viel sagen: Es gibt eine Data-Tablelle, die auch Fremdschlüssel von der zu Löschenden Tabelle enthält. Allerdings ist die Data-Tablelle komplett(!) leer. Die Data-tabelle liegt auch als "Data.php" in meinem Ordner, aber weder das Umbenennen der Datei noch das der Klasse fixen mein Problem. Ich weiß auch nicht was zf überhaupt mit der Data-tabelle macht, schließlich will ich die Daten einer ganz anderen Tabelle löschen, die keine Fremdschlüssel dieser enthält.
Wenn ich die gleichen Vorgänge manuell über phpmyadmin mache klappt alles wunderbar.

Bitte erleuchtet mich, M. Mayer
 

Wer?

New member
Danke für die Antworten, hatte früher leider keine Zeit.
Das mit dem Kaskadieren ist zwar schön und gut aber die Datensätze der Tabelle die ich löschen will besitzten gar keine Fremdschlüssel und stehen (im aktuellen Zustand) auch nicht in Beziehung mit irgendiner anderen Tabelle (da die data-Tablelle wie gesagt leer ist)

@Kaiuwe: Ich würde das ganze ja dem DBMS überlassen, wenn das Problem damit gelöst wäre, die Frage ist nur: WIE?

Edit: Benutze pdo_mysql das sollte also eigentlich DRI unterstützen
 

Kaiuwe

Super-Moderator
Das mit dem Kaskadieren ist zwar schön und gut aber die Datensätze der Tabelle die ich löschen will besitzten gar keine Fremdschlüssel und stehen (im aktuellen Zustand) auch nicht in Beziehung mit irgendiner anderen Tabelle (da die data-Tablelle wie gesagt leer ist)
Wenn du festgelegt hast, dass ein Feld in der Tabelle als Fremdschlüssel fungiert, dann hast du bereits eine Beziehung definiert. Egal ob Daten in der Tabelle vorhanden sind oder nicht.
Benutze pdo_mysql das sollte also eigentlich DRI unterstützen
Wenn es eine (intern) Funktionalität des DBMS ist, dann hat PHP oder irgendetwas anderes von Außen damit rein gar nichts zu tun. Also auch nicht „PDO“!


Kannst du mal bitte die beiden betroffenen Tabelle hier kurz aufzeigen und dann noch sagen, aus welcher Tabelle du etwas löschen möchtest. Bisher ist das für mich nicht ganz klar.
 

Wer?

New member
table1.jpg
die obere ist die Data-Tabelle, die enthält fast nur fremdschlüssel (außer id, user und datetime) und ist durch 'jack' mit der unteren verbunden. Die gleiche Fehlermeldung tritt übrigens auch bei allen anderen Tabllen auf, die in Beziehung mit der Data-Tabelle stehen. Die sind alle ähnlich aufgebaut wie die untere Tabelle.
 

Wer?

New member
Sorry verstehe ich jetzt nicht so ganz, wo sieht man das bzw. wo muss man diese Fremdschlüsseldefinition suchen?

Versuch das übrigens mal mit Zend_Select hoffe damit funktioniert es
 

BuQi

New member
Mal ganz außen vor, einfach doof gefragt, aber wenn du ne komplette Tabelle löschen willst, um sie dann wieder zu befüllen,
warum benutzt'n du nicht einfach "TRUNCATE TABLE data" oder wie auch immer deine Tabelle heißt ?! Wäre doch wesentlich schneller ?!

Mfg...
 

Wer?

New member
danke BuQi, mit TRUNCATE TABLE hat es funktioniert:

PHP:
mysql_select_db('query_dev', $conn);
    mysql_query("TRUNCATE TABLE `connection`");
    mysql_close($conn);
 
Oben