ERLEDIGT
NEIN
NEIN
ANTWORTEN
11
11
ZUGRIFFE
541
541
EMPFEHLEN
-
Hallo,
ich habe ein ladder script geschrieben, welches nun einige Nutzer hat. Mein Problem ist nun wenn ich die Ausgabe der Tabellenplätze uf eine bestimmte anzahl setzen möchte und man dann über eine blätter Funktion weiter auf die hinteren plätze navigiert es die plätze pro Seite immer neu berechnet.
bisher schaut es so aus Beispiel
Wenn ich aber eben die Blätter Funktion einbau schaut das ganze so aus
[ur=http://coc.dvrdns.org/apache2-default/2n2ladderTEST/test/ladderLowTable.php?none=0&start=0]Beispiel[/url]
Damit man es nach voll ziehen kann sollte man bei der navigation dann z.B. auf Seite zwei oder drei klicken
so schaut das script bisher aus
PHP-Code:<title>1on1Ladder Low</title>
<body>
<center><h1>Tabelle</h1></center>
<table width="100%" border="1" cellspacing="0" cellpadding="1"><!--DWLayoutTable-->
<br>
<br><br>
<tr>
<td><b>Platz</b></td>
<td><b>Spieler</b></td>
<td><b>Sp.</b></td>
<td><b>S</b></td>
<td><b>N</b></td>
<td><b>Winratio</b></td>
<td><b>Punkte</b></td>
<?php
$rank=1;
$i=1;
$sql = mysql_query('SELECT COUNT(*) AS count FROM 2n2repasmusers'); // Tabelle zum zählen
$end = 5; // Wieviel Ausgaben pro Seite?
$url = '<a href="./'.basename($_SERVER['PHP_SELF']).'?none=0'; // Standardlink (z.B. ?action=home (also dann "none=0" durch "action=home" ersetzen)
// "none=0" stehen lassen oder ersetzen, aber nicht entfernen, da sonst fehler enstehen
/* AB HIER NICHTS MEHR ÄNDERN */
/**[ Code by LLCoolDannY - http://www.llcooldanny ]**/
$anz = mysql_result($sql, 0, 'count'); // Anzahl
mysql_free_result($sql);
$ges = ceil($anz / $end);
$start = !isset($_GET['start']) ? $start = 0 : $_GET['start']*$end;
$nStart = !isset($_GET['start']) ? $start = 0 : $_GET['start'];
$link = '';
$ges += 1;
if($nStart>=($ges)) {
die('Seite existiert nicht!');
}
$link .= ($nStart==0 ? '' : $url.'&start='.($nStart-1).'">« Zurück</a> ');
if($ges>7) {
$ret = array();
for($i=1;$i<=$ges;$i++) {
$ret[] = (($i-1)!=$nStart ? $url.'&start='.($i-1).'">['.$i.']</a> ' : $i.' ');
}
if($nStart<5 && $nStart>1) {
for($j=0;$j<2+$nStart;$j++) {
$link .= $ret[$j];
}
} else {
for($j=0;$j<3;$j++) {
$link .= $ret[$j];
}
}
$link .= ($nStart<=($ges-5) ? ($nStart>=5 ? ' ... '.$ret[$nStart-1].$ret[$nStart].(isset($ret[$nStart+1]) ? $ret[$nStart+1] : '') : '') : '');
$link .= ' ... '.($nStart==$ges-4 ? $ret[$ges-4] : '').$ret[$ges-3].$ret[$ges-2].$ret[$ges-1];
} else {
for($i=1;$i<=$ges;$i++) {
$link .= (($i-1)!=$nStart ? $url.'&start='.($i-1).'">['.$i.']</a> ' : $i.' ');
}
}
$link .= ($nStart==($ges-1) ? '' : ' '.$url.'&start='.($nStart+1).'">Weiter »</a>');
$sql = 'SELECT * FROM 2n2repasmusers ORDER BY punkte DESC LIMIT '.$start.', '.$end;
$query = mysql_query($sql);
while ($ds = mysql_fetch_object($query))
{
$id = $ds ->userID;
$nick = $ds ->spieler;
$punkte = $ds ->punkte;
$s = $ds ->wins;
$n = $ds ->lose;
$anzahlspiele = $s + $n;
$pt[$i]=$punkte;
if(isset($pt[($i-1)]) && $pt[$i]!=$pt[($i-1)])
$rank++;
$i++;
if($punkte < 500)
{
$rankname = "D-";
}
elseif($punkte < 2000)
{
$rankname = "D";
}
elseif($punkte < 3000)
{
$rankname = "D+";
}
elseif($punkte < 4000)
{
$rankname = "C-";
}
elseif($punkte < 5000)
{
$rankname = "C";
}
elseif($punkte < 6000)
{
$rankname = "C+";
}
elseif($punkte < 7000)
{
$rankname = "B-";
}
elseif($punkte < 8000)
{
$rankname = "B";
}
elseif($punkte < 9000)
{
$rankname = "B+";
}
elseif($punkte < 10500)
{
$rankname = "A-";
}
elseif($punkte < 12000)
{
$rankname = "A";
}
else
{
$rankname = "A+";
}
if($anzahlspiele >= 1)
{
$winratio = ($s / $anzahlspiele) *100;
$winratio = number_format($winratio,2,".",",");
}
else
{
$winratio = 0;
}
echo "<tr><td><b>#$rank</td><td><img src=ranks/$rankname.jpg><a href=\"playerdetails.php?id=$id&nick=$nick&punkte=$punkte\" target=\"_self\">$nick</a></td><td>$anzahlspiele</td><td>$s</td><td>$n</td><td>$winratio %</td><td><b>$punkte</td></b>";
}
echo "<table><tr><td>$link;</td></table>";
// Einfach mit $link ausgeben
mysql_close();
?>
</table></body></html>
-
So vielleicht:
PHP-Code:$i = 0;
while($ds = [...])
{
[...]
if( $i === 0 )
{
$strSql = "SELECT COUNT(*) AS `rank` FROM `2n2repasmusers` WHERE `punkte` < ". $punkte ." GROUP BY `punkte` ORDER BY `punkte` DESC";
$intResult = mysql_query($strSql);
$arrRow = mysql_fetch_assoc($intResult);
$rank = intval($arrRow['rank']);
}
[...]
}
-
Du solltest die Variable $rank nicht mit 1 initialisieren.
Am einfachsten du schreibst die Variable $start nachdem du diese berechnet hast in $rank.
Grüße
-
komme da gerade nicht mit aber @chainy
hast du es so gemeint?
PHP-Code:$sql = 'SELECT * FROM 2n2repasmusers ORDER BY punkte DESC LIMIT '.$start.', '.$end;
$query = mysql_query($sql);
$i = 0;
while ($ds = mysql_fetch_object($query))
{
$id = $ds ->userID;
$nick = $ds ->spieler;
$punkte = $ds ->punkte;
$s = $ds ->wins;
$n = $ds ->lose;
$anzahlspiele = $s + $n;
/* $pt[$i]=$punkte;
if(isset($pt[($i-1)]) && $pt[$i]!=$pt[($i-1)])
$rank++;
$i++;*/
if($punkte < 500)
{
$rankname = "D-";
}
elseif($punkte < 2000)
{
$rankname = "D";
}
elseif($punkte < 3000)
{
$rankname = "D+";
}
elseif($punkte < 4000)
{
$rankname = "C-";
}
elseif($punkte < 5000)
{
$rankname = "C";
}
elseif($punkte < 6000)
{
$rankname = "C+";
}
elseif($punkte < 7000)
{
$rankname = "B-";
}
elseif($punkte < 8000)
{
$rankname = "B";
}
elseif($punkte < 9000)
{
$rankname = "B+";
}
elseif($punkte < 10500)
{
$rankname = "A-";
}
elseif($punkte < 12000)
{
$rankname = "A";
}
else
{
$rankname = "A+";
}
if($anzahlspiele >= 1)
{
$winratio = ($s / $anzahlspiele) *100;
$winratio = number_format($winratio,2,".",",");
}
else
{
$winratio = 0;
}
if( $i === 0 )
{
$strSql = "SELECT COUNT(*) AS `rank` FROM `2n2repasmusers` WHERE `punkte` < ". $punkte ." GROUP BY `punkte` ORDER BY `punkte` DESC";
$intResult = mysql_query($strSql);
$arrRow = mysql_fetch_assoc($intResult);
$rank = intval($arrRow['rank']);
}
echo "<tr><td><b>#$rank</td><td><img src=ranks/$rankname.jpg><a href=\"playerdetails.php?id=$id&nick=$nick&punkte=$punkte\" target=\"_self\">$nick</a></td><td>$anzahlspiele</td><td>$s</td><td>$n</td><td>$winratio %</td><td><b>$punkte</td></b>";
}
echo "<table><tr><td>$link;</td></table>";
}
// Einfach mit $link ausgeben
mysql_close();
-
ne, versuch's mal so:
PHP-Code:$sql = 'SELECT * FROM 2n2repasmusers ORDER BY punkte DESC LIMIT '.$start.', '.$end;
$query = mysql_query($sql);
$i = 0;
while ($ds = mysql_fetch_object($query))
{
$id = $ds ->userID;
$nick = $ds ->spieler;
$punkte = $ds ->punkte;
$s = $ds ->wins;
$n = $ds ->lose;
$anzahlspiele = $s + $n;
if( $i === 0 )
{
$strSql = "SELECT COUNT(*) AS `rank` FROM `2n2repasmusers` WHERE `punkte` < ". $punkte ." GROUP BY `punkte` ORDER BY `punkte` DESC";
$intResult = mysql_query($strSql);
$arrRow = mysql_fetch_assoc($intResult);
$rank = intval($arrRow['rank']);
}
$pt[$i]=$punkte;
if(isset($pt[($i-1)]) && $pt[$i]!=$pt[($i-1)])
$rank++;
$i++;
if($punkte < 500)
{
$rankname = "D-";
}
elseif($punkte < 2000)
{
$rankname = "D";
}
elseif($punkte < 3000)
{
$rankname = "D+";
}
elseif($punkte < 4000)
{
$rankname = "C-";
}
elseif($punkte < 5000)
{
$rankname = "C";
}
elseif($punkte < 6000)
{
$rankname = "C+";
}
elseif($punkte < 7000)
{
$rankname = "B-";
}
elseif($punkte < 8000)
{
$rankname = "B";
}
elseif($punkte < 9000)
{
$rankname = "B+";
}
elseif($punkte < 10500)
{
$rankname = "A-";
}
elseif($punkte < 12000)
{
$rankname = "A";
}
else
{
$rankname = "A+";
}
if($anzahlspiele >= 1)
{
$winratio = ($s / $anzahlspiele) *100;
$winratio = number_format($winratio,2,".",",");
}
else
{
$winratio = 0;
}
echo "<tr><td><b>#$rank</td><td><img src=ranks/$rankname.jpg><a href=\"playerdetails.php?id=$id&nick=$nick&punkte=$punkte\" target=\"_self\">$nick</a></td><td>$anzahlspiele</td><td>$s</td><td>$n</td><td>$winratio %</td><td><b>$punkte</td></b>";
}
echo "<table><tr><td>$link;</td></table>";
}
// Einfach mit $link ausgeben
mysql_close();
-
Nein das geht leider auch nicht
es funktioniert auf Seite zwei noch aber ab der Seite drei beginnt es wieder von 1
-
Dann bleibt Dir wohl nichts anderes übrig, als das ganze mal vernünftig zu debuggen. Lass dir mal die Query ausgeben und setz sie mal über den pma selbst ab und schau dir das Ergebnis an....
-
Uhm.. was meinst du mit pma?
was soll da debugged werden hat doch alles seine Richtigkeit error Reporting all ist auch drinnen und es kommen keine Fehler.
ich habe Hier im Forum noch einmal etwas gesucht und auch was gefunden allerdings klappt es bei mir nicht.
Es heißt das es so gehen sollteBei mir kommt aber Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /var/www/apache2-default/2n2ladderTEST/test/ladderLowTable.php on line 105SELECT
t1.`id`,
t1.`name`,
t1.`punkte`,
t1.`geld`,
(SELECT
(COUNT(*)+1)
FROM userrang AS t2
WHERE t2.`Punkte`>t1.`punkte`
) AS `Rang`
FROM userrang AS t1
ORDER BY `Rang`
das ist diese Zeilehier der CodePHP-Code:while ($ds = mysql_fetch_object($query))
PHP-Code:error_reporting(E_ALL);
$sql = mysql_query('SELECT COUNT(*) AS count FROM 2n2repasmusers'); // Tabelle zum zählen
$end = 5; // Wieviel Ausgaben pro Seite?
$url = '<a href="./'.basename($_SERVER['PHP_SELF']).'?none=0'; // Standardlink (z.B. ?action=home (also dann "none=0" durch "action=home" ersetzen)
// "none=0" stehen lassen oder ersetzen, aber nicht entfernen, da sonst fehler enstehen
/* AB HIER NICHTS MEHR ÄNDERN */
/**[ Code by LLCoolDannY - http://www.llcooldanny ]**/
$anz = mysql_result($sql, 0, 'count'); // Anzahl
mysql_free_result($sql);
$ges = ceil($anz / $end);
$start = !isset($_GET['start']) ? $start = 0 : $_GET['start']*$end;
$nStart = !isset($_GET['start']) ? $start = 0 : $_GET['start'];
$link = '';
$ges += 1;
if($nStart>=($ges)) {
die('Seite existiert nicht!');
}
$link .= ($nStart==0 ? '' : $url.'&start='.($nStart-1).'">« Zurück</a> ');
if($ges>7) {
$ret = array();
for($i=1;$i<=$ges;$i++) {
$ret[] = (($i-1)!=$nStart ? $url.'&start='.($i-1).'">['.$i.']</a> ' : $i.' ');
}
if($nStart<5 && $nStart>1) {
for($j=0;$j<2+$nStart;$j++) {
$link .= $ret[$j];
}
} else {
for($j=0;$j<3;$j++) {
$link .= $ret[$j];
}
}
$link .= ($nStart<=($ges-5) ? ($nStart>=5 ? ' ... '.$ret[$nStart-1].$ret[$nStart].(isset($ret[$nStart+1]) ? $ret[$nStart+1] : '') : '') : '');
$link .= ' ... '.($nStart==$ges-4 ? $ret[$ges-4] : '').$ret[$ges-3].$ret[$ges-2].$ret[$ges-1];
} else {
for($i=1;$i<=$ges;$i++) {
$link .= (($i-1)!=$nStart ? $url.'&start='.($i-1).'">['.$i.']</a> ' : $i.' ');
}
}
$link .= ($nStart==($ges-1) ? '' : ' '.$url.'&start='.($nStart+1).'">Weiter »</a>');
$sql = "SELECT t1.`userID`,t1.`spieler`,t1.`punkte`,t1.`wins`,t1.`lose` (SELECT
(COUNT(*)+1) FROM 2n2repasmusers AS t2 WHERE t2.`Punkte`>t1.`punkte`) AS `Rang` FROM 2n2repasmusers AS t1 ORDER BY `Rang` LIMIT ".$start.", ".$end;
$query = mysql_query($sql);
while ($ds = mysql_fetch_object($query))
{
$id = $ds ->userID;
$nick = $ds ->spieler;
$punkte = $ds ->punkte;
$s = $ds ->wins;
$n = $ds ->lose;
$anzahlspiele = $s + $n;
/* $pt[$i]=$punkte;
if(isset($pt[$i-1]) && $pt[$i]!=$pt[$i-1])
$rank++;
$i++;*/
if($punkte < 500)
{
$rankname = "D-";
}
elseif($punkte < 2000)
{
$rankname = "D";
}
elseif($punkte < 3000)
{
$rankname = "D+";
}
elseif($punkte < 4000)
{
$rankname = "C-";
}
elseif($punkte < 5000)
{
$rankname = "C";
}
elseif($punkte < 6000)
{
$rankname = "C+";
}
elseif($punkte < 7000)
{
$rankname = "B-";
}
elseif($punkte < 8000)
{
$rankname = "B";
}
elseif($punkte < 9000)
{
$rankname = "B+";
}
elseif($punkte < 10500)
{
$rankname = "A-";
}
elseif($punkte < 12000)
{
$rankname = "A";
}
else
{
$rankname = "A+";
}
if($anzahlspiele >= 1)
{
$winratio = ($s / $anzahlspiele) *100;
$winratio = number_format($winratio,2,".",",");
}
else
{
$winratio = 0;
}
echo "<tr><td><b>#$Rang</td><td><img src=ranks/$rankname.jpg><a href=\"playerdetails.php?id=$id&nick=$nick&punkte=$punkte\" target=\"_self\">$nick</a></td><td>$anzahlspiele</td><td>$s</td><td>$n</td><td>$winratio %</td><td><b>$punkte</td></b>";
}
echo "<table><tr><td>$link;</td></table>";
// Einfach mit $link ausgeben
mysql_close();
?>
</table></body></html>
Geändert von EddieG (20.02.08 um 13:32 Uhr)
-
Mit pma meinte ich PHPMyAdmin...
mysql_query($sql) or die(mysql_error()); und die Fehlermeldung wird sich darauf beziehen, dass er nicht nach `Rang` sortieren kann....
-
die Meldung lautet[quote ]
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT (COUNT(*)+1) FROM 2n2repasmusers AS t2 WHERE t2.`Punkte`>t1.`punkte`)' at line 1
[/quote]
sehe da aber keinen Fehler
-
Welche MySQL Version hast du? Möglicherweise unterstützt deine MySQL Version keine Subselects...
-
ich habe den Fehler es hat ein Komma gefehlt
und so ist es richtigPHP-Code:$sql = "SELECT t1.`userID`,t1.`spieler`,t1.`punkte`,t1.`wins`,t1.`lose` (SELECT
(COUNT(*)+1) FROM 2n2repasmusers AS t2 WHERE t2.`Punkte`>t1.`punkte`) AS `Rang` FROM 2n2repasmusers AS t1 ORDER BY `Rang` LIMIT ".$start.", ".$end;
was mich bloß wundert ist dasPHP-Code:$sql = "SELECT t1.`userID`,t1.`spieler`,t1.`punkte`,t1.`wins`,t1.`lose`, (SELECT
(COUNT(*)+1) FROM 2n2repasmusers AS t2 WHERE t2.`Punkte`>t1.`punkte`) AS `Rang` FROM 2n2repasmusers AS t1 ORDER BY `Rang` LIMIT ".$start.", ".$end;
das er es so sortiert
1;2;3;4;5;6;7;12;16;17;18;19;20;24;26Geändert von EddieG (20.02.08 um 14:29 Uhr)
Ähnliche Themen
-
» Excel Tabelle mit 9 Manschaften mit Rang und Name sortieren
Von mezzo2712 im Forum Office-AnwendungenAntworten: 0Letzter Beitrag: 15.10.10, 14:56 -
Excel-Tabelle mit Rang-Funktion und spezieller Sortierung
Von eifelengelchen im Forum Office-AnwendungenAntworten: 6Letzter Beitrag: 15.06.10, 09:52 -
Nur einloggen, wenn Rang Admin oder Moderator ist :-\
Von Kalma im Forum PHPAntworten: 1Letzter Beitrag: 04.09.06, 21:34 -
Rang-System
Von ICPUI im Forum PHPAntworten: 8Letzter Beitrag: 21.08.05, 13:04 -
Rang im Forum + Benutzerbild
Von jaylibII im Forum PHPAntworten: 30Letzter Beitrag: 10.04.05, 10:20





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren