Jetzt kostenlos Anmelden!

archipage Männlich

kennt keine frische Luft

Beiträge: 456

Geschlecht: Männlich

PHPKIT Version: 1.6.1

1

Samstag, 3. Januar 2009, 14:26

Highscoreliste

Hey, also in diesem Thread PHP-Dateien auslesen und bearbeiten ging es ja darum die Highscores für jeweilige Spiele auszulesen.
habe nun in einem php-Forum nach Hilfe gesucht, seit über 1 Jahr habe ich ja keine Lösung gefunden. Dieser Ansatz wurde mir präsentiert:

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?php
$sql "SELECT DISTINCT(highscore_game) AS game FROM highscore";

$res mysql_query($sql) or die(mysql_error());

while($row mysql_fetch_assoc($res){

  $sql "SELECT highscore_player FROM highscore
WHERE highscore_game='".$row['game']."'
ORDER BY highscore_score DESC LIMT 3";
 
  $res1 mysql_query($sql) or die(mysql_error());
   
    $platz = array();

    $i 0// Zähler

    while($row1 mysql_fetch_assoc($res1){
       if($i == 0$platz[$row1['highscore_player']][$i]++;
       if($i == 1$platz[$row1['highscore_player']][$i]++;
       if($i == 2$platz[$row1['highscore_player']][$i]++;
       $i++;
    }
}

// das Ergebnis ist ein mehrdimenisonales Array

/********* Auswertung ********/
$user = array(); // das Ergebnis-Array
// Gewichtung: der erste Platz zählt z.B. 
// drei mal so viel wie ein dritter Platz
$g1 3$g2 2;
$g3 3;

foreach($platz as $key => $value){
   echo 'Name: '.$key;
   // noch keine Punkte:
   $user[$key] = 0;
   ifisset($platz[$key][0])) $user[$key] = $platz[$key][0]) * $g1;
   ifisset($platz[$key][1])) $user[$key] = $user[$key] + ($platz[$key][1]) * $g2);
   ifisset($platz[$key][2])) $user[$key] = $user[$key] + ($platz[$key][2]) * $g3);
   echo ' - Punkte: '.$user[$key].'<br />';
   }

// Und jetzt muß das Array noch mit usort sortiert werden,
// so daß die besten User oben stehn.
?>


ich bin absoluter php anfänger. deshalb habe ich auch probleme das ganze jetzt kit-konform zu gestalten und zu testen...
und alle die hier Ahnungv von php haben, denkt ihr diese Lösung funktioniert so?!

vorallendingen wie kann ich damit weiterarbeiten? mein ziel war es ja wie in dem angesprochenen Thread zu lesen eine Übersicht zu schaffen mit den Usern und belegten 1, 2 und 3 Plätzen. Nur ganz oben sollte natürlich derjendiges stehen der am meisten Plätze erreicht hat unter berücksichtigung einer Wertung. Heißt 1 Platz ist bsp 3mal soviel wert wie 3 Platz. Das ganze müsste ich ja noch da hin bearbeiten. doch ich versteeh den code oben nichtmals weshalb ich da natürlich auch nicht weiterarbeiten kann.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »archipage« (3. Januar 2009, 15:07)

  • Zum Seitenanfang
  • Zum Seitenende

archipage Männlich

kennt keine frische Luft

Beiträge: 456

Geschlecht: Männlich

PHPKIT Version: 1.6.1

2

Sonntag, 4. Januar 2009, 23:43

okay oben warn ncoh ein paar fehler drin die ich nun behoben habe. abe rnur syntax fehler bsz falsche tabellenanmen....


PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<?php
 eval("\$site_body .= \"".getTemplate("games/highscore")."\";"); 
$sql "SELECT DISTINCT(highscore_game) AS game FROM phpbb_ina_highscore";

$res mysql_query($sql) or die(mysql_error());

while($row mysql_fetch_assoc($res)) {

  $sql "SELECT highscore_player FROM phpbb_ina_highscore
WHERE highscore_game='".$row['game']."'
ORDER BY highscore_score DESC LIMIT 3";
 
  $res1 mysql_query($sql) or die(mysql_error());
   
    $platz = array();

    $i 0// Zähler

    while($row1 mysql_fetch_assoc($res1)) {
       if($i == 0$platz[$row1['highscore_player']][$i]++;
       if($i == 1$platz[$row1['highscore_player']][$i]++;
       if($i == 2$platz[$row1['highscore_player']][$i]++;
       $i++;
    }
}

// das Ergebnis ist ein mehrdimenisonales Array

/********* Auswertung ********/
$user = array(); // das Ergebnis-Array
// Gewichtung: der erste Platz zählt z.B. 
// drei mal so viel wie ein dritter Platz
$g1 3$g2 2;
$g3 3;

foreach($platz as $key => $value){
   // noch keine Punkte:
   $user[$key] = 0;
   if(isset($platz[$key][0])) $user[$key] = ($platz[$key][0]) * $g1;
   if(isset($platz[$key][1])) $user[$key] = $user[$key] + ($platz[$key][1]) * $g2;
   if(isset($platz[$key][2])) $user[$key] = $user[$key] + ($platz[$key][2]) * $g3;
 eval("\$site_body .= \"".getTemplate("games/highscore_tabelle")."\";");
   }
// Und jetzt muß das Array noch mit usort sortiert werden,
// so daß die besten User oben stehn.

usort(($user[$key]), sortier_funktion);
function sortier_funktion() { 

}

 eval("\$site_body .= \"".getTemplate("games/highscore_foot")."\";"); 
?>


problem muss das ganze Array ja noch sortieren mit usort und dann mit foreach das Array durchlaufen und Punkte anzeigen lassen.
die ausgabe bisher sieht einach so aus, dass nur Array angezeigt wird.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »archipage« (5. Januar 2009, 17:28)

  • Zum Seitenanfang
  • Zum Seitenende

2Bad4You Männlich

findet sich zurecht

Beiträge: 103

Geschlecht: Männlich

Wohnort: Neustadt/Wied

PHPKIT Version: keine

3

Dienstag, 6. Januar 2009, 20:15

Hey,

kann man die Ausgabe irgendwo mal sehen und möchtest du jetzt wissen wie man das ganze array sortiert? Wenn ja wie soll das denn sortiert sein?
  • Zum Seitenanfang
  • Zum Seitenende

archipage Männlich

kennt keine frische Luft

Beiträge: 456

Geschlecht: Männlich

PHPKIT Version: 1.6.1

4

Dienstag, 6. Januar 2009, 22:09

ja wie die sortierung und die ausgabe aussehen könnte.
bisher sieht das ganze ncoh so aus http://9876789.98.funpic.de/page/include…s/highscore.php

das ganze muss ja irgentwei so sortiert werden, das nach Punkten sortiert wird. der mit den meisten Punkten ganz oben natürlich...
ja und dann muss es irgentwi alles so in Variabeln gespeichert werden die ich im Template nutzen kann als Name und die jeweilige Platzanzahlk und natürlich Position in der hIghscoreliste.

Template für die Ausgabe sieht aktuell so aus:
highscore_tabelle.htm

Quellcode

1
2
3
4
5
6
7
8
<tr>
          <td class="standard">$platz</td>
          <td class="standard">$key</td>
          <td class="standard">$platz[$key][0]</td>
          <td class="standard">$platz[$key][1]</td>
          <td class="standard">$platz[$key][2]</td>
          <td class="standard">$user[$key]</td>
        </tr>
  • Zum Seitenanfang
  • Zum Seitenende

archipage Männlich

kennt keine frische Luft

Beiträge: 456

Geschlecht: Männlich

PHPKIT Version: 1.6.1

5

Montag, 12. Januar 2009, 12:36

nunja also phpBB auf dem das ganze basiert setzt das folgendermaßen um:

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
<?php
 /****************************************************************************
  *
  *                            arcade_highscore.php
  *                            ----------------------
  *   begin                : Sunday, January 29, 2006
  *   copyright            : (c) 2006 Painkiller
  *   email                : painkiller@runequake.com
  *
  *   $Id: arcade_highscore.php,v 2.0.13 2006/01/29 Painkiller Exp $
  *   Support @ http://deadzone.runecentral.com/forums/
  *   v 2.0.0 2006/01/29  23:00:35 Painkiller
  *
  ****************************************************************************
  *
  *   This program is free software; you can redistribute it and/or modify
  *   it under the terms of the GNU General Public License as published by
  *   the Free Software Foundation; either version 2 of the License, or
  *   (at your option) any later version.
  *
  ****************************************************************************
  *
  *   This is a MOD for phpbb v2.0.x + and the Activity/Arcade Mod v2.0.x +
  *   through v2.1.0.  The phpbb group has all rights to the phpbb source.
  *   They can be contacted at :
  *
  *      I-Net : www.phpbb.com
  *      E-Mail: support@phpbb.com
  *
  ****************************************************************************
  *     CREDITS:
  *  dEfEndEr - phpBB Activity / Arcade Mod © 2006 - v2.0.1 through v2.1.2
  *  -  Support: http://www.phpbb-arcade.com
  *  -    Email: < support@phpbb-arcade.com >
  *  Napoleon - Original Activity Mod v2.0.0
  ****************************************************************************/

define('IN_PHPBB'true);
$phpbb_root_path './';

include_once($phpbb_root_path 'extension.inc');
include_once($phpbb_root_path 'common.'.$phpEx);
include_once($phpbb_root_path 'includes/functions_arcade.'.$phpEx);
include_once($phpbb_root_path 'includes/bbcode.' .$phpEx);

//
// Start session management
//
$userdata session_pagestart($user_ipPAGE_HIGHSCORE);
init_userprefs($userdata);
$page_title $board_config['sitename'] . ' Monthly Highscores';
$user_id $userdata['user_id'];
include($phpbb_root_path 'includes/page_header.'.$phpEx);
$arcade_version $arcade->arcade_config('version');
//
// End session management
//

$template->set_filenames(array(
    'body' => 'arcade_highscore_body.tpl')
);

if ( !empty($HTTP_POST_VARS['date']) || !empty($HTTP_GET_VARS['date']) )
{
    $date = ( !empty($HTTP_POST_VARS['date']) ) ? $HTTP_POST_VARS['date'] : $HTTP_GET_VARS['date'];
}
else
{
    $date "0";
}

$curr_m date(m);
$curr_y date(Y);

if ($date >= $curr_m)
{
    $date $date $curr_m;
    if ($data == "0")
    {
        $highscore_date_y "1";
    }
    else
    {
        $highscore_date_y floor($date/12)+1;
    }
    $highscore_date_m 12 - ($date - (($highscore_date_y 1)*12));
    $highscore_date_y $curr_y $highscore_date_y;
}
else
{
    $highscore_date_m $curr_m $date;
    $highscore_date_y $curr_y;
}

if ($highscore_date_m == "1")
{
  $highscore_date $lang['highscore_jan']." ".$highscore_date_y;
}
elseif ($highscore_date_m == "2") {$highscore_date $lang['highscore_feb']." ".$highscore_date_y;}
elseif ($highscore_date_m == "3") {$highscore_date $lang['highscore_mar']." ".$highscore_date_y;}
elseif ($highscore_date_m == "4") {$highscore_date $lang['highscore_apr']." ".$highscore_date_y;}
elseif ($highscore_date_m == "5") {$highscore_date $lang['highscore_may']." ".$highscore_date_y;}
elseif ($highscore_date_m == "6") {$highscore_date $lang['highscore_jun']." ".$highscore_date_y;}
elseif ($highscore_date_m == "7") {$highscore_date $lang['highscore_jul']." ".$highscore_date_y;}
elseif ($highscore_date_m == "8") {$highscore_date $lang['highscore_aug']." ".$highscore_date_y;}
elseif ($highscore_date_m == "9") {$highscore_date $lang['highscore_sep']." ".$highscore_date_y;}
elseif ($highscore_date_m == "10") {$highscore_date $lang['highscore_oct']." ".$highscore_date_y;}
elseif ($highscore_date_m == "11") {$highscore_date $lang['highscore_nov']." ".$highscore_date_y;}
elseif ($highscore_date_m == "12") {$highscore_date $lang['highscore_dec']." ".$highscore_date_y;}
//
//  Get User Information (Group Membership, Rank and Level)
//  ready for the Activies Passing
//
$sql "SELECT g.group_id
    FROM " GROUPS_TABLE " g, " USER_GROUP_TABLE " ug
       WHERE ug.user_id = " $userdata['user_id'] . "
        AND ug.group_id = g.group_id
            AND ug.user_pending = 0
            AND g.group_single_user <> " TRUE "
             ORDER BY g.group_name, ug.user_id";
if ( !($result $db->sql_query($sql)) )
{
    message_die(GENERAL_ERROR'Error getting group information'''__LINE____FILE__$sql);
}
$group_ids $db->sql_fetchrowset($result);
//
//  Build a list of Groups that this user is a member of (add Group Zero)
//
$group_list '0';
for ($group_count 0$group_count count($group_ids); $group_count++)
{
   $group_list .= ', ' $group_ids[$group_count]['group_id'];
}
$level_required = isset($userdata['user_level']) ? $userdata['user_level'] : 0;
$rank_required = isset($userdata['user_rank']) ? $userdata['user_rank'] : 0;
//
// Main query
//
$sql "SELECT highscore_game, highscore_player, highscore_score, game_path, game_desc, game_id, image_path, win_width, win_height
        FROM ".iNA_HIGHSCORES .", "iNA_GAMES ."
          WHERE highscore_year = '".$highscore_date_y."'
           AND highscore_mon = '".$highscore_date_m."'
          AND highscore_game != ''
          AND game_name = highscore_game
        ORDER BY highscore_score DESC LIMIT 0,60";
if( !$result $db->sql_query($sql) )
{
    message_die(GENERAL_ERROR$lang['highscore_table_error'], ""__LINE____FILE__$sql);
}
$i "0";
$bgcounter 0;
$highscore_temp '';

while($row $db->sql_fetchrow($result))
{
    $i++;

    if ($i == "1")
    {
      $highscore_temp .= "<tr align=\"center\" valign=\"top\">\n";
    }
//
//  Get User Information (Group Membership, Rank and Level)
//  ready for the Activies Passing
//

    $highscore_game $row['highscore_game'];
    $highscore_image $row['image_path'];
    $highscore_player $row['highscore_player'];
    $highscore_score  $arcade->convert_score($row['highscore_score']) ? $arcade->convert_score($row['highscore_score']) : '';
  $row_bg_number = ($bgcounter++ % == 0) ? 2;

    $image_path ina_find_image($row['game_path'], $highscore_game$row['image_path']);

  $highscore_game_pic '<img src ="'$image_path .'" border="0" alt="'.$row['game_desc'].'" align="middle" width="'.$arcade->arcade_config['games_image_width'].'" height="'.$arcade->arcade_config['games_image_height'].'" >';
  $highscore_temp .= "<td width=\"20%\" height=\"19\" class=\"row".$row_bg_number."\"> <div align=\"center\"><a href=\"javascript:Gk_PopTart('activity.php?mode=game&amp;id=".$row['game_id']. "', 'Game_Windows', ".$row['win_width'].", ".$row['win_height'].", 'no')\">".$highscore_game_pic."</a><br /><span class=\"gen\">$row[game_desc]</span><br /><b><span class=\"gen\">".$highscore_player." : ".$highscore_score."</span></b></div></td>\n";

// Set output to be 5 rows across
    if ($i == "5")
    {
      $highscore_temp .= "</tr>\n";
      $i "0";
    }
}

if ($i "0")
{
  $leftover = ($i);
  if ($leftover 0)
  {
      for ($j 0$j $leftover$j++)
      {
            $row_bg_number = ($bgcounter++ % == 0) ? 2;
            $highscore_temp .= "<td width=\"20%\" height=\"19\" class=\"row".$row_bg_number."\">&nbsp;</td>\n";
      }
        $highscore_temp .= "</tr>\n";
    }
}

if ($bgcounter == "0")
{
    $highscore_temp "<tr align=\"center\" valign=\"top\">\n<td class=\"row1\">".$lang['highscore_no_score']."</td></tr>";
}

if($HTTP_POST_VARS['cat_id'] > 0)
{
  $cat_id intval($HTTP_POST_VARS['cat_id']);

  $sql "SELECT * FROM " iNA_CAT "
            WHERE cat_id = " $cat_id;
  if(!$result $db->sql_query($sql))
    {
         message_die(GENERAL_ERROR$lang['no_game_data'], ''__LINE____FILE__$sql);
    }
    $cat_info $db->sql_fetchrow($result);
    $catagory_name $cat_info['cat_name'];
}
else
{
  $catagory_name $lang['all_games'];
}

// Display Board Index and Games Category navigation at the bottom of the Monthly Highscore page
$url ' &raquo; <a href="activity.' $phpEx '" class="nav">' $lang['games_catagories'] . '</a> &raquo; <a href="activity.' $phpEx '?mode=cat&amp;cat_id=' $cat_id '&amp;start=' $start '&amp;sort_mode=' $sort_mode '&amp;order=' $order '" class="nav">'.$catagory_name.'</a>';

if($arcade->arcade_config['games_per_page'] > 0)
{
        $sql "SELECT count(*) AS total FROM " iNA_HIGHSCORES;
        if($highscore_id 0)
        {
            $sql .= " WHERE highscore_id = '" $highscore_id "'";
        }
        if ( !($result $db->sql_query($sql)) )
        {
            message_die(GENERAL_ERROR$lang['no_game_total'], ''__LINE____FILE__$sql);
        }
        $total $db->sql_fetchrow($result);
        $total_highscores $total['total'];
}

$template->assign_vars(array(
        'HIGHSCORE_INPUT' => highscore_jump_box(),
        'HIGHSCORE_TEMP' => $highscore_temp,
        'HIGHSCORE_DATE' => $lang['highscore_table_header']." ".$highscore_date,
        'U_CAT' => $url,
        'S_HIDDEN_OPTIONS' => '<input type="hidden" name="redirect" value="' $filename '">',
        'ARCADE_MOD' => sprintf($lang['activitiy_mod_info'], $arcade->version() )));

//
// Generate the page
//
$template->pparse('body');
         echo "<br /><center><font face='Arial' size='-2'>Arcade Highscore Mod by Painkiller</font></center>";

include($phpbb_root_path 'includes/page_tail.'.$phpEx);

?>


ob das irgentwei weiterhelfen kann weiß ich nicht ich durchschau das ganze nicht so ganz bzw kann mir keine Schlüsse daraus ziehen wie ich das dann umsetzen kann.
  • Zum Seitenanfang
  • Zum Seitenende

Ähnliche Themen