die ipcheck kannst Du getrost ignorieren. Die ist für mich selbst gewesen, weil ich das erste script in einer etwas anderen Form (2 Felder statt eins und andere Ersetzungen) produktiv einsetze und das script soll sich selbst beenden wenn es nicht von meiner eigenen IP aufgerufen wird.
Wichtig für Dich ist der Teil:
// hier alle tags eintragen die NICHT entfernt werden sollen
$tags_allowed="<p><a><em><i><b><div><strong><br><br />";
// Datenbankfeld - hier das Datenbankfeld eintragen
$db_field="products_description";
// Datenbankindexfeld - hier das Datenbankfeld eintragen, das für diese Tabelle die ID definiert
$db_index="products_id";
// Tabelle - hier die Tabelle eintragen
$db_table="products_description";
Jetzt vorausgewählt ist die Tabelle products_description. In dieser Tabelle ist die Spalte products_id die eindeutige Spalte über die man die Zeile eindeutig identifizieren kann.
Das Feld das vorausgewählt ist, heißt auch products_description.
wenn Du z.B. products_short_description in der Tabelle products_description wählen wolltest, dann würdest Du das einfach so ändern:
// hier alle tags eintragen die NICHT entfernt werden sollen
$tags_allowed="<p><a><em><i><b><div><strong><br><br />";
// Datenbankfeld - hier das Datenbankfeld eintragen
$db_field="products_short_description";
// Datenbankindexfeld - hier das Datenbankfeld eintragen, das für diese Tabelle die ID definiert
$db_index="products_id";
// Tabelle - hier die Tabelle eintragen
$db_table="products_description";
Der Rest ist die eigentliche Logik (ich kommentiere mal extremst ausführlich jetzt)
// hole Tabelle aus Datenbank// SQL Code: Lese die beiden Spalten mit den Namen definiert in den Variablen $db_index und $db_field aus der Tabelle mit dem Namen definiert in der Variable $db_field $sql="SELECT " . $db_index . "," . $db_field . " FROM " . $db_table;// lasse die Datenbank den Befehl ausführen $result = xtc_db_query
($sql);// Erzeuge ein Array für die Ausgabe der Datenbank $table_fields = Array();// Schleife über alle Ausgabeergebnisse der obigen Datenbankabfrage while($row = mysql_fetch_assoc($result)){// Füge das Array dass eine Zeile der Datenbankabfrage enthält an das Array $table_fields an. $table_fields[] = $row; } // Schleife über das Array $table_fields. Bei jedem Durchlauf seht in der Variable $table_field eine Zeile der SQL Abfrage zur verfügung foreach ($table_fields as $table_field) { // definiere was in der Datenbank geändert werden soll // die Variable muss einen Teil einer UPDATE SQL Anweisung enthalten $updatewhere = $db_index . " = '". (int
)$table_field[$db_index] ."'"; // entferne alle Tags die nicht in $tags_allowed enthalten sind // hier wird die eigentliche Arbeit erledigt. Das Entfernen der unerwünschten Tags // wobei die Variable $tags_allowed alle tags enthält die vom Befehl strip_tags ignoriert werden sollen $data[$db_field] = strip_tags($table_field[$db_field],$tags_allowed); // frage ab, ob das Ergebnis nach entfernen der tags ein anderes ist, als zuvor if ( $data[$db_field] !== $table_field[$db_field]) { // wenn das der Fall ist, schreibe in die Datenbank xtc_db_perform
($db_field,$data , 'update', $updatewhere); // und gebe auf dem Bildschirm aus für welche ID eine Änderung vorgenommen wurde echo 'Text korregiert für Artikel ID: ' . $table_field[$db_index] . "<br />\n"; } } Was ich wohl vergessen hatte.
require_once('includes/application_top.php');
Wird zwingend benötigt, da ich Funktionen wie xtc_db_perform einsetze die von der Shopsoftware stammen und durch die application_top.php bin ich auch sofort an der Datenbank authentifiziert.
Also final nochmal zusammengefasst, für den nächsten der das oder ein vergleichbares Problem mit seinen Daten hat und es auf diesem Weg ausbügeln will:
<?php // Textkorrekturen in modified Datenbanken // DATENSICHERUNG VOR AUSFÜHRUNG!!! // ACHTUNG, Da das Script so nur im shoproot funktioniert kann es JEDER WELTWEIT aufrufen, also unbedingt wieder löschen!!! // Der Befehl strip_tags kann zu unerwünschten Ergebnissen führen, wenn fehler in den Tags der Quelldaten sind!!! // Vor ausführen einstellen welche Tags nicht entfernt werden sollen und tabelle, ID Feld in der Tabelle, und gewünschtes Feld eintragen // Vorausgewählt ist hier Feld products_description in Tabelle products_description // Wer wissen will welches feld er benötigt, bemühe bitte die Wiki: https://www.modified-shop.org/wiki/Kategorie:Datenbankreferenz // hier alle tags eintragen die NICHT entfernt werden sollen $tags_allowed="<p><a><em><i><b><div><strong><br><br />"; // Datenbankfeld - hier das Datenbankfeld eintragen $db_field="products_description"; // Datenbankindexfeld - hier das Datenbankfeld eintragen, das für diese Tabelle die ID definiert $db_index="products_id"; // Tabelle - hier die Tabelle eintragen $db_table="products_description"; // inkludiere notwendige Datenbanklogik des Shops require_once('includes/application_top.php'); // hole Tabelle aus Datenbank // SQL Code: Lese die beiden Spalten mit den Namen definiert in den Variablen $db_index und $db_field aus der Tabelle mit dem Namen definiert in der Variable $db_field $sql="SELECT " . $db_index . "," . $db_field . " FROM " . $db_table; // lasse die Datenbank den Befehl ausführen $result = xtc_db_query
($sql); // Erzeuge ein Array für die Ausgabe der Datenbank $table_fields = Array(); // Schleife über alle Ausgabeergebnisse der obigen Datenbankabfrage while($row = mysql_fetch_assoc($result)){ // Füge das Array, das eine Zeile der Datenbankabfrage enthält an das Array $table_fields an. $table_fields[] = $row; } // Schleife über das Array $table_fields. Bei jedem Durchlauf seht in der Variable $table_field eine Zeile der SQL Abfrage zur verfügung foreach ($table_fields as $table_field) { // definiere was in der Datenbank geändert werden soll // die Variable muss einen Teil einer UPDATE SQL Anweisung enthalten $updatewhere = $db_index . " = '". (int
)$table_field[$db_index] ."'"; // entferne alle Tags die nicht in $tags_allowed enthalten sind // hier wird die eigentliche Arbeit erledigt. Das Entfernen der unerwünschten Tags // wobei die Variable $tags_allowed alle tags enthält die vom Befehl strip_tags ignoriert werden sollen $data[$db_field] = strip_tags($table_field[$db_field],$tags_allowed); // frage ab, ob das Ergebnis nach entfernen der tags ein anderes ist, als zuvor if ( $data[$db_field] !== $table_field[$db_field]) { // wenn das der Fall ist, schreibe in die Datenbank xtc_db_perform
($db_field,$data , 'update', $updatewhere); // und gebe auf dem Bildschirm aus für welche ID eine Änderung vorgenommen wurde echo 'Text korregiert für ID: ' . $table_field[$db_index] . " in Tabelle" . $db_table . "<br />\n"; } } ?> Und Deine Frage welches Feld das jetzt eigentlich ist, erübrigt sich bei einem Blick in die Wiki. Den
Link habe ich auch noch mal mit in die Kommentarzeilen gepackt.