tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
11
ZUGRIFFE
541
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    EddieG EddieG ist offline Mitglied Gold
    Registriert seit
    Jul 2007
    Beiträge
    216
    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($sql0'count'); // Anzahl
    mysql_free_result($sql);

    $ges ceil($anz $end);
    $start = !isset($_GET['start']) ? $start $_GET['start']*$end;
    $nStart = !isset($_GET['start']) ? $start $_GET['start'];
    $link '';

    $ges += 1;
    if(
    $nStart>=($ges)) {
    die(
    'Seite existiert nicht!');
    }

    $link .= ($nStart=='' $url.'&amp;start='.($nStart-1).'">&laquo; Zur&uuml;ck</a> ');
    if(
    $ges>7) {
    $ret = array();
    for(
    $i=1;$i<=$ges;$i++) {
    $ret[] = (($i-1)!=$nStart $url.'&amp;start='.($i-1).'">['.$i.']</a> ' $i.' ');
    }
    if(
    $nStart<&& $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>=' ... '.$ret[$nStart-1].$ret[$nStart].(isset($ret[$nStart+1]) ? $ret[$nStart+1] : '') : '') : '');
    $link .= ' ... '.($nStart==$ges-$ret[$ges-4] : '').$ret[$ges-3].$ret[$ges-2].$ret[$ges-1];
    } else {
    for(
    $i=1;$i<=$ges;$i++) {
    $link .= (($i-1)!=$nStart $url.'&amp;start='.($i-1).'">['.$i.']</a> ' $i.' ');
    }
    }
    $link .= ($nStart==($ges-1) ? '' ' '.$url.'&amp;start='.($nStart+1).'">Weiter &raquo;</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>
     

  2. #2
    chainy chainy ist offline Mitglied Gold
    Registriert seit
    Jan 2004
    Beiträge
    197
    So vielleicht:
    PHP-Code:
    $i 0;
    while(
    $ds = [...])
    {
          [...]

        if( 
    $i === )
        {
            
    $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']);
        }

           [...]

     

  3. #3
    Schumi86 Schumi86 ist offline Grünschnabel
    Registriert seit
    Mar 2007
    Beiträge
    1
    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
     

  4. #4
    EddieG EddieG ist offline Mitglied Gold
    Registriert seit
    Jul 2007
    Beiträge
    216
    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 === )
        {
            
    $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(); 
     

  5. #5
    chainy chainy ist offline Mitglied Gold
    Registriert seit
    Jan 2004
    Beiträge
    197
    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 === )
        {
            
    $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(); 
     

  6. #6
    EddieG EddieG ist offline Mitglied Gold
    Registriert seit
    Jul 2007
    Beiträge
    216
    Nein das geht leider auch nicht
    es funktioniert auf Seite zwei noch aber ab der Seite drei beginnt es wieder von 1
     

  7. #7
    chainy chainy ist offline Mitglied Gold
    Registriert seit
    Jan 2004
    Beiträge
    197
    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....
     

  8. #8
    EddieG EddieG ist offline Mitglied Gold
    Registriert seit
    Jul 2007
    Beiträge
    216
    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 sollte
    SELECT
    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`
    Bei 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 105
    das ist diese Zeile
    PHP-Code:
     while ($ds mysql_fetch_object($query)) 
    hier der Code
    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($sql0'count'); // Anzahl
    mysql_free_result($sql);

    $ges ceil($anz $end);
    $start = !isset($_GET['start']) ? $start $_GET['start']*$end;
    $nStart = !isset($_GET['start']) ? $start $_GET['start'];
    $link '';

    $ges += 1;
    if(
    $nStart>=($ges)) {
    die(
    'Seite existiert nicht!');
    }

    $link .= ($nStart=='' $url.'&amp;start='.($nStart-1).'">&laquo; Zur&uuml;ck</a> ');
    if(
    $ges>7) {
    $ret = array();
    for(
    $i=1;$i<=$ges;$i++) {
    $ret[] = (($i-1)!=$nStart $url.'&amp;start='.($i-1).'">['.$i.']</a> ' $i.' ');
    }
    if(
    $nStart<&& $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>=' ... '.$ret[$nStart-1].$ret[$nStart].(isset($ret[$nStart+1]) ? $ret[$nStart+1] : '') : '') : '');
    $link .= ' ... '.($nStart==$ges-$ret[$ges-4] : '').$ret[$ges-3].$ret[$ges-2].$ret[$ges-1];
    } else {
    for(
    $i=1;$i<=$ges;$i++) {
    $link .= (($i-1)!=$nStart $url.'&amp;start='.($i-1).'">['.$i.']</a> ' $i.' ');
    }
    }
    $link .= ($nStart==($ges-1) ? '' ' '.$url.'&amp;start='.($nStart+1).'">Weiter &raquo;</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)
     

  9. #9
    chainy chainy ist offline Mitglied Gold
    Registriert seit
    Jan 2004
    Beiträge
    197
    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....
     

  10. #10
    EddieG EddieG ist offline Mitglied Gold
    Registriert seit
    Jul 2007
    Beiträge
    216
    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
     

  11. #11
    chainy chainy ist offline Mitglied Gold
    Registriert seit
    Jan 2004
    Beiträge
    197
    Welche MySQL Version hast du? Möglicherweise unterstützt deine MySQL Version keine Subselects...
     

  12. #12
    EddieG EddieG ist offline Mitglied Gold
    Registriert seit
    Jul 2007
    Beiträge
    216
    ich habe den Fehler es hat ein Komma gefehlt
    PHP-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
    und so ist es richtig
    PHP-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 das
    das er es so sortiert
    1;2;3;4;5;6;7;12;16;17;18;19;20;24;26
    Geändert von EddieG (20.02.08 um 14:29 Uhr)
     

Ähnliche Themen

  1. » Excel Tabelle mit 9 Manschaften mit Rang und Name sortieren
    Von mezzo2712 im Forum Office-Anwendungen
    Antworten: 0
    Letzter Beitrag: 15.10.10, 14:56
  2. Excel-Tabelle mit Rang-Funktion und spezieller Sortierung
    Von eifelengelchen im Forum Office-Anwendungen
    Antworten: 6
    Letzter Beitrag: 15.06.10, 09:52
  3. Antworten: 1
    Letzter Beitrag: 04.09.06, 21:34
  4. Rang-System
    Von ICPUI im Forum PHP
    Antworten: 8
    Letzter Beitrag: 21.08.05, 13:04
  5. Rang im Forum + Benutzerbild
    Von jaylibII im Forum PHP
    Antworten: 30
    Letzter Beitrag: 10.04.05, 10:20