[BETA] EURO 2008 Webtipp

In diesem Forum können Mod-Autoren ihre Mods vorstellen, die sich noch im Entwicklungsstatus befinden. Der Einbau in Foren im produktiven Betrieb wird nicht empfohlen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Toxic82
Mitglied
Beiträge: 7
Registriert: 09.06.2008 09:17

Beitrag von Toxic82 »

@buegelfalte

Kannst Du mal bitte nochmal den Link zu deinem Code bzgl. der Rangliste geben.

Ich habe ebenfalls die Rangliste gefixt, so dass sie bisher so funktioniert wie sie soll.

Nur ich habe den Code an einigen Stellen komplett ändern müssen. Ich würde gern deinen Code mit meinem Vergleichen, dann kann ich ja mal posten was ich habe vllt schaffen wir es dann, alle User glücklich zu stellen ;)
Benutzeravatar
buegelfalte
Mitglied
Beiträge: 759
Registriert: 16.02.2005 14:32
Wohnort: Köln
Kontaktdaten:

Beitrag von buegelfalte »

einfach zurückblättern

da gibts aber nicht mehr viel zu vergleichen, der Code funktioniert ;)
http://www.beehave.de - home of humbug - und zocken !
[kein Support per PN]
Toxic82
Mitglied
Beiträge: 7
Registriert: 09.06.2008 09:17

Beitrag von Toxic82 »

Also falls s doch jemanden Interessiert, vllt diejendigen wo es nicht gehen soll. :grin:

Meine em_stats.php sieht gleich aus, ich habe nur was an 2 Funktionen geändert:

Mein Code sieht so aus:



functions_em.php

Code: Alles auswählen


function get_em_user_points_up_to_yesterday() {

	global $db;

	// Load Config
	$em_config    = array();  // Config values
	$em_config    = get_em_config();

	$timestamp_last_game_before_this_day = get_timestamp_for_ranking_history();

	//
	// Get users data
	//

	$int_userpkt = -1;
	$int_userpos = 0;

	$sql = "SELECT A.tipp_user , sum( A.tipp_points ) AS user_points, count( A.tipp_points ) AS user_total_tipps, count(
       B.tipp_points ) AS user_points_tendency, count( C.tipp_points ) AS user_points_difference, count( D.tipp_points ) AS user_points_result
       FROM  " . EM_TIPPS_TABLE . " A
       LEFT JOIN " . EM_TIPPS_TABLE . " B ON A.tipp_id = B.tipp_id
       AND A.tipp_points = " . $em_config['points_tendency'] . "
       LEFT JOIN " . EM_TIPPS_TABLE . " C ON A.tipp_id = C.tipp_id
       AND A.tipp_points = " . $em_config['points_tordiff'] . "
       LEFT JOIN " . EM_TIPPS_TABLE . " D ON A.tipp_id = D.tipp_id
       AND A.tipp_points >= " . $em_config['points_match'] . "
       inner join (Select game_id, Game_time FROM " . EM_GAMES_TABLE . " Union Select game_id, Game_time FROM " . EM_FINALS_TABLE . ") as E on E.game_id = A.tipp_game and   E.game_time  < ". intval($timestamp_last_game_before_this_day) ."
       GROUP BY A.tipp_user
       ORDER BY user_points DESC, user_points_result DESC, user_points_difference DESC, user_points_tendency DESC, tipp_user ASC";

	if( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Could not get historical user tipps data', '', __LINE__, __FILE__, $sql);
	}

	$em_user_points_up_to_yesterday = array();
	while ( $row = $db->sql_fetchrow($result) )
	{
		//   $em_users[][$row['tipp_user']] = $row;

		if ($int_userpkt != $row['user_points']) {$int_userpos =  $int_userpos + 1;}

		$int_userpkt =$row['user_points'];
		$tipp_id =    $row['tipp_user'];

		$em_user_points_up_to_yesterday[$tipp_id] =   $int_userpos;
		
	}
	$db->sql_freeresult($result);
    #print_r($em_user_points_up_to_yesterday);
	return $em_user_points_up_to_yesterday;
}

Code: Alles auswählen

 function get_rank_of_yesterday($userid){


   $em_user_points_up_to_yesterday = get_em_user_points_up_to_yesterday();



   $rank_of_yesterday = $em_user_points_up_to_yesterday[intval($userid)];


    return $rank_of_yesterday;
 }
Bei mir hat das array_search nicht funktioniert, warum auch immer. Es kam dadurch immer fehlerhafte Ergebnisse. Den Code wie ich ihn jetzt habe, sollte auch mit php < 4.0.5 funktionieren.
Benutzeravatar
buegelfalte
Mitglied
Beiträge: 759
Registriert: 16.02.2005 14:32
Wohnort: Köln
Kontaktdaten:

Beitrag von buegelfalte »

Toxic82 hat geschrieben:Also falls s doch jemanden Interessiert, vllt diejendigen wo es nicht gehen soll. :grin:
Meine em_stats.php sieht gleich aus, ich habe nur was an 2 Funktionen geändert:
Wenn deine em_stats.php identisch mit meiner ist, machen deine Änderungen an den Funktionen auch nichts anderes als mein Code ...
http://www.beehave.de - home of humbug - und zocken !
[kein Support per PN]
Toxic82
Mitglied
Beiträge: 7
Registriert: 09.06.2008 09:17

Beitrag von Toxic82 »

buegelfalte hat geschrieben:
Toxic82 hat geschrieben:Also falls s doch jemanden Interessiert, vllt diejendigen wo es nicht gehen soll. :grin:
Meine em_stats.php sieht gleich aus, ich habe nur was an 2 Funktionen geändert:
Wenn deine em_stats.php identisch mit meiner ist, machen deine Änderungen an den Funktionen auch nichts anderes als mein Code ...
Jaein. Zumindest das array_search könnte bei einigen Usern Probleme hervorrufen.

In der em_stats.php wird ja auch nur der übermittelte Wert (alte Postition) mit dem neuen Wert (neue Position) verglichen. Das ermitteln der alten Position ist ja aber in der function_em.php.

Ich hatte das Gefühl, dass das Array, welches mit der Userid und der alten Position gefüllt wurde, fehlerhaft durch das array_search übermittel wurde. Und dadurch der Vergleich beider Positionen in der em_stats.php ebenfalls fehlerhaft war. Du nutzt, wenn ich deinen Code richtig angeschaut habe, auch das array_search, um die alte Postion der jeweiligen Userid zu ermitteln.

Einfacher ist es aber, einfach das Array so zu speichern, dass die alte Position ermittelt wird, diese dann dem Array-Key zugewiesen wird.

bsp. User mit der ID 12 war gestern 4 Platz.

Code: Alles auswählen


$em_user_points_up_to_yesterday[$tipp_id] =   $int_userpos; 

Array( [12]=> 4)
damit hat der User mit ID 12 den genauen Wert. Warum soll man dann noch nach dem Wert suchen?, Einfacher ist es, einfach seinen Wert auszugeben.

Code: Alles auswählen

   $rank_of_yesterday = $em_user_points_up_to_yesterday[intval($userid)]; 

   $rank_of_yesterday = $em_user_points_up_to_yesterday[12]; 

$rank_of_yesterday = 4
Ohne ein array_search, welches bei einigen Usern mit php < 4.0.5 eh nicht funktioniert.
Benutzeravatar
buegelfalte
Mitglied
Beiträge: 759
Registriert: 16.02.2005 14:32
Wohnort: Köln
Kontaktdaten:

Beitrag von buegelfalte »

Toxic82 hat geschrieben:
buegelfalte hat geschrieben:Wenn deine em_stats.php identisch mit meiner ist, machen deine Änderungen an den Funktionen auch nichts anderes als mein Code ...
Jaein. Zumindest das array_search könnte bei einigen Usern Probleme hervorrufen.
Benutze ich das denn ? Nö. :)
Toxic82 hat geschrieben:Einfacher ist es aber, einfach das Array so zu speichern, dass die alte Position ermittelt wird, diese dann dem Array-Key zugewiesen wird.
Richtig, und genau das macht mein Code ...
http://www.beehave.de - home of humbug - und zocken !
[kein Support per PN]
Toxic82
Mitglied
Beiträge: 7
Registriert: 09.06.2008 09:17

Beitrag von Toxic82 »

buegelfalte hat geschrieben:
Toxic82 hat geschrieben:
buegelfalte hat geschrieben:Wenn deine em_stats.php identisch mit meiner ist, machen deine Änderungen an den Funktionen auch nichts anderes als mein Code ...
Jaein. Zumindest das array_search könnte bei einigen Usern Probleme hervorrufen.
Benutze ich das denn ? Nö. :)
Toxic82 hat geschrieben:Einfacher ist es aber, einfach das Array so zu speichern, dass die alte Position ermittelt wird, diese dann dem Array-Key zugewiesen wird.
Richtig, und genau das macht mein Code ...
Ok, jetzt seh ichs :oops:

Ich habe scheinbar nicht den Quellcode hier im Forum beachtet, sondern den aus der 0.7 Version. Ich sehe, dass Du direkt die Funktion ohne die array_search Funktion aufrufst :D.

Dann ist es tatsächlich die gleich :)
Benutzeravatar
buegelfalte
Mitglied
Beiträge: 759
Registriert: 16.02.2005 14:32
Wohnort: Köln
Kontaktdaten:

Beitrag von buegelfalte »

Toxic82 hat geschrieben:Ich habe scheinbar nicht den Quellcode hier im Forum beachtet, sondern den aus der 0.7 Version.
Jo, da war der Fehler noch drin, mein Code kam erst nachher ;)
http://www.beehave.de - home of humbug - und zocken !
[kein Support per PN]
svenfranzisko
Mitglied
Beiträge: 4
Registriert: 03.11.2007 15:27

Beitrag von svenfranzisko »

Ich habe eben eine SMS eines Tippers erhalten, er beschreibt er hätte ein paar Tipps geändert und hätte plötzlich 3 Punkte mehr.

Ich hab mir das mal angesehen, er hat auf einmal 6 Punkte für jeden Exakten Tipp erhalten anstatt den eingestellten 5.

Bild wie es sein sollte:
[ externes Bild ]

Nach der Änderung von Tipps:
[ externes Bild ]

Jemand ne Idee was das sein könnte?
Wenn das öfter passiert kann ich das Teil dicht machen!

Gruß, Svenfranzisko


Edit:
Ich hab die Option "Zusatzpunkte für Tippgeschick " aktiv, dass wäre ja die Einzige Möglichkeit 6 Punkte zu bekommen, dass Ergebnis hatten aber 3 Tipper richtig.
Zuletzt geändert von svenfranzisko am 09.06.2008 11:24, insgesamt 1-mal geändert.
Benutzeravatar
buegelfalte
Mitglied
Beiträge: 759
Registriert: 16.02.2005 14:32
Wohnort: Köln
Kontaktdaten:

Beitrag von buegelfalte »

svenfranzisko hat geschrieben:Wenn das öfter passiert kann ich das Teil dicht machen!
entspann dich, svenhamm 8)

das hatte ich hier schon behoben (bevor du jetzt 73 Seiten nachliest)
http://www.phpbb.de/viewtopic.php?p=999398#999398

einfach das Ergebnis nach der Änderung nochmal neu speichern, dann klappts auch mit den Punkten !
http://www.beehave.de - home of humbug - und zocken !
[kein Support per PN]
Antworten

Zurück zu „phpBB 2.0: Mods in Entwicklung“