Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Sortierung nach Modifikation falsch [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Sortierung nach Modifikation falsch


 
dope76
31-03-2008, 21:38 
 
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 :confused: .

Hier der 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', 0 );
$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:

//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

 
tontechniker
31-03-2008, 22:30 
 
Umbrechen und Regeln (http://www.php-resource.de/forum/showthread.php?threadid=50454) lesen.

 
Kropff
31-03-2008, 22:33 
 
Original geschrieben von tontechniker
Umbrechen und Regeln (http://www.php-resource.de/forum/showthread.php?threadid=50454) lesen.
und zwar dalli! sonst wird dir nicht geholfen. ich muss selbst bei einer auflösung von 1600x1200 kilometerweit nach rechts scrollen!

peter

 
dope76
31-03-2008, 23:57 
 
Hallo,

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

Grüße
dope76

 
Kropff
01-04-2008, 09:29 
 
also für eine sortierfunktion sollte doch irgendwo in deinen sql-abfragen ein ORDER BY stehen, oder?

gruß
peter

 
dope76
01-04-2008, 21:24 
 
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:

array_multisort ($highscores);

um

array_multisort ($highscores, SORT_ASC);

oder

array_multisort ($highscores, SORT_DESC);

erweitere, wird auch nur auf den einzelnen Seiten sortiert, aber nicht über alle Seiten.

Grüße
Dope76

 
tontechniker
02-04-2008, 01:03 
 
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.

 
dope76
02-04-2008, 17:38 
 
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

 
tontechniker
03-04-2008, 00:31 
 
Benutzt mal den [code]-Tag - wenn ich das richtig sehe fehlt dir ein GROUP BY platz.

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 23:24 Uhr.