configDB.pm - ESCAPE für configdb search [PATCH]

Begonnen von rapster, 13 Oktober 2015, 14:16:43

Vorheriges Thema - Nächstes Thema

rapster

Hallo Betateilchen,

kannst du bitte diesen Patch in configDB einbauen, damit man bei Bedarf auch nach % und _ suchen kann?
Index: configDB.pm
===================================================================
--- configDB.pm (Revision 9448)
+++ configDB.pm (Arbeitskopie)
@@ -895,8 +895,8 @@
my ($sql, $sth, @line, $row, @result, $ret, $text);
$sql  = "SELECT command, device, p1, p2 FROM fhemconfig as c join fhemversions as v ON v.versionuuid=c.versionuuid ";
$sql .= "WHERE v.version = '$searchversion' AND command not like '#create%' ";
- $sql .= "AND device like '$search%' " if($dsearch);
- $sql .= "AND (device like '$search%' OR P1 like '$search%' OR P2 like '$search%') " if(!$dsearch);
+ $sql .= "AND device like '$search%' ESCAPE '\\' " if($dsearch);
+ $sql .= "AND (device like '$search%' ESCAPE '\\' OR P1 like '$search%' ESCAPE '\\' OR P2 like '$search%' ESCAPE '\\') " if(!$dsearch);
$sql .= "ORDER BY lower(device),command DESC";
$sth = $fhem_dbh->prepare( $sql);
$sth->execute();


Hintergrund ist der dass bei mir in jedem device _ vorkommen, ich allerdings ohne diesen Patch viele Suchanfragen nicht genau genug Filtern kann.
Mit dem Patch ist es dann z.B. möglich mit "configdb search %\_foo%" die suche etwas genauer zu spezifizieren.

Ich denke nicht dass jemand Bedarf hat nach \ selber zu suchen, falls dieser Fall doch  vorkommen sollte muss er das \ natürlich anschließend selber mit \\ maskieren.

Gruß
  Claudiu

betateilchen

Schau ich mir bei Gelegenheit an.

Aber im Moment hab ich eine andere Großbaustelle  8)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rapster

Passt, nur keine Eile, is ja bei mir lokal drin, reicht mir vollkommen aus wenn beim nächsten configDB Update die Änderung nur nicht wieder Rückgängig gemacht wird ;)

Gruß
  Claudiu