[SQL] Update wiedergabe nach Datum sortiert

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Spo0n22, 18. März 2011 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 18. März 2011
    Zuletzt von einem Moderator bearbeitet: 15. April 2017
    Update wiedergabe nach Datum sortiert

    Hallo Community,

    ich stehe vor folgedem Problem, ich möchte eine reihe von Updates wiedergeben, die nach dem Erscheinungsdatum sortiert werden sollen:

    Unbenannt1.jpg
    {img-src: //justpic.info/images2/1e8a/Unbenannt1.jpg}


    Die lieder werden wie folgt gespeichert.

    ID | Songtitel | Link | Datum
    1 | MJ - Beat It | Thorsten Link, Rechtsanwalt, Hamburg | 2011-03-16 15:28:36
    2 | MJ - Beat It2 | Thorsten Link, Rechtsanwalt, Hamburg | 2011-03-15 13:28:36

    Nun meine Frage, wie würde die MySQL abfrage dafür lauten?
     
  2. 18. März 2011
    AW: Update wiedergabe nach Datum sortiert

    welches format hat die spalte "Datum"? ich hoffe mal nicht VARCHAR.
     
  3. 18. März 2011
    AW: Update wiedergabe nach Datum sortiert

    Das Format ist datetime
    z. B. 2011-03-16 15:28:36
     
  4. 18. März 2011
    AW: Update wiedergabe nach Datum sortiert

    dann sollte das mit nem einfachen ORDER BY `Datum` DESC funktionieren.

    um das ganze zu formatieren:
    PHP:
    <? php

    // daten aus deiner db
    $data  = array (
        array (
            
    'ID'         =>  1 ,
            
    'Songtitel'  =>  'MJ - Beat It 1' ,
            
    'Link'       =>  'http://link.de' ,
            
    'Datum'      =>  '2011-03-17 15:28:36'  ),
        array (
            
    'ID'         =>  1 ,
            
    'Songtitel'  =>  'MJ - Beat It 2' ,
            
    'Link'       =>  'http://link.de' ,
            
    'Datum'      =>  '2011-03-17 15:28:36'  ),
        array (
            
    'ID'         =>  1 ,
            
    'Songtitel'  =>  'MJ - Beat It 3' ,
            
    'Link'       =>  'http://link.de' ,
            
    'Datum'      =>  '2011-03-10 15:28:36'  ),
        array (
            
    'ID'         =>  1 ,
            
    'Songtitel'  =>  'MJ - Beat It 4' ,
            
    'Link'       =>  'http://link.de' ,
            
    'Datum'      =>  '2011-03-9 15:28:36'  ),
        array (
            
    'ID'         =>  1 ,
            
    'Songtitel'  =>  'MJ - Beat It 5' ,
            
    'Link'       =>  'http://link.de' ,
            
    'Datum'      =>  '2011-03-9 15:28:36'  ),
        array (
            
    'ID'         =>  1 ,
            
    'Songtitel'  =>  'MJ - Beat It 6' ,
            
    'Link'       =>  'http://link.de' ,
            
    'Datum'      =>  '2011-03-9 15:28:36'  ),
        array (
            
    'ID'         =>  1 ,
            
    'Songtitel'  =>  'MJ - Beat It 7' ,
            
    'Link'       =>  'http://link.de' ,
            
    'Datum'      =>  '2011-03-2 15:28:36'  )
    );

    foreach (
    group_tracks ( $data ) as  $date  =>  $tracks ) {
        print 
    "<h1> $date </h1><ul>" ;
        
        foreach (
    $tracks  as  $track
            print 
    "<li> { $track [ 'Songtitel' ]} </li>" ;
            
        print 
    '</ul>' ;
    }

    // -----------------------

    function  group_tracks (array & $data ) {
        
    $result  = array();
        
        foreach (
    $data  as  $item ) {
            if (!isset(
    $result [ $item [ 'Datum' ]]))
                
    $result [ $item [ 'Datum' ]] = array();
                
            
    $result [ $item [ 'Datum' ]][] =  $item ;
        }
        
        return 
    $result ;
    }
    achtung : die daten erst aus der db zu laden und danach zu sortieren ist natürlich suboptimal.
    am besten wäre es, wenn du die daten direkt beim "fetchen" in einem array gruppierst.

    PHP:
    <? php

    $query 
    $pdo -> query ( '
        SELECT `ID`, `Songtitel`, `Link`, `Datum` 
        FROM `tabelle` 
        ORDER BY `Datum` DESC 
        LIMIT 5'
    );
     
    $result  = array();
     
    while (
    $item  $query -> fetch ( PDO :: FETCH_ASSOC )) {
        if (!isset(
    $result [ $item [ 'Datum' ]]))
            
    $result [ $item [ 'Datum' ]] = array();
            
        
    $result [ $item [ 'Datum' ]][] =  $item ;
    }

    $query -> closeCursor ();

    foreach (
    $result  as  $date  =>  $tracks ) {
        print 
    "<h1> $date </h1><ul>" ;
        
        foreach (
    $tracks  as  $track
            print 
    "<li> { $track [ 'Songtitel' ]} </li>" ;
            
        print 
    '</ul>' ;
    }
    ausgabe:
    Code:
    2011-03-17 15:28:36
    
     MJ - Beat It 1
     MJ - Beat It 2
    
    2011-03-10 15:28:36
    
     MJ - Beat It 3
    
    2011-03-9 15:28:36
    
     MJ - Beat It 4
     MJ - Beat It 5
     MJ - Beat It 6
    
    2011-03-2 15:28:36
    
     MJ - Beat It 7
     
  5. 18. März 2011
    AW: Update wiedergabe nach Datum sortiert

    kannst doch im prinzip auch mit nem group by arbeiten oder nicht?

    SELECT * FROM tabelle GROUP BY datum
     
  6. 18. März 2011
    AW: Update wiedergabe nach Datum sortiert

    Code:
    SELECT Songtitel, Link, Datum FROM Songs ORDER BY Datum DESC LIMIT 5
    Diese Abfrage gibt die 5 neuesten Lieder wieder.

    Ich möchte das so haben das jeweils die letzten 5 Tage angezeigt werden, an dennen ein Update gemacht wurde.

    z. B.
    Spoiler
    18.03.2011 - (Heute)
    ---------------------------------
    01. Song
    02. Song2
    03. Song3


    15.03.2011
    ---------------------------------
    01. Song
    02. Song2


    14.03.2011
    ---------------------------------
    01. Song
    02. Song2


    05.03.2011
    ---------------------------------
    01. Song
    02. Song2
    03. Song3
    04. Song4
    05. Song5
    06. Song6
    07. Song7
    08. Song8


    01.03.2011
    ---------------------------------
    01. Song

    Ist das in einer MySQL Abfrage möglich oder musst man in der Abfrage noch eine 2 Abfrage für die einzelnen Lieder machen, die an dem Datum erschienen sind?
     
  7. 18. März 2011
    AW: Update wiedergabe nach Datum sortiert

    welchen sinn hätte das? bzw. vielleicht weiß ich nur nicht genau wie du das meinst.
    ich persönlich wüsste keinen weg die daten mit sql so aufzubereiten.

    @Spo0n22: siehe edit
     
  8. 22. März 2011
    AW: Update wiedergabe nach Datum sortiert

    Danke, hat nach Murdoc Lösung ganz gut geklappt.
     
  9. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.