Datenbank ganze Zeile löschen

  • Moin Moin,

    ich weiß nicht ob ich mal wieder ein Denkfehler habe. Ich habe möchte per Php die ganze Zeile in der Datenbank löschen. Meiner Meinung nach wird mir aber bei https://docs.joomla.org/ nur erklärt wie ich eine Spalte löschen kann.


    Der Plan ist mal wieder mein Eventprotal. Nach Ende des Events wird das Event auf nicht mehr Publizieren gesetzt nun möchte ich das aber auch aus der Datenbank entfernen. Macht man das eigentlich oder verzettel ich mich da an klein kram. Und wenn ja wie bekomme ich die Funktion hin das Sie mir die Zeilen löschen.


  • Wenn du nicht ganz genau weißt, was du da machst, würde ich davon abraten.


    Es ist doch egal, ob Daten in der Datenbank stehen. Sinnvoller ist hier eine Lösung über die Erweiterung, dann z.B. ein ganzes Jahr im Nachhinein zu löschen.

  • Was willst du genau machen? Wenn ich deinen Code anschaue, sehe ich da sehr viel für sehr wenig Effekt. Du selektierst irgendwie dreimal die selben IDs aus derselben Tabelle? Und loopst dann mit einem foreach darübery um alle einzeln zu löschen statt alle auf einmal. Warum das alles?

    Und das foreach kann so nicht funktionieren. Damit überschreibst du gleich im ersten Schritt die Variable eventid und wirst für alle anderen Datensätze nicht mehr in die Iteration laufen.

  • Genau ist der Plan das ich jeden Tag eine 12mb große XML Datei mit etwa 1990 Veranstaltungen in die Datenbank eintragen und im Frontend dann fein säuberlich aus gegeben. Vorher wird geprüft ob das Event schon vorhanden ist. Das Problem was sich jetzt bei mir aber entwickelt ist was mach ich mit dem Events die Abgelaufen sind. Das ich die auf nicht sichtbar stelle ok kein Problem. Aber bei der Großen Datenmenge die jeden Tag kommt habe ich etwas angst das ich mir den Server und die Datenbank zu knalle. Also Prüfe ich am ende noch ob Events abgelaufen sind. Da die Kategorie und Schlagwörter für das Event nicht in der gleichen Tabelle eingetragen werden wie das Event selbst muss ich einige mehr Paramenter abfrage um genau das richtige raus zu finden. Am ende vom ganzen abgefrage brauch ich die Bildnummer die sich aus der ID des Events zusammen setzt. Die ID vom Event bekomme ich aus der XML mit gesendet. Also wieder eine Vollkommen andere ID. Also lösche ich dann am ende des Tages auch das Bild raus um wieder Speicherplatz zu sparen. Ich hoffe ihr versteht mein anliegen und warum ich das eigentlich gerne löschen würde. Bei der großen Daten menge was da kommt und der Server doch ziemlich voll und wir haben nicht nur eine Internetseite auf dem Server zu laufen da sind noch einige mehr 8o

  • Zitat

    Ich habe möchte per Php die ganze Zeile in der Datenbank löschen

    Man kann es nicht oft genug wiederholen:


    Auf jeden Fall vorher ein Backup der DB (ggf. auch der Seite) machen.

    Und das Backup auch überprüfen, ob es vollständig uns ausführbar ist.


    (Hatte da gerade ein Problem mit dem Backup). ;)

  • Backups werden jeden tag automatisch über akeeba gemacht da wird alles gesichert. Daran hab ich schon gedacht und das ist auch das erste was ich Installiere wenn ich eine neue Seite aufsetze. Wie schon gesagt das ist nicht meine erste Joomla Seite. Das ist nur meine erste Seite die in diesem Umfang ausartet mit ständigen neuen Content den ich nicht beeinflussen kann.

  • Okay... Für mich bleiben weiterhin zwei Fragen:


    1. Hast du probiert, ob es was ändert, wenn du die Zeile foreach($eventid as $eventid){ korrigierst, sodass sich die beiden Variablennamen unterscheiden (und entsprechend natürlich auch in dem Teil davor oder danach anpassen)?
    2. Deine Datenbankabfragen sind, soweit ich sehe:
      1. Lade `id` aus `events`.
      2. Lade `id` und `parent` aus `events`.
      3. Lösche jedes einzelne Event aus `events`.
      4. Lösche für jedes einzelne Event aus `taxonomy`.

      1. und 2. sind doppelt gemoppelt. Frag einfach einmal alle `id` und `parent` ab, die du willst, und loope über die Ergebnisse. 3. und, wenn ich das richtig sehe, auch 4. kannst du auch vereinfachen, in dem du auf einmal alle löschst, die du löschen willst, statt jedes einzeln. Insbesondere, wenn wir hier über 2000 Einträge sprechen, sind das Dimensionen von 1+1+1 = 3 (meine Variante) vs. 1 + 2000 * (1 + 1 + 1) = 6001 (deine Variante) Abfragen.

  • Puh keine Ahnung ob ich gerade auf dem Schlauch stehe bei 40 Grad raum Temperatur. ;(

    Ich kann dir echt gerade nicht folgen wie du das meinst kannst du mir ein kurzen anstoß geben wie was wo hin muss? Ich bin gerade erst dabei die Joomla Datenbank befehle zu lernen irgendwie steige ich da aber immer noch nicht so ganz hinter.