php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 09.03.2006, 16:57  
Gast
 
Beiträge: n/a
Standard [Erledigt] Realsierungsproblem - Punkte über mehre Tage / Wochen

Hallo,
ich habe nun schon mehrer Listen gesehen, wo man sehen kann wann wieivel, wann & etc. er Plätz aufgestiegen oder verloren hatt.

Nun wie machen diese das?
- Tun die riesiege Datenbanken anlegen die bis 30 strukturelemnte erhalten?
- Tun diese eine andere Methode benutzen?


Ich hab hier nen kleines Testscript gemacht, leider funktioniert das Updaten nicht richtig, er updatet alles um in die neue Punkte & Platz reihe.. irgendwie komm ich da durcheiandern, hoffe ihr könnt mir da weiterhelfen.
Wobei bitte beanwortet au meine frage oben

PHP-Code:
/////////////////////////////////////////////////////////////////////
// Punkte
/////////////////////////////////////////////////////////////////////
$query_users     $db->query("SELECT * FROM users");
while(
$row_users $db->fetch_array($query_users)){
$db->query("UPDATE game_rangliste SET punkte = '0' WHERE userid = '".$row_users["id"]."'");

    
$query_inseln     $db->query("SELECT * FROM users_land WHERE besitzer = '$row_users[id]'");
    while(
$row_inseln $db->fetch_array($query_inseln)){
        global 
$id,$i;
        
$id $row_users["id"];
        
$punkte $row_inseln["punkte"];
    
//
        
$userarray = array(
            
"punkte" => $punkte
        
);        
    
//
        
$punkte $userarray[punkte];
        
# Heute
        
$db->query("UPDATE game_rangliste SET punkte = punkte + $punkte WHERE userid = '".$row_users["id"]."'");
        
# 1 Tag
        
$db->query("UPDATE game_rangliste SET 1punkte = punkte WHERE userid = '".$row_users["id"]."'");
        
# 2 Tag
        
$db->query("UPDATE game_rangliste SET 2punkte = 1punkte WHERE userid = '".$row_users["id"]."'");
        
# 3 Tag
        
$db->query("UPDATE game_rangliste SET 3punkte = 2punkte WHERE userid = '".$row_users["id"]."'");
        
# 4 Tag
        
$db->query("UPDATE game_rangliste SET 4punkte = 3punkte WHERE userid = '".$row_users["id"]."'");
    }
}

//////////////////////////////////////////////////////////////////////
// Platz ausrechnen                                                    //
//////////////////////////////////////////////////////////////////////
$platz "0";
$q_platz1         $db->query("SELECT id,username FROM users");
while(
$r_platz1    $db->fetch_array($q_platz1)){
$platz++;
# ------------------->
    
$q_platz         $db->query("SELECT * FROM game_rangliste ORDER by punkte DESC");
    while(
$r_platz    $db->fetch_array($q_platz)){
        
# Heute
        
$db->query("UPDATE game_rangliste SET platz = '$platz' WHERE userid = '$r_platz1[id]'");
        
# 1 Tag
        
$db->query("UPDATE game_rangliste SET 1platz = platz WHERE userid = '$r_platz1[id]'");
        
# 2 Tag
        
$db->query("UPDATE game_rangliste SET 2platz = 1platz WHERE userid = '$r_platz1[id]'");
        
# 3 Tag
        
$db->query("UPDATE game_rangliste SET 3platz = 2platz WHERE userid = '$r_platz1[id]'");
        
# 4 Tag
        
$db->query("UPDATE game_rangliste SET 4platz = 3platz WHERE userid = '$r_platz1[id]'");
    }
# ------------------->
}
echo 
"Ranglisten update durchgeführt";
?> 
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 09.03.2006, 17:12  
Erfahrener Benutzer
 
Registriert seit: 23.08.2007
Beiträge: 1.510
M3g4Star befindet sich auf einem aufstrebenden Ast
Standard

das müsste eigentlich durch die daten der einzelnen "Spiele" ( falls es darumgeht ) gehen .. durch geschickte querys ...



Mal so spontan in den Raum geworfen ....
M3g4Star ist offline  
Alt 09.03.2006, 17:12  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.235
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Ähhhm. Logik-Fehler....

