PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SQL Query gesucht ...


Smoker
02.05.2004, 17:57
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

Smoker
03.05.2004, 21:00
Kann mir da echt keiner Helfen ??? :(

bye
Smoker

Hoffi
03.05.2004, 23:30
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.")");
?>

Smoker
04.05.2004, 00:05
Danke, aber es kommt diese Fehlermeldung ...

Parse error: parse error in /homepages/20/d69779369/htdocs/testboard/del_pms.php on line 8

:(

bye
Smoke

Maddrax
04.05.2004, 00:26
hier: $getpn) müsste noch ne ) dahinter (Zeile 8)

Hoffi
04.05.2004, 07:44
Ups. Ja, richtig. ) fallenlassen. *hebauf*
sorry.

Smoker
04.05.2004, 08:46
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

Maddrax
04.05.2004, 08:54
Hast du auch an einen möglichen Tabellenprefix gedacht ?
Schreib mal vor alle Tabellennamen " . TABLE_PREFIX . " direkt davor.

Smoker
04.05.2004, 09:28
Ich verwendet KEINEN Prefix, deswegen sollte das nicht der Fehler sein :(

bye
Smoker

Maddrax
04.05.2004, 09:30
dann schreib alle tabellennamen klein, die sind in der DB auch klein geschrieben und soweit ich weis unterscheidet mysql das wohl

Smoker
04.05.2004, 09:55
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

Hoffi
04.05.2004, 10:21
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.")");
?>

Smoker
04.05.2004, 10:53
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

Hoffi
04.05.2004, 11:23
Mach ich Dir heute Abend fertig.

Smoker
04.05.2004, 12:24
Danke :)
Dann kann ich auch endlich den ( Masspm ) hack nutzen :)

Thanks
Smoker

Hoffi
04.05.2004, 16:32
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.")");
?>

Smoker
04.05.2004, 18:12
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

Hoffi
04.05.2004, 19:39
Oben Korrigiert.

Smoker
04.05.2004, 20:11
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

Hoffi
04.05.2004, 22:44
*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. ;)

Smoker
05.05.2004, 08:23
Jetzt geht es 1a :)
10000 Dank dafür !!!

Das kann man ja schon als Kompletten Addon durchgehen lassen :)

Thxx
Smoker

Hoffi
05.05.2004, 09:07
Ich galub ich mach nen Hack draus. ^^

Smoker
05.05.2004, 09:39
Ne im ernst.
Das ist ne echt klasse sache :)

bye
Smoker