mikmae 0 Report post Posted August 15, 2004 hallo erstmal, ich bin ganz neu hier und habe da gleich mal zwei fragen also ich möchte User einer bestimmten Gruppe, mit einer bestimmten Anzahl von Posts, zu einer anderen Gruppe "aufsteigen" lassen. Wenn ich jetzt aber in der Gruppenverwaltung, diese Gruppe editiere und unten bei Gruppenbeförderung die gewünschte Postzahl und die Gruppe zu der befördert werden soll eintrage, bleiben die Member in der alten Gruppe. Ich möchte das also nicht nur für die Zukunft so haben sondern das die aktuellen Member, die diese Anzahl an Posts erreicht haben sofort "befördert" werden. Anderseits möchte ich aus einer höheren Gruppe die Leute "degradieren" die sich seit mehr als drei Monaten nicht mehr eingeloggt haben... Wie mache ich das? Ich danke euch schon mal im voraus cu mikmae Share this post Link to post
Helge 192 Report post Posted August 15, 2004 Das geht nicht so ohne weiteres ;) Share this post Link to post
mikmae 0 Report post Posted August 15, 2004 Danke Rigo, ich habe das jetzt auch per Hand gemacht .. naja bei mehreren hundert Membern ist das schon nicht mehr lustig .. hehe Gibt es dafür irgendein Hack oder könnte man das per phpMyAdmin machen? Sollte Dir oder jemand anderes was dazu einfallen, gebt mir doch bitte Bescheid cu mikmae Share this post Link to post
derKosta 0 Report post Posted August 16, 2004 (edited) Praktisch brauch man doch nur ein SQL Befehl welcher schaut ob die Posts z.b. über Hundert sind und dann die GroupID geändert wird. Kenn leider nicht den genauen Syntax, sonst würd ich dir das schreiben. Aber Stefan ist da genau der Mann dafür :P Edited August 16, 2004 by derKosta Share this post Link to post
Guest BitByter Report post Posted August 16, 2004 also ich möchte User einer bestimmten Gruppe, mit einer bestimmten Anzahl von Posts, zu einer anderen Gruppe "aufsteigen" lassen........ Soweit ich weis, funzzt das nicht über das ACP.Dort kann mann nur die Gruppe komplett aufsteigen lassen,aber nicht einzelne User innerhalb der Gruppe. Man kann aber anhand der Postingzahl festlegen,wann und ob jemand in einer bestimmte Gruppe aufsteigen soll bzw kann. Share this post Link to post
mikmae 0 Report post Posted August 16, 2004 (edited) Aber Stefan ist da genau der Mann dafür Hey der Stefan der mir schon so manches Mal aus der Patsche im ibforen geholfen hat? Ich hoffe es ... Man kann aber anhand der Postingzahl festlegen,wann und ob jemand in einer bestimmte Gruppe aufsteigen soll bzw kann. Ja das ist schon klar, ich suchte was um es nachträglich machen zu können. Achso trotzdem möchte ich mich bei Euch für Eure Hilfe bedanken :) Edited August 16, 2004 by mikmae Share this post Link to post
Blackman 0 Report post Posted August 17, 2004 (edited) hallo erstmal, ich bin ganz neu hier und habe da gleich mal zwei fragen also ich möchte User einer bestimmten Gruppe, mit einer bestimmten Anzahl von Posts, zu einer anderen Gruppe "aufsteigen" lassen. Wenn ich jetzt aber in der Gruppenverwaltung, diese Gruppe editiere und unten bei Gruppenbeförderung die gewünschte Postzahl und die Gruppe zu der befördert werden soll eintrage, bleiben die Member in der alten Gruppe. Ich möchte das also nicht nur für die Zukunft so haben sondern das die aktuellen Member, die diese Anzahl an Posts erreicht haben sofort "befördert" werden. Anderseits möchte ich aus einer höheren Gruppe die Leute "degradieren" die sich seit mehr als drei Monaten nicht mehr eingeloggt haben... Wie mache ich das? Ich danke euch schon mal im voraus cu mikmae Ich bin mir nicht sicher, ob ich dich richtig verstanden hab, aber ich glaub du willst es über externe Schnittstellen machen ... Was hälst du von cronjobs ? cronjobs und einem Script ? Okay, Schritt für Schritt, let's go: Erstmal erstellst du mir eine Datei mit dem namen script.php (oder so), da kommt dann mit dem Editor folgendes rein: <?php Start des PHP-Scriptes // Diese Daten bitte ausfüllen ! $databasehost = "localhost"; $databaseuser = "username"; $userpass = "password"; $databasename = "datenbank"; $noetigeposts = X; $altegruppe = Y; $neuegruppe = V; // Ende des Änderungsbereiches ! Datenbankdaten in Variablen ablegen, logischerweise musst du das auf deine Bedürfnisse anpassen, wie eben deine passwörter sind ! Die unteren drei Variablen musst du logischerweise auch anpassen, glaub mal die sind selbsterklärend ! $dreimonate = time() - 7776000; Da setz ich die drei monate ein, übrigens als sekundenwert, ich hab pro Monat einfach mal 30 Tage gesetzt ! $DB = @mysql_connect($databasehost,$databaseuser,$userpass) or die("Datenbank-Server: Anmeldung abgewiesen."); Verbinden mit MySQL-Server $anfrage = MYSQL_QUERY( "SELECT * FROM ".$databasename.".ibf_members WHERE posts >= '".$noetigeposts."' AND mgroup = '".$altegruppe."';"); $befehleins = mysql_numrows($anfrage); MYSQL_QUERY( "UPDATE ".$databasename.".ibf_members SET mgroup = '".$neuegruppe."' WHERE posts >= '".$noetigeposts."' AND mgroup = '".$altegruppe."';"); Ausführen des Befehls, das alle Leute die mehr als $noetigeposts Posts haben, und in der Gruppe $altegruppe sind, in die Gruppe $neuegruppe kommen (Gleichzeitig speichern wieviele Datensätze betroffen waren !) $anfrage = MYSQL_QUERY( "SELECT * FROM ".$databasename.".ibf_members WHERE last_activity < '".$dreimonate."' AND mgroup = '".$neuegruppe."';"); $befehlzwei = mysql_numrows($anfrage); MYSQL_QUERY( "UPDATE ".$databasename.".ibf_members SET mgroup = '".$altegruppe."' WHERE last_activity < '".$dreimonate."' AND mgroup = '".$neuegruppe."';"); Ausführen des Befehls, das alle Leute die mehr als $dreimonate nichts mehr gemacht haben, und in der Gruppe $neuegruppe sind, in die Gruppe $altegruppe kommen. (Gleichzeitig speichern wieviele Datensätze betroffen waren !) echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">"; echo "<html>"; echo "<head>"; echo "</head>"; echo "<body>"; echo "Es wurden ".$befehleins." Member hochgestuft, ".$befehlzwei." Member wurden degradiert !"; echo "</body>"; echo "</html>"; Ausgeben des Textes mysql_close($DB); Beenden der Datenbankverbindung ?> Ende der PHP-Datei ! Das ganze lädst du nun hoch, und lässt es per Cronjob jede Nacht oder so durchführen ! Ganz einfach Hoffe ich war eine würdige Stefan-Urlaubsvertretung ! Script wurde geprüft, und für tauglich befunden ! Hier noch mal der komplette Code: <?php // Diese Daten bitte ausfüllen ! $databasehost = "localhost"; $databaseuser = "username"; $userpass = "password"; $databasename = "datenbank"; $noetigeposts = X; $altegruppe = Y; $neuegruppe = V; // Ende des Änderungsbereiches ! $dreimonate = time() - 7776000; $DB = @mysql_connect($databasehost,$databaseuser,$userpass) or die("Datenbank-Server: Anmeldung abgewiesen."); $anfrage = MYSQL_QUERY( "SELECT * FROM ".$databasename.".ibf_members WHERE posts >= '".$noetigeposts."' AND mgroup = '".$altegruppe."';"); $befehleins = mysql_numrows($anfrage); MYSQL_QUERY( "UPDATE ".$databasename.".ibf_members SET mgroup = '".$neuegruppe."' WHERE posts >= '".$noetigeposts."' AND mgroup = '".$altegruppe."';"); $anfrage = MYSQL_QUERY( "SELECT * FROM ".$databasename.".ibf_members WHERE last_activity < '".$dreimonate."' AND mgroup = '".$neuegruppe."';"); $befehlzwei = mysql_numrows($anfrage); MYSQL_QUERY( "UPDATE ".$databasename.".ibf_members SET mgroup = '".$altegruppe."' WHERE last_activity < '".$dreimonate."' AND mgroup = '".$neuegruppe."';"); echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">"; echo "<html>"; echo "<head>"; echo "</head>"; echo "<body>"; echo "Es wurden ".$befehleins." Member hochgestuft, ".$befehlzwei." Member wurden degradiert !"; echo "</body>"; echo "</html>"; mysql_close($DB); ?> Edited August 17, 2004 by Blackman Share this post Link to post
mikmae 0 Report post Posted August 17, 2004 @ Blackman, oh ich bin ja überwältigt ... wahnsinn ich werde mir dieses script mal in ruhe zu gemüte ziehen und bei meiner nächsten aktion testen... hatte es jetzt ja erstmal per hand gemacht aber das ist wirklich keine lösung bei mehreren hundert zu bearbeitenden membern ist das ein service hier ... aller erste sahne ... D A N K E Share this post Link to post
Blackman 0 Report post Posted August 17, 2004 Ich hab den Beitrag schon ein wenig länger in der Beobachtung gehabt, hab mich nur noch nicht gleich so recht überredet ein schönes Script zu schreiben... Wie du das Script starten musst, ist klar, es muss "eigentlich" nicht in einem geschützen Ordner sein, denn es ist ja egal wenns jemand anders startet. Da es keine Übergabeparameter hat, ist es auch kein Sicherheitsrisiko, SOLANG der Apache den PHP-Interpreter IMMER startet (sollte da was schief laufen, kriegt man deine Datenbankdaten natürlich auch über die conf_global.php) - falls du willst, könnte ich es sicherlich auch so umschreiben das es die Datenbankdaten nimmt, die in der conf_global.php sind, aber das ist wohl eher umständlicher, da ich dann den Pfad zu deiner conf_global noch definieren muss. Solltest du noch Fragen haben, zum Programmcode, einzelnen Passagen, dem Einbau, den Cronjobs (oder vielleicht warum die Zeit in Sekunden angeben wird, diese Frage beantworte ich in letzter Zeit besonders gern ), tu dir keinen Zwang an ! ist das ein service hier ... aller erste sahne ... Danke zurück für das Lob ! Share this post Link to post