Seite 1 von 1
Nicht verwendete Smilies Mod-Anfrage
Verfasst: 08.11.2007 10:58
von Dragonito
Hallo Leute,
gibts unter Phpbb 3 nen Mod mit dem man die nicht verwendeten Smilies auswählen und später löschen kann?
Wenn nicht, habt Ihr nen Ansatz wie man sowas umsetzen könnte?
LG
Robin
Verfasst: 08.11.2007 13:19
von darkon
Wozu brauchst du da einen Mod?
Das kann man doch schon bequem im ACP machen.
Verfasst: 08.11.2007 15:11
von Dragonito
wie kann man dort denn die nichtverwendeten Smilies auswählen? Wenn ich nen Smilie lösche ist dem egal ob der schon in nem Beitrag verwendet wird oder nicht

Wenns da ne Selektionsmöglichkeit geben würde wäre das genial und wenns nur nen Flag ist der Anzeigt das das Smilie im Gebrauch ist...
Sollte es sowas nicht geben, würd mich nen Mod-Ansatz dazu schon interessieren.
Verfasst: 08.11.2007 16:27
von djchrisnet
Theoretisch kann man natürlich die smiley kürzel : - ) usw... in den Datenbank suchen und die ergebnisse als $row ausgeben...... wie gesagt klappen kann das schon
Code: Alles auswählen
$sql = "SELECT COUNT(*)
FROM `phpbb_posts`
WHERE (post_text LIKE '%" .$row['smileys_code']. "%')";
ohne gewähr
Verfasst: 08.11.2007 16:46
von Dragonito
an sowas dachte ich auch schon, aber die kompletten Post-Texte durchgehen ist schon heftig *g* könnte was länger dauern. Ich Prog das nachher mal extern um zu gucken obs überhaupt was bringt.
Verfasst: 08.11.2007 18:32
von djchrisnet
die normale suchfunktion tut doch auch nichts anderes als alles zu durchsuchen. ich sehe da keine probleme
EDIT: wenn ich in phpmyadmin unter SQL genau folgenden Code eingebe, erhalte ich eine Zahl 30 zurück. Anscheind funktioniert es wirklich.
Code: Alles auswählen
SELECT COUNT( * )
FROM `phpbb_posts`
WHERE (
post_text LIKE "%:D%"
)
Verfasst: 08.11.2007 22:42
von Dragonito
jo, klappt prima, ich versuch da mal was zu basteln

werds hier dann reinposten
Verfasst: 08.11.2007 23:57
von Dragonito
Hab mal was hingesch***en, wers ausprobiert sollte die Tabellen entsprechend anpassen, löschen kommt später

Script zeigt den Smiliecode an und die Anzahl:
Code: Alles auswählen
<?php
$mysqlhost="localhost";
$mysqluser="root";
$mysqlpwd="root";
$mysqldb="forum";
$connection=mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die ("Verbindungsversuch fehlgeschlagen");
mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht waehlen.");
// wer viel Zeit hat:
$sql = "SELECT * FROM phpbb3_smilies";
// wer schnell testen will:
//$sql = "SELECT * FROM phpbb3_smilies limit 10";
$smilies = mysql_query($sql) or die("Anfrage nicht erfolgreich");
while ($smile = mysql_fetch_array($smilies)){
echo "Anzahl: ". holeAnzahlVorhandeSmileys($smile['code']) . " Smilie: ". $smile['code'] . "<br>";
}
function holeAnzahlVorhandeSmileys($smilie){
$sql = "SELECT COUNT(*) as Anzahl FROM phpbb3_posts WHERE (post_text LIKE '%" . $smilie . "%')";
$count = mysql_query($sql);
$anzahl = mysql_fetch_row($count);
return $anzahl[0];
}
?>
nun mit Löschen
Verfasst: 10.11.2007 13:41
von Dragonito
hier das Teil nochmal mit Löschen, bei vielen Smilies und vielen Beiträgen dauerts allerdings ewig, aber ne schönere Lösung hab ich derzeit nicht
Wers braucht kann sie Icons noch ausgeben einfach auskommentieren, Tabelle anpassen nicht vergessen
Code: Alles auswählen
<?php
$mysqlhost="localhost";
$mysqluser="root";
$mysqlpwd="";
$mysqldb="forum";
$connection=mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die ("Verbindungsversuch fehlgeschlagen");
mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht waehlen.");
// wer viel Zeit hat:
$sql = "SELECT * FROM phpbb3_smilies";
// wer schnell testen will:
//$sql = "SELECT * FROM phpbb3_smilies limit 10";
$smilies = mysql_query($sql) or die("Anfrage nicht erfolgreich");
while ($smile = mysql_fetch_array($smilies)){
$anzahl = holeAnzahlVorhandeSmileys($smile['code']);
//echo "Anzahl: ". $anzahl . " Smilie: ". $smile['code'] . "<br>";
if ($anzahl == 0) {
echo "Geloescht: ".$smile['smiley_id']."<br>";
delete($smile['smiley_id']);
}
}
function holeAnzahlVorhandeSmileys($smilie){
$sql = "SELECT COUNT(*) as Anzahl FROM phpbb3_posts WHERE (post_text LIKE '%" . $smilie . "%')";
$count = mysql_query($sql);
$anzahl = mysql_fetch_row($count);
return $anzahl[0];
}
function delete($id){
$sql = "DELETE FROM phpbb3_smilies WHERE smiley_id =" . $id;
$ergebnis = mysql_query($sql);
return $ergebnis;
}
?>