Dieses Script wird jeweils um 00.00 per Cronjob ausgeführt.
Das Script löscht zum einen alle Top User und listet die neuen Top User an Hand der Aktuellen Punkte auf.
Zum anderen bekommen alle User mit mehr als 300 Punkte eine free SMS gut geschrieben...
Ich möchte gerne eine Ergänzung für die Top User einfügen...
Es soll eine Abfrage zur Tabelle topUser gestartet werden und User von Platz 1 bis 5 die schon hier gelistet sind vom Vortag sind sollen nicht erneut wieder in der aktuellen Top User Liste gelistet werden.
Die Abfrage und Bedingung muss natürlich im Vorfeld der aus Führung zur Auflistung der akuellen Top Usterliste passieren ansonsten stehen die Top User nämlich wieder wieder oben falls Sie die Punkte dazu haben für die Ränge ...
Wie und wo muss ich die Abfrage und Bedingung einbauen?
Vielen Dank für eure Hilfe ....
Hier das komplette Script:
-------------------------------------------------------------------------------------
Code:
#!/usr/bin/perl
$path='/homepages/10/d105218769/htdocs/cgi-bin';
$emailspeichernin="/homepages/10/d105218769/htdocs/data";
use DBI ();
$database = '000000000:localhost:000';
$dbuser = '000000000000';
$dbpassword = '000000000000000';
# 1 SMS pro erreichte Punkte z.B. 1000 ...
$smsbeipunkte=300;
######### Datenbank connecten
print "Content-type: text/html\n\n";
&dbconnect;
$anfrage = "DELETE FROM Topuser";
datenbank($anfrage);
$anfrage = "DELETE FROM bewertunglock";
datenbank($anfrage);
$anfrage = "SELECT * FROM Userdaten where 1 ";
datenbank($anfrage);
$ergebnisse = $sth->fetchall_arrayref( { anznummer => 1, punkte => 1 } );
foreach(@$ergebnisse)
{
# Alle Userdaten auf Punktzahl prüfen
$smsgutschrift=0;
$anznummer = $_->{anznummer};
$punkte= $_->{punkte};
if ($punkte >= $smsbeipunkte)
{
if ($punkte >= 300) { $smsgutschrift=1; }
if (($punkte < 300)) { $smsgutschrift=0; }
# $smsgutschrift=int(($punkte/$smsbeipunkte) - 0.5); # -0.5 wegen der aufrundung auch wenn keine volle summe erreicht ist
$anfrage = "SELECT guthaben FROM smskonten where user='$anznummer'";
datenbank($anfrage);
$ergebnisse1 = $sth->fetchall_arrayref( { guthaben => 1 } );
foreach(@$ergebnisse1)
{
$guthaben= $_->{guthaben};
$guthaben=$guthaben+$smsgutschrift;
$anfrage = "UPDATE smskonten set guthaben='$guthaben' where user='$anznummer'";
datenbank($anfrage);
# Haupt-Serverguthaben aktualisieren
$anfrage = "SELECT guthaben FROM smsserverguthaben where id='1'";
datenbank($anfrage);
$ergebnisse2 = $sth->fetchall_arrayref( { serverguthaben => 1 } );
foreach(@$ergebnisse2)
{
$serverguthaben= $_->{serverguthaben};
$serverguthaben=$serverguthaben-$smsgutschrift;
$anfrage = "UPDATE smsserverguthaben set guthaben='$serverguthaben' where id='1'";
datenbank($anfrage);
}
}
}
}
$anfrage = "SELECT * FROM Userdaten order by punkte DESC LIMIT 0,60 ";
datenbank($anfrage);
$ergebnisse = $sth->fetchall_arrayref( { anznummer => 1, punkte => 1 } );
foreach(@$ergebnisse)
{
$anznummer = $_->{anznummer};
$punkte= $_->{punkte};
$anfrage = "INSERT INTO Topuser (anznummer, punkte) VALUES ('$anznummer','$punkte')";
datenbank($anfrage);
# Zum Ausschliessen von Topusern -> Nummer ändern
#$anfrage = "DELETE FROM Topuser where anznummer='1'";
#datenbank($anfrage);
}
$anfrage = "SELECT * FROM Userdaten order by anznummer DESC";
datenbank($anfrage);
@allusers=();
@emails=();
$ergebnisse = $sth->fetchall_arrayref( { anznummer=>1, email=>1, punkte => 1 } );
foreach(@$ergebnisse)
{
$anznummer = $_->{anznummer};
$email=$_->{email};
push(@emails,"$email");
}
open(db,">$emailspeichernin/email.dat");
foreach $zeile (@emails)
{
print db "$zeile\n";
}
close(db);
$anfrage = "UPDATE Userdaten SET punkte='0' WHERE 1";
datenbank($anfrage);
&dbdisconnect;
exit;
################## subs
sub dbconnect
{
$dbhandle = DBI->connect('DBI:mysql:'.$database, $dbuser, $dbpassword ) or die "Unable to connect to Contacts Database: $dbhandle->errstr\n";
return;
}
sub datenbank
{
my ($anfrage)=@_;
$sth= $dbhandle->prepare( $anfrage ) or die "Unable to execute query: $dbhandle->errstr\n";
$dsnum=$sth->execute or die "Unable to execute query: $dbhandle->errstr\n";
return;
}
sub dbdisconnect
{
$sth->finish() or die "Unable to connect to Contacts Database: $dbhandle->errstr\n";
$dbhandle->disconnect() or die "Unable to connect to Contacts Database: $dbhandle->errstr\n";
return;
}