FisyX Geschrieben 7. Juni 2004 Teilen Geschrieben 7. Juni 2004 Hallo. Habe vor, für meine community ein Punktesystem zu programmieren. Soll folgende funktion erfüllen: Alle 3 Minuten die ein User in der Community verbringt, sollen 3 Punkte gutgeschrieben werden. Habe folgenden Code zusammengefrimelt: <?php ### Datenbankverbindung ### $update = time()-180; $jetzt = time(); $sql="SELECT punkte + 3 as punkteneu FROM Community_Points WHERE name LIKE '$name' AND time < '$update'"; $ergebnis = mysql_query($sql); while($row = mysql_fetch_object($ergebnis)) { $aendern = "UPDATE Community_Points SET punkte = '$row->punkteneu' WHERE name LIKE '$name' AND time < '$update'"; } $pruef=mysql_query("SELECT time FROM Community_Points WHEREtime < '$update'") if(@mysql_fetch_array($pruef)) { echo "Punktestand: $row->punkteneu"; } else { mysql_query("INSERT INTO Community_Points (name, time) VALUES ('$name', '$jetzt')") or die(mysql_error()); } ?> [/PHP] Zur Erklärung: Das Script ignoriert als erstes alle angaben und setzt am schluss die aktuelle zeit in die db. danach prüft es ob seit dem letzten eintrag 3 minuten vergangen sind. wenn ja, trägt addiert es den altenpunktestand + 3 und definiert ihn als neuenpunktestand. dieser überschreibt dann den alten. Ist das Script so okay oder würdet ihr was besser machen??? Sind Fehler enthalten??? Weiss ja ned... vieleicht wiss ihr ja ne bessere lösung sowas zu realisieren... Kann leider keine cronjobs auf meinem webspace laufen lassen.... THX schonmal :beagolisc Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
FisyX Geschrieben 7. Juni 2004 Autor Teilen Geschrieben 7. Juni 2004 Hab das script nochmal überarbeitet ^^ waren doch nen paar logikfehler von mir drinn :floet: Nu ja hier der code: <?php $update = time()-180; $jetzt = time(); $wert = 1; $sql = mysql_query("UPDATE Community_Points SET punkte = punkte + 3 WHERE time < $update AND name LIKE $name") or die(mysql_error()); //Zählt 3 Punkte nach 3 minuten hinzu $sql2 = mysql_query("DELETE wert FROM Community_Points WHERE time < $update AND name LIKE $name") or die(mysql_error()); $pruef=mysql_query("SELECT wert FROM Community_Points WHERE wert = $wert AND name LIKE $name") or die(mysql_error()); if(@mysql_fetch_array($pruef)) { $ergebnis = mysql_query($sql); while($row = mysql_fetch_object($ergebnis)) { echo $row->punkte; } } else { mysql_query("INSERT INTO Community_Points (name, time, wert) VALUES ('$name', '$jetzt', '$wert')") or die(mysql_error()); } ?>[/PHP] Erklährung: - erst werden die Werte festgelegt! - dann wird falls vorhanden zum puktestand 3 punkte hinzuaddiert wenn das zeit feld der Tabelle kleiner ist als die Variable mit dem Wert (aktuelle Zeit - 3 Minuten) - danach wird die obrige bedingung ein weiteres mahl ausgeführt allerdings auf den wert falls dieser gesetzt dass dieser falls zeit feld der Tabelle kleiner ist als die Variable mit dem Wert (aktuelle Zeit - 3 Minuten) gelöscht wird. - nun wird nachgeschaut ob wert vorhanden - wenn ja soll nur der Aktuelle Punktestand ausgegeben werden - wenn nein soll der wert der name und die aktuelle zeit eingetragen werden. Das script wird in einem nicht sichtbaren frame von einem meta refresch alle 3:01 Minuten aktualisiert. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.