Autor Thema: Suche PHP Script um SQL Datenbank Einträge zu löschen  (Gelesen 5367 mal)

Offline Ma_Bo

  • Hero Member
  • *****
  • Beiträge: 1176
Hallo Leute,
ich suche eine Möglichkeit mit Hilfe von FHEM eine PHP Seite aufzurufen um dann in einer MYSQL Datenbank Einträge zu löschen.

Die PHP Seite per FHEM aufrufen klappt, nur fehlen mir die richtigen Einträge.

Habe schon viel probiert, leider ohne Erfolg, hier einer meiner Versuche:

<?php
    
//Verbindung zur Datenbank herstellen

    
mysql_connect("localhost""Benutzer12345","Passwort12345") or die ("Verbindung nicht moeglich");
    
mysql_select_db("traccar") or die ("Datenbank existiert nicht");
 
//Eintraege die aelter als 62 Tage sind loeschen
$loesch "DELETE FROM positions WHERE DATEDIFF( NOW( ) , serverTime ) >=62“;
$ergebnis = mysql_query($loesch);

exit;



?>


Vielleicht hat ja einer eine Idee oder kennt sich aus und kann mir helfen.

Es sollen alle Einträge die älter als z.B. 62 Tage sind gelöscht werden, die Zeit zum vergleichen steht in "serverTime"

Grüße Marcel
« Letzte Änderung: 28 Juli 2017, 18:10:07 von Ma_Bo »
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

Offline DeeSPe

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4050
  • Wer anderen eine Bratwurst brät...
Antw:Suche PHP Script um SQL Datenbank Einträge zu löschen
« Antwort #1 am: 28 Juli 2017, 20:48:56 »
Geht das nicht per cron Job?
Wozu ist FHEM nötig?
Und wozu PHP?

Gruß
Dan
FHEM 5.9, Brix, VIVO mini, RPi3, Debian Jessie, ZME_UZB1
HM-CFG-LAN, HM-MOD-UART-WIFI, HUE, HarmonyHub, JeeLink, CO20
Hyperion auf RPi Zero W, Sonos, viel Z-Wave und HM
alles per HomeKit steuerbar
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Offline Ma_Bo

  • Hero Member
  • *****
  • Beiträge: 1176
Antw:Suche PHP Script um SQL Datenbank Einträge zu löschen
« Antwort #2 am: 28 Juli 2017, 21:22:01 »
Würde auch per cron gehen...
FHEM ist nicht zwingend nötig, aber wenn es geht, würde ich es gerne umsetzen...

Muss auch nicht unbedingt PHP sein, bin für Anregungen und Wege offen...

Grüße Marcel


Tapatalk mit Handy geschrieben, daher kurz gehalten.
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

Offline DeeSPe

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4050
  • Wer anderen eine Bratwurst brät...
Antw:Suche PHP Script um SQL Datenbank Einträge zu löschen
« Antwort #3 am: 28 Juli 2017, 21:29:51 »
FHEM ist nicht zwingend nötig, aber wenn es geht, würde ich es gerne umsetzen...

Dann würde sich eine Funktion in der 99_myUtils.pm anbieten die dann per at regelmäßig gestartet werden kann.

Gruß
Dan
FHEM 5.9, Brix, VIVO mini, RPi3, Debian Jessie, ZME_UZB1
HM-CFG-LAN, HM-MOD-UART-WIFI, HUE, HarmonyHub, JeeLink, CO20
Hyperion auf RPi Zero W, Sonos, viel Z-Wave und HM
alles per HomeKit steuerbar
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Offline Ma_Bo

  • Hero Member
  • *****
  • Beiträge: 1176
Antw:Suche PHP Script um SQL Datenbank Einträge zu löschen
« Antwort #4 am: 28 Juli 2017, 21:31:12 »
Dann würde sich eine Funktion in der 99_myUtils.pm anbieten die dann per at regelmäßig gestartet werden kann.

Gruß
Dan

Hättest du da ggfs. ein Beispiel?


Tapatalk mit Handy geschrieben, daher kurz gehalten.
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

Offline DeeSPe

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4050
  • Wer anderen eine Bratwurst brät...
Antw:Suche PHP Script um SQL Datenbank Einträge zu löschen
« Antwort #5 am: 28 Juli 2017, 21:35:42 »
Hättest du da ggfs. ein Beispiel?

Nö, so aus dem Ärmel nicht.
Aber man könnte sich z.B. das DbLog Modul ansehen wie dort ein Datenbank Connect gemacht wird.
Da erfährt man sicher auch wie man ein SQL Statement ausführt.

So schwierig kann das nicht sein würde ich sagen.
Aber wie gesagt, wenn es nicht dringend nötig ist in FHEM umzusetzen, ist ein Shell Skript und ein cron Job sicher einfacher und schneller.

Gruß
Dan
FHEM 5.9, Brix, VIVO mini, RPi3, Debian Jessie, ZME_UZB1
HM-CFG-LAN, HM-MOD-UART-WIFI, HUE, HarmonyHub, JeeLink, CO20
Hyperion auf RPi Zero W, Sonos, viel Z-Wave und HM
alles per HomeKit steuerbar
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Offline DeeSPe

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4050
  • Wer anderen eine Bratwurst brät...
Antw:Suche PHP Script um SQL Datenbank Einträge zu löschen
« Antwort #6 am: 28 Juli 2017, 22:24:03 »
Wenn Deine Webseite funktioniert, dann spricht eigentlich nichts dagegen diese mit GetFileFromURL() "abzuholen".

Gruß
Dan

EDIT: Sofern Du Herr über das PHP Skript bist kannst Du damit auch eigene Rückgabewerte definieren und diese z.B. in ein dummy Device schreiben.
my $ret = GetFileFromURL("http://meine.schoene.website");
fhem "setreading dummy state $ret";
« Letzte Änderung: 28 Juli 2017, 22:29:22 von DeeSPe »
FHEM 5.9, Brix, VIVO mini, RPi3, Debian Jessie, ZME_UZB1
HM-CFG-LAN, HM-MOD-UART-WIFI, HUE, HarmonyHub, JeeLink, CO20
Hyperion auf RPi Zero W, Sonos, viel Z-Wave und HM
alles per HomeKit steuerbar
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Offline Ma_Bo

  • Hero Member
  • *****
  • Beiträge: 1176
Antw:Suche PHP Script um SQL Datenbank Einträge zu löschen
« Antwort #7 am: 29 Juli 2017, 10:48:57 »
FHEM läuft auf dem selben System.
Ich werd mich kommende Woche mal genauer darum kümmern.

In Perl wäre auch super, aber erstmal Danke für eure Hinweise.

Gruß Marcel


Tapatalk mit Handy geschrieben, daher kurz gehalten.
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

Offline Ma_Bo

  • Hero Member
  • *****
  • Beiträge: 1176
Antw:Suche PHP Script um SQL Datenbank Einträge zu löschen
« Antwort #8 am: 01 August 2017, 00:01:59 »
Hi,

also erstmal sieht das gar nicht so falsch aus. Allerdings würde ich

  • mysqli_connect statt mysql_connect verwenden - sonst klappt dein Script irgendwann nicht mehr
  • Einmal ein SELECT ausführen, um zu schauen ob überhaupt alles richtig selektiert wird "SELECT * FROM positions WHERE DATEDIFF(NOW(), serverTime) >= 62" - kommen da Ergebnisse?
  • Liegt das Script auf einem ganz anderen System als FHEM? Ansonsten würde ich mir den Weg über einen Webserver sparen und direkt per cli das php-Script ausführen.
  • Oder sogar komplett in Perl die DB-Verbindung aufbauen und die Einträge löschen (wie schon gesagt wurde).

<?php

$mysqli 
= new mysqli('localhost''Benutzer12345''Passwort12345''traccar');

if (
$mysqli->connect_error) {
    die(
'Connect Error (' $mysqli->connect_errno ') ' $mysqli->connect_error);
}

if (
$mysqli->query("DELETE FROM positions WHERE DATEDIFF(NOW(), serverTime) >= 62") === true) {
    echo 
'ok';
} else {
    echo 
'failed';
}

$mysqli->close();


Hi,
also bei dem Befehl ( "SELECT * FROM positions WHERE DATEDIFF(NOW(), serverTime) >= 62" ) kommen Ergebnisse.

Leider bekomme ich beim aufruf der PHP, die failed Meldung.

NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

Offline Christoph Morrison

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 891
  • Maintainer von 12 Modulen + holiday-Files
    • Private Website
Antw:Suche PHP Script um SQL Datenbank Einträge zu löschen
« Antwort #9 am: 01 August 2017, 10:59:16 »
Leider bekomme ich beim aufruf der PHP, die failed Meldung.

Was sagt mysqli::$error_list wenn failed ausgegeben wird?
Maintainer von:
holidays · 59_Twilight · Webcount · Lindy_HDMI_Swich · ALL3076 · ALL4027 · WEBIO · ALL4000T · WEBIO_12DIGITAL · Itach_Relay · VantagePro2 · WEBTHERM · Buienradar

Offline Wernieman

  • Hero Member
  • *****
  • Beiträge: 5591
Antw:Suche PHP Script um SQL Datenbank Einträge zu löschen
« Antwort #10 am: 01 August 2017, 11:23:01 »
Anstatt perl/php geht es sogar mit der Kommandozeile und "mysql" .... viele Wege führen nach Rom.

Ich würde Dir empfehlen, es "einfach zu halten", also direkt ohne Webzugriff (eben bei php per php-cli). Dann kannst Du auch besser debuggen.

Dafür bräuchte man, wie erwähnt, die mysqli::$error_list
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Offline Ma_Bo

  • Hero Member
  • *****
  • Beiträge: 1176
Antw:Suche PHP Script um SQL Datenbank Einträge zu löschen
« Antwort #11 am: 01 August 2017, 11:26:39 »
Klingt für euch alle plausibel, aber wie baue ich das bei mir ein?
Wie genau bekomme ich die mysqli::$error_list?

Dankende Grüße
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

Offline Wernieman

  • Hero Member
  • *****
  • Beiträge: 5591
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Offline Ma_Bo

  • Hero Member
  • *****
  • Beiträge: 1176
Antw:Suche PHP Script um SQL Datenbank Einträge zu löschen
« Antwort #13 am: 01 August 2017, 11:55:44 »
Sorry, versteh ich auf die schnelle nicht.

Werde mich die Tage dann wohl erst einmal damit beschäftigen müssen.

Grüße und Danke für eure Hinweise
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

Offline Wernieman

  • Hero Member
  • *****
  • Beiträge: 5591
Antw:Suche PHP Script um SQL Datenbank Einträge zu löschen
« Antwort #14 am: 01 August 2017, 12:26:20 »
Aus dem Beitrag:
print_r($mysqli->error_list);
Allerdings copy&paste ungetestet
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html