cas-ge
04.08.2009, 19:54:13
Hallo zusammen,
ich habe folgendes Problem. Ich möchte gerne aus einer Datenabank einen Zeitwertabgleichen und wenn dieser eine von mir vorgegeben Zeit überschreitet eine Aktion stattfindet.
Es geht darum das verschiedene Nutzer eine Session laufen haben. Und wenn jemand mit einem "zug" nach 84std im Rückstand ist das diese Session vom System beendet wird.
Ich poste hier den Code in der Hoffnugn auf eine schnelle Lösung. Weil Momentan ist es so, wenn ich das Script ausführe das ALLE Session beendet werden selbst welche die erst vor einer Std. gestart sind als Bsp.
Ich möchte aber das NUR die beendet werden welche tatsächlich über der Zeit liegen. Ich denke ich habe nur einen Gedankenfehler da es ja Funktioniert nur nich ganz so wie ich es möchte ;)
MfG
und Danke im vorraus
EDIT: also jede session hat eine feste id
function autoloeschenstrafpunkte()
{
echo "Hier finden Sie eine Übersicht über aktuelle Kämpfe welche eine Fristverpeilung besitzen (Letzter Zug älter als 4 Tage)<hr>";
$now = time();
$sql = 'SELECT * FROM battle';
$res = mysql_query($sql) OR die(mysql_error());
while($row = mysql_fetch_assoc($res))
{
$ID = $row['id'];
$STATUS = $row['status'];
$DATE1 = $row['date1'];
$DATE2 = $row['date2'];
$DATE3 = $row['date3'];
$DATE4 = $row['date4'];
$DATE5 = $row['date5'];
$DATE6 = $row['date6'];
$BEWERTET = $row['bewertet'];
$HERAUSFORDERER = $row['herausforderer'];
$GEGNER = $row['gegner'];
if ($DATE1 <> "")
{
$alter = $now-$DATE1;
}
if ($DATE2 <> "")
{
$alter = $now-$DATE2;
}
if ($DATE3 <> "")
{
$alter = $now-$DATE3;
}
if ($DATE4 <> "")
{
$alter = $now-$DATE4;
}
if ($DATE5 <> "")
{
$alter = $now-$DATE5;
}
if ($DATE6 <> "")
{
$alter = $now-$DATE6;
}
$alter = $alter / 86400;
$alter = floor($alter);
//echo "<b>$alter</b>";
if ($STATUS <> 5 AND $BEWERTET <> "EOR")
{
echo "<hr>Battle-ID: $ID | Status: $STATUS | letzter Spielzug vor: $alter Tag(en)<br>";
echo "50 Strafpunkte für <b>";
kampfmanuellbeendensql($ID,$HERAUSFORDERER,$GEGNER);
if ($STATUS == 1)
{
echo "Herausforderer: $HERAUSFORDERER";
punktevergabe($HERAUSFORDERER,"-50");
}
if ($STATUS == 2)
{
echo "Gegner: $GEGNER";
punktevergabe($GEGNER,"-50");
}
if ($STATUS == 3)
{
echo "Herausforderer: $HERAUSFORDERER";
punktevergabe($HERAUSFORDERER,"-50");
}
if ($STATUS == 4)
{
echo "Gegner: $GEGNER";
punktevergabe($GEGNER,"-50");
}
echo "</b><br>Kampf muss beendet werden!<br>";
}
if ($STATUS == 5)
{
//echo "Battle-ID: $ID | Status: $STATUS | Alter: $alter Tag(e)<br>";
} } }
}
ich habe folgendes Problem. Ich möchte gerne aus einer Datenabank einen Zeitwertabgleichen und wenn dieser eine von mir vorgegeben Zeit überschreitet eine Aktion stattfindet.
Es geht darum das verschiedene Nutzer eine Session laufen haben. Und wenn jemand mit einem "zug" nach 84std im Rückstand ist das diese Session vom System beendet wird.
Ich poste hier den Code in der Hoffnugn auf eine schnelle Lösung. Weil Momentan ist es so, wenn ich das Script ausführe das ALLE Session beendet werden selbst welche die erst vor einer Std. gestart sind als Bsp.
Ich möchte aber das NUR die beendet werden welche tatsächlich über der Zeit liegen. Ich denke ich habe nur einen Gedankenfehler da es ja Funktioniert nur nich ganz so wie ich es möchte ;)
MfG
und Danke im vorraus
EDIT: also jede session hat eine feste id
function autoloeschenstrafpunkte()
{
echo "Hier finden Sie eine Übersicht über aktuelle Kämpfe welche eine Fristverpeilung besitzen (Letzter Zug älter als 4 Tage)<hr>";
$now = time();
$sql = 'SELECT * FROM battle';
$res = mysql_query($sql) OR die(mysql_error());
while($row = mysql_fetch_assoc($res))
{
$ID = $row['id'];
$STATUS = $row['status'];
$DATE1 = $row['date1'];
$DATE2 = $row['date2'];
$DATE3 = $row['date3'];
$DATE4 = $row['date4'];
$DATE5 = $row['date5'];
$DATE6 = $row['date6'];
$BEWERTET = $row['bewertet'];
$HERAUSFORDERER = $row['herausforderer'];
$GEGNER = $row['gegner'];
if ($DATE1 <> "")
{
$alter = $now-$DATE1;
}
if ($DATE2 <> "")
{
$alter = $now-$DATE2;
}
if ($DATE3 <> "")
{
$alter = $now-$DATE3;
}
if ($DATE4 <> "")
{
$alter = $now-$DATE4;
}
if ($DATE5 <> "")
{
$alter = $now-$DATE5;
}
if ($DATE6 <> "")
{
$alter = $now-$DATE6;
}
$alter = $alter / 86400;
$alter = floor($alter);
//echo "<b>$alter</b>";
if ($STATUS <> 5 AND $BEWERTET <> "EOR")
{
echo "<hr>Battle-ID: $ID | Status: $STATUS | letzter Spielzug vor: $alter Tag(en)<br>";
echo "50 Strafpunkte für <b>";
kampfmanuellbeendensql($ID,$HERAUSFORDERER,$GEGNER);
if ($STATUS == 1)
{
echo "Herausforderer: $HERAUSFORDERER";
punktevergabe($HERAUSFORDERER,"-50");
}
if ($STATUS == 2)
{
echo "Gegner: $GEGNER";
punktevergabe($GEGNER,"-50");
}
if ($STATUS == 3)
{
echo "Herausforderer: $HERAUSFORDERER";
punktevergabe($HERAUSFORDERER,"-50");
}
if ($STATUS == 4)
{
echo "Gegner: $GEGNER";
punktevergabe($GEGNER,"-50");
}
echo "</b><br>Kampf muss beendet werden!<br>";
}
if ($STATUS == 5)
{
//echo "Battle-ID: $ID | Status: $STATUS | Alter: $alter Tag(e)<br>";
} } }
}