[PHP] Howto: Topliste in PHP/MYSQL

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Firefox User, 4. Juli 2010 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 4. Juli 2010
    Howto: Topliste in PHP/MYSQL

    Ich habe ein Toplistscript, das mir die Links geordnet nach klicks ausgibt.
    PHP:
    $gettoplinks = "select * from bla order by klicks DESC limit 20" ;
    $gettoplinks2 = mysql_query ( $gettoplinks ) or die( "Could not get top links" );
    $ranknum = 1 ;
    while (
    $gettoplinks3 = mysql_fetch_array ( $gettoplinks2 ))
    {
    echo 
    $ranknum . '.: ' . $gettoplinks3 [ 'url' ] .  ' (' . $gettoplinks3 [ 'klicks' ]. ')<br>' ;
      
    $ranknum ++;
    }
    Wie kann ich das jetzt machen, wenn Links die gleiche Anzahl von Klicks haben das dann kommt:

    1.: www.kjkjg.gh (567 Klicks)
    2.: www.ui.er (415 Klicks)
    www.fdht.ht (415 Klicks)
    4.: www.kjkjg.gh (567 Klicks)

    und nicht:

    1.: www.kjkjg.gh (567 Klicks)
    2.: www.ui.er (415 Klicks)
    3.: www.fdht.ht (415 Klicks)
    4.: www.kjkjg.gh (567 Klicks)
     
  2. 4. Juli 2010
    AW: Toplist

    PHP:
    $lastrank  0 ;
    $gettoplinks = "select bla from * order by klicks DESC limit 20" ;
    $gettoplinks2 = mysql_query ( $gettoplinks ) or die( "Could not get top links" );
    $ranknum = 1 ;
    while (
    $gettoplinks3 = mysql_fetch_array ( $gettoplinks2 ))
    {
      echo ((
    $ranknum == $lastrank )?( '' ):( $ranknum . '.: ' )). $gettoplinks3 [ 'url' ] .  ' (' . $gettoplinks3 [ 'klicks' ]. ')<br>' ;
      
    $lastrank  $ranknum ;
      
    $ranknum ++;
    }
    sollte klappen
     
  3. 4. Juli 2010
    AW: Toplist

    Iwie schaut das noch rech unlogisch für mich aus. Was wolltest du bezwecken?

    Nur mal ein Beispiel was bei deiner Variante rauskommt:

    Ergebnis 1,2,3 sind gleich. 4,5 unterschiedlich:

    Spoiler
    Code:
    lastrank:0 rank:1
    lastrank:1 rank:2
    lastrank:2 rank:3
    lastrank:3 rank:4
    lastrank:4 rank:5
    
    Code:
    1.: asdas (555)
    2.: sdfwe (555)
    3.: 12 (555)
    4.: test (456)
    5.: asdfsadf (3233)

    lastrank und rank können ja niemals gleich werden!?
     
  4. 4. Juli 2010
    AW: Toplist

    PHP:
    $gettoplinks = "select bla from * order by klicks DESC limit 20" ;
    Wähle bla von allen tabellen die ich habe ?

    PHP:
    SELECT  FROM bla ORDER BY klicks DESC limit 20
    war nicht eher das damit gemeint? bzw. kann man überhaupt FROM * machen? oO (da es klappt, scheint es wohl so.. welche datenbankstruktur macht so sinn?)

    fragen über fragen.. aber ich schweife ab..
     
  5. 4. Juli 2010
    AW: Toplist

    Nein sowas geht nicht. Ich denke der Themenersteller hat das absichtlich gemacht hier im Forum!?

    PHP:
    MySQL - Msg :   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  '* order by inhalt DESC'  at line 1 
     
  6. 4. Juli 2010
    AW: Toplist

    Ah sorry, habe das folgendermaßen gemeint aber falsch geschrieben

    PHP:
    $lastklicks  0 ;
    $gettoplinks = "select bla from * order by klicks DESC limit 20" ;
    $gettoplinks2 = mysql_query ( $gettoplinks ) or die( "Could not get top links" );
    $ranknum = 1 ;
    while (
    $gettoplinks3 = mysql_fetch_array ( $gettoplinks2 ))
    {
      echo ((
    $lastklicks == $gettoplinks3 [ 'klicks' ])?( '' )( $ranknum . '.: ' )). $gettoplinks3 [ 'url' ] .  ' (' . $gettoplinks3 [ 'klicks' ]. ')<br>' ;
      
    $ranknum ++;
      
    $lastklicks  $gettoplinks3 [ 'klicks' ];
    }
    Man muss natürlich die Klickzahlen vergleichen und nicht die zugewiesenen Ränge XP
     
  7. 5. Juli 2010
    AW: Toplist

    Ja ich weiß. Ich dachte mir du kommst da schon noch drauf ^^

    Einziger Verbesserungsvorschlag, damit die Zahlenaufteilung sauber ist und nicht:

    Code:
    1. 123
     123
    3.
    4.
    geht


    Würde den Part:
    PHP:
    $ranknum ++;
    Ersetzen:
    PHP:
    if( $lastklicks != $gettoplinks3 [ 'klicks' ])  
    $ranknum ++;
     
  8. 5. Juli 2010
    AW: Toplist

    Aber soweit ich den Threadersteller verstehe, soll trotzdem weitergezählt werden...

     
  9. 5. Juli 2010
    AW: Toplist

    Aso okay, wenn das so ist dann sorry.

    Hatte für mich nur kein Sinn gemacht einen Platz auszulassen. Egal der TE hat jetzt mehrere Möglichkeiten die er anwenden kann bei Bedarf. ^^
     
  10. 5. Juli 2010
    AW: Toplist

    Ja super funktioniert! (Auch wenn noch ein Doppelpunkt zwischen ('') und ($ranknum.'.: ') gefehlt hat )

    Ja ist ja klar das dass nicht geht. Wollt den Tabellennamen verändern, hab aber das falsche erwischt :lol:
     
  11. 5. Juli 2010
    AW: Toplist

    Du darfst dann auch schließen ;P
     
  12. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.