Sortierung nach Modifikation falsch

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Sortierung nach Modifikation falsch

    Hallo,

    Ich will ein Script für eine Joomla Komponente anpassen und eine Blätterfuntion miteinbauen.
    Die Blätterfuntion funtioniert auch schon.
    Das Problem ist, das die Sortierung mit der
    Blätterfunktion nicht mehr stimmt und ich
    jetzt langsam echt keinen Rat mehr habe .

    Hier der Code:

    PHP Code:
     class getHighScoresTab extends cbTabHandler {

        function 
    getHighScoresTab() {
            
    $this->cbTabHandler();
        }

        function 
    getDisplayTab($tab,$user,$ui) {
            global 
    $mosConfig_lang$mosConfig_absolute_path,
     
    $mosConfig_live_site$mosConfig_offset$database$my;

            
    $limit      mosGetParam$_REQUEST'limit'10 );
        
    $limitstart mosGetParam$_REQUEST'limitstart');
         
    $levellimit mosGetParam$_REQUEST'levellimit'10 );

        
    //Blaetterfunktion 
        
        
    $database->setQuery("SELECT count(*) FROM #__puarcade WHERE userid = ".$user->user_id." ;");
        
    $total $database->loadResult();
        require_once (
    $mosConfig_absolute_path.'/includes/pageNavigation.php');
        
    $limit $limit $limit 10 ;
        if ( 
    $total <= $limit $limitstart 0;
        
    $pageNav = new mosPageNav$total$limitstart$limit);
            
            
    //load variales
            //DEFINE('_UE_CBETAB_JOGFL_HEADER', "Highscores")
            
    $params=$this->params;
            
    $HStopicTXT $params->get('HStopicTXT'"Spiele von");
            
    $HScol1TXT $params->get('HScol1TXT'"Rang");
            
    $HScol2TXT $params->get('HScol2TXT'"Spiel");
            
    $HScol3TXT $params->get('HScol3TXT'"Punkte");
            
    $HSsryTXT $params->get('HSsryTXT',"Du kannst gerade nicht spielen!");
            
    $HSnoentryTXT $params->get('HSnoentryTXT',"Dieser Benutzer hat noch .........!");
                    
            
    DEFINE('_UE_CBTAB_PU_HEADER'"cbhighscoretab");
            
    //define content
            
    $content="<table width='100%' cellspacing=2 border=0>";

            
    //$content="<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" width=\"100%\">";
            
                    
        
    $database->setQuery("SELECT score, gameid FROM #__puarcade" .
                
    " WHERE userid = ".$user->user_id."" .
                        
    " LIMIT ".$pageNav->limitstart.", ".$pageNav->limit.";");
        
    $gameidscores $database->loadObjectList();
            
            
            
    //if-clause if a user have no entrys in score table

            
    if(count($gameidscores)){

            foreach(
    $gameidscores AS $gameidscore){
              
    //count useres who have more point than him. this result +1 is the rank
              
    $database->setQuery("SELECT count(*) FROM #__puarcade
     WHERE gameid="
    .$gameidscore->gameid." AND score > ".$gameidscore->score.";");
              
    $rank NULL;
              
    $rank=$database->loadResult() + 1;

              
    //get gamedata like picture and name
              
    $game_data NULL;
              
    $database->setQuery("SELECT gamename, imagename, published FROM #__puarcade_games 
    WHERE id="
    .$gameidscore->gameid.";");
              
    $database->loadObject$game_data );
              
    //check if game really exisits, or if theres only dead data in scores table
              
    if(isset($game_data->gamename)){
                
    $highscores[] = array($rank,$game_data->gamename,$game_data->imagename,
    $gameidscore->gameid,$game_data->published,$gameidscore->score);
             
              }
             
            }
            
    //Sort Array by Rank
            
    array_multisort($highscores );
             
     

             
    //TableHeader - Topic
            
    $content.="<tr><td class=sectiontableheader colspan=3 align=center.......
            
            //Pagecounter
        
    $content.="<tr><td class=sectiontableheader colspan=3
     align
    =left><nobr>".$pageNav->writePagesCounter()."</nobr></td></tr>";
            
            
            //TableHeader - Colnames
            
    $content.="........
            
    $content.="........
            
    $content.="........
            
    $row_class="1";
            foreach(
    $highscores as $placegamescore){
                
    $content.="<tr>";
                
    //1st column: Rank
                
    $rank_img=$mosConfig_live_site.
    "/components/com_comprofiler/plugin/user/plug_cbhighscorestab/";
                switch(
    $placegamescore[0]){
                case 
    1:
                     
    $rank_img.="gold.gif";
                     
    $content.="..........
                break;
                case 2:
                     
    $rank_img.="silber.gif";
                     
    $content.="..........
                break;
                case 
    3:
                     
    $rank_img.="bronze.gif";
                     
    $content.="..........
                break;
                default:
                     
    $rank_img.="neutral.gif";
                     
    $content.=".............
                }

                
    //2nd column: Game Thumbnail, Name and Link.             .
                
    .            
                .

    //3rd column: Score
                
    $content.="<td class='sectiontableentry".$row_class."'>
    <font size=\"4\"><div align=center>"
    .$placegamescore[5]."</td>";
                
    $content.="</tr>";

                
    //switch sectiontableentry every row
                
    if($row_class=="1"$row_class="2";
                else 
    $row_class="1";
            }

    $content.="<tr><td class=.....".sefRelToAbs($pageNav->writePagesLinks
    ("index.php?option=com_comprofiler&task=userProfile&user=&Itemid=66&index=
    "
    ._UE_CBTAB_PU_HEADER."&task=userProfile&user="
    .$user->user_id."" ...";
                    
            //
    $content.="</table>"
            } //end if clause
            else {
               
    $content.= "</table><div align=center><font size=1><b>".htmlspecialchars($HSnoentryTXT).
    "
    </b></font></div>";
            }
            //dont remove!!!
            
    $content.="<p><font size=1><div align=center></div></font>";



        return 
    $content;
        }

    }

    ?> 
    ohne Blätterfunktion hat es auch wunderbar funktioniert. Deswegen glaube ich, das folgende Zeile einfach falsch ist:
    PHP Code:
    //Sort Array by Rank
            
    array_multisort($highscores ); 
    Bin ich vollkommen auf dem Holzweg, oder gibt es eine andere (richtige) Möglichkeit die Einträge zu sortieren?

    Vielen Dank für eure Antworten im voraus. Bin echt über jede Hilfe Monsterdankbar

    Grüße
    Dope76
    Last edited by dope76; 31-03-2008, 23:55.

  • #2
    Umbrechen und Regeln lesen.
    Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

    Comment


    • #3
      Original geschrieben von tontechniker
      Umbrechen und Regeln lesen.
      und zwar dalli! sonst wird dir nicht geholfen. ich muss selbst bei einer auflösung von 1600x1200 kilometerweit nach rechts scrollen!

      peter
      Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
      Meine Seite

      Comment


      • #4
        Hallo,

        sorry. Hoffentlich ist es jetzt besser. Hab es mal verschmälert.

        Grüße
        dope76

        Comment


        • #5
          also für eine sortierfunktion sollte doch irgendwo in deinen sql-abfragen ein ORDER BY stehen, oder?

          gruß
          peter
          Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
          Meine Seite

          Comment


          • #6
            Hallo,

            wenn ich ein "Order by" in die mysql Abfragen einfüge zeigt er entweder
            überhaupt keine Einträge mehr an, oder alle angezeigten Plätze sind
            1.Plätze.

            Wenn ich die Zeile:

            PHP Code:
            array_multisort ($highscores); 
            um

            PHP Code:
            array_multisort ($highscoresSORT_ASC); 
            oder

            PHP Code:
            array_multisort ($highscoresSORT_DESC); 
            erweitere, wird auch nur auf den einzelnen Seiten sortiert, aber nicht über alle Seiten.

            Grüße
            Dope76

            Comment


            • #7
              wenn ich ein "Order by" in die mysql Abfragen einfüge zeigt er entweder überhaupt keine Einträge mehr an, oder alle angezeigten Plätze sind 1.Plätze.
              Dann machst du etwas falsch. Zeig mal.
              Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

              Comment


              • #8
                Hallo,

                Wenn ich diese Zeile:

                //count useres who have more point than him. this result +1 is the rank
                $database->setQuery("SELECT count(*) FROM #__puarcade WHERE
                gameid=".$gameidscore->gameid." AND score > "
                .$gameidscore->score.";");
                $rank = NULL;
                $rank=$database->loadResult() + 1;

                so abändere:

                //count useres who have more point than him. this result +1 is the rank
                $database->setQuery("SELECT count(*) FROM #__puarcade" .
                "WHERE gameid=".$gameidscore->gameid." AND
                score > ".$gameidscore->score."" .
                " ORDER by ".$limit.";");
                $rank = NULL;
                $rank=$database->loadResult() + 1;

                habe ich nur noch erste Plätze

                Jetzt fängt es langsam an im Oberstübchen zu funken

                Grüße
                dope76

                Comment


                • #9
                  Benutzt mal den [code]-Tag - wenn ich das richtig sehe fehlt dir ein GROUP BY platz.
                  Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

                  Comment

                  Working...
                  X