Code:
        # Heute 
        $db->query("UPDATE game_rangliste SET punkte = punkte + $punkte WHERE userid = '".$row_users["id"]."'"); 
        # 1 Tag 
        $db->query("UPDATE game_rangliste SET 1punkte = punkte WHERE userid = '".$row_users["id"]."'");
Im ersten Update setzt du punkte beispielsweise auf 40
Im zweiten Update setzt du 1punkte auf 40 (Punkte ist auf vierzig).

Mache die Reihenfolge der Updates genau umgekehrt.

P.S.: Spaltennamen fangen nicht mit Zahlen an

P.P.S.: Eine extra Tabelle wäre geschickter statts 50 Tabellenspalten... Dann brauchst du auch nicht so komplizierte Updates. Die neue Tabelle hat die userid, den (Spiel-)Tag und die Punktzahl, sowie den Platz.
Ein neuer Spieltag bedeutet ein Insert mit neuer Spieltag-Nummer, alles davor bleibt wie es ist.
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist gerade online  
Alt 09.03.2006, 18:11  
Gast
 
Beiträge: n/a
Standard

Hallo,
nun ich habe es auf eine einfache und Datenbanksparende Methode gemacht.
Einfach eine Tabelle erstellt, rank, platz und das datum reicht.

Nun wir das Script immer um 12 ausgeführt so hab ich sogar überblick über mehre Wochen wenn ich will =)

Danke eusch =)

PHP-Code:
<?php
/////////////////////////////////////////////////////////////////////
require_once("class_dbmysql.php");
$db = new databaseEngine;
$db->connect("localhost","root","qwert55");
$db->select_db("androsia_game");
//////////////////////////////////////////////////////////////////////
// Log einfügen                                                        //
//////////////////////////////////////////////////////////////////////
$q_log $db->query("SELECT * FROM game_rangliste");
while(
$q_platz    $db->fetch_array($q_log)){
    
$ranglist_log = array(
        
"id" => "",
        
"userid" => $q_platz["userid"],
        
"punkte" => $q_platz["punkte"],
        
"platz" => $q_platz["platz"],
        
"datum" => time()
    );
    
$db->insert_query("game_rangliste_log",$ranglist_log);
}
/////////////////////////////////////////////////////////////////////
// Punkte
/////////////////////////////////////////////////////////////////////
$query_users     $db->query("SELECT * FROM users");
while(
$row_users $db->fetch_array($query_users)){
$db->query("UPDATE game_rangliste SET punkte = '0' WHERE userid = '".$row_users["id"]."'");

    
$query_inseln     $db->query("SELECT * FROM users_land WHERE besitzer = '$row_users[id]'");
    while(
$row_inseln $db->fetch_array($query_inseln)){
        global 
$id,$i;
        
$id $row_users["id"];
        
$punkte $row_inseln["punkte"];
    
//
        
$userarray = array(
            
"punkte" => $punkte
        
);        
    
//
        
$punkte $userarray[punkte];
        
# Heute
        
$db->query("UPDATE game_rangliste SET punkte = punkte + $punkte WHERE userid = '".$row_users["id"]."'");
    }
}

//////////////////////////////////////////////////////////////////////
// Platz ausrechnen                                                    //
//////////////////////////////////////////////////////////////////////
$platz "0";
$q_platz1         $db->query("SELECT id,username FROM users");
while(
$r_platz1    $db->fetch_array($q_platz1)){
$platz++;
# ------------------->
    
$q_platz         $db->query("SELECT * FROM game_rangliste ORDER by punkte DESC");
    while(
$r_platz    $db->fetch_array($q_platz)){
        
# Heute
        
$db->query("UPDATE game_rangliste SET platz = '$platz' WHERE userid = '$r_platz1[id]'");
    }
}

//////////////////////////////////////////////////////////////////////
// Ausgabe                                                            //
//////////////////////////////////////////////////////////////////////
echo "Ranglisten update durchgeführt";
?>
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Witze Off-Topic Diskussionen 7 09.07.2004 20:51

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php punkte aktualisieren

Alle Zeitangaben in WEZ +2. Es ist jetzt 12:13 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.