Archiv verlassen und diese Seite im Standarddesign anzeigen : SQL Query gesucht ...
Wenn ich meiner vB3 Datenbak einen Haufen PMßs habe, die ALLE den selben Titel und Inhalt haben, wie kann ich die per SQL Query wieder löschen ?
Beim vB2 war das ganz einfach so ...
DELETE FROM privatemessage WHERE title="Hier der Titel der PM";
Thxx
Smoker
Kann mir da echt keiner Helfen ??? :(
bye
Smoker
Das ist leider mit einem SQL nicht so ohne weiteres machbar da anscheinend die PN's nun in zwei Tabellen sind. PM und PMTEXT. PMRECEIP müsste in diesem Fall davon unabhängig sein.
Aber folgender PHP-Code sollte das erledigen. (ungetestet!)
<?php
// ####################### SET PHP ENVIRONMENT ###########################
error_reporting(E_ALL & ~E_NOTICE);
// #################### DEFINE IMPORTANT CONSTANTS #######################
require_once('./global.php');
$getpn = $DB_site->query("SELECT * FROM PMTEXT WHERE title = 'Titelderpn'");
$in = "0";
while ($pn = $DB_site->fetch_array($getpn) {
$in.=", ".$pn['pmtextid'];
}
$DB_site("DELETE FROM PM WHERE PMTEXTID IN (".$in.")");
$DB_site("DELETE FROM PMTEXT WHERE PMTEXTID IN (".$in.")");
?>
Danke, aber es kommt diese Fehlermeldung ...
Parse error: parse error in /homepages/20/d69779369/htdocs/testboard/del_pms.php on line 8
:(
bye
Smoke
hier: $getpn) müsste noch ne ) dahinter (Zeile 8)
Ups. Ja, richtig. ) fallenlassen. *hebauf*
sorry.
Jetzt kommt dieser Fehler ....
Ungueltige SQL-Abfrage: SELECT * FROM PMTEXT WHERE title = 'Titelderpn'
mysql error: Table 'db76028729.PMTEXT' doesn't exist
Schreibe ich PMTEXT klein und alles andere was Tabellen betrifft auch, dann kommt dieser Fehler ( egal, ob im Adminverzeichnis oder im Forum verzeichnis ausgeführt ...
Fatal error: Call to undefined function: object() in /pafd/zum/testboard/admincp/del_pms.php on line 11
bye
Smoker
Hast du auch an einen möglichen Tabellenprefix gedacht ?
Schreib mal vor alle Tabellennamen " . TABLE_PREFIX . " direkt davor.
Ich verwendet KEINEN Prefix, deswegen sollte das nicht der Fehler sein :(
bye
Smoker
dann schreib alle tabellennamen klein, die sind in der DB auch klein geschrieben und soweit ich weis unterscheidet mysql das wohl
dann schreib alle tabellennamen klein, die sind in der DB auch klein geschrieben und soweit ich weis unterscheidet mysql das wohl
Hatte ich oben ja geschrieben.
Wenn es groß ist kommt ein SQL Fehler und wenn alles klein ist, kommt dieser Fatal Error.
bye
Smoker
Grumpf. Ich Blödmann. Hier noch mal der korregierte Text.
<?php
// ####################### SET PHP ENVIRONMENT ###########################
error_reporting(E_ALL & ~E_NOTICE);
// #################### DEFINE IMPORTANT CONSTANTS #######################
require_once('./global.php');
$getpn = $DB_site->query("SELECT * FROM pmtext WHERE title = 'Titelderpn'");
$in = "0";
while ($pn = $DB_site->fetch_array($getpn)) {
$in.=", ".$pn['pmtextid'];
}
$DB_site->query("DELETE FROM pm WHERE pmtextid IN (".$in.")");
$DB_site->query("DELETE FROM pmtext WHERE pmtextid IN (".$in.")");
?>
Ja, das geht zwar jetzt mit dem Löschen ( DANKE !!!! ), nur setzt es die Anzahl der PM´s nicht runter.
Jetzt habe ich in meinem testboard zwar meine PM gelöscht, aber es sagt mir noch, das ich eine hätte.
Das steht ( habe eben mal geschaut ) in der Tabelle ( user ) unter ( pmunread und ( pmtotal ).
es sollte bei allen bvei denen dann über dieses Script eine PM gelöscht wird auch noch in den 2 Spalten den wert um 1 verkleinern.
Sonst bekomme ich bald mails, warum User PM´s angezeigt bekommen, obwohl sie keine haben :D
bye
Smoker
Mach ich Dir heute Abend fertig.
Danke :)
Dann kann ich auch endlich den ( Masspm ) hack nutzen :)
Thanks
Smoker
So. Er prüft nun auch ob die PN gelesen wurde, und nur wenn nicht zieht er eins ab.
Ich weiss, ist Quick 'n Dirty. Aber sollte funktionieren.
<?php
// ####################### SET PHP ENVIRONMENT ###########################
error_reporting(E_ALL & ~E_NOTICE);
// #################### DEFINE IMPORTANT CONSTANTS #######################
require_once('./global.php');
$getpn = $DB_site->query("SELECT pmtext.pmtextid as pmtextid, pmtext.fromuserid as user, pm.messageread as isread FROM pmtext, pm WHERE title = 'Titelderpn' and pm.pmtextid = pmtext.pmtextid");
$in = "0";
$usertotal = "0";
$userunread = "0";
while ($pn = $DB_site->fetch_array($getpn)) {
$in .= ", " . $pn['pmtextid'];
$usertotal .= "," . $pn['user'];
if ($pn['isread']==0) $userunread .= "," . $pn['user'];
}
$DB_site->query("DELETE FROM pm WHERE pmtextid IN (".$in.")");
$DB_site->query("DELETE FROM pmtext WHERE pmtextid IN (".$in.")");
$DB_site->query("UPDATE user SET pmunread = pmunread - 1 WHERE userid IN (".$userunread.")");
$DB_site->query("UPDATE user SET pmtotal = pmtotal - 1 WHERE userid IN (".$usertotal.")");
?>
Danke, aber jetzt kommt diese Meldung ...
Ungueltige SQL-Abfrage: SELECT pmtext.pmtextid as pmtextid, pmtext.forumuserid as user, pm.messageread as read FROM pmtext, pm WHERE title = 'Test' and pm.pmtextid = pmtext.pmtextid
mysql error: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'read FROM pmtext, pm WHERE title = 'Test' and pm.pmtextid = pmt
:(
bye
Smoker
Danke aber jetzt kommt das ....
Ungueltige SQL-Abfrage: SELECT pmtext.pmtextid as pmtextid, pmtext.forumuserid as user, pm.messageread as isread FROM pmtext, pm WHERE title = 'Test' and pm.pmtextid = pmtext.pmtextid
mysql error: Unknown column 'pmtext.forumuserid' in 'field list'
Ps.: Sorry, dafür, das ich dich so beanspruche.
bye
Smoker
*hmpf* Den Fehler hatte ich beim Probieren rausgemacht. Naja, nun endlich sollte es gehen. Habs noch mal komplett nachgeschaut.
Kein Prob, sonst würde ich gar nicht erst Antworten. ;)
Jetzt geht es 1a :)
10000 Dank dafür !!!
Das kann man ja schon als Kompletten Addon durchgehen lassen :)
Thxx
Smoker
Ich galub ich mach nen Hack draus. ^^
Ne im ernst.
Das ist ne echt klasse sache :)
bye
Smoker
vBulletin® v3.7.3, Copyright ©2000-2008, Jelsoft Enterprises Ltd.