kostenloser Webspace werbefrei: lima-city


mysqli Select, Daten sortieren nach 2 Spalten

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    Hi,

    ich stehe vor folgendem Problem, ich gebe eine Highscore aus, die über 2 Spalten sortiert werden soll.

    Wenn 2 gleiche Werte/Rekorde vorhanden sind soll nach Timestamp sortiert werden, wer seinen Rekord also als erstes erzielt hat sollte oben stehen.

    Es wird aus einer Tabelle in der alle Rekorde der Member stehen der beste ausgewählt, aktuell sieht meine Abfrage dazu wie folgt aus:

    // Rekorde auslesen alle user in den logs
    $userdaten_scorre = $mysqli->query("
    SELECT max(baum) as rek_neu, name, timestamp, id
    FROM `event_xmass_log`
    GROUP BY `name`
    ORDER BY `rek_neu` DESC, `timestamp` ASC 
    LIMIT 0 , 10
    ");



    Es wird auch bis auf den Timestamp richtig sortiert. In der Ausgabe er halte ich den höchsten Rekord, allerdings mit dem falschen Timestamp. Es soll ja der Timestamp genommen werden von dem Rekord. Es wird aber der Timestamp des ersten Eintrages genommen. (Eintrag des Users) Ich hoffe mal kann mein Problem verstehen.

    LG Marco
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. michaelkoepke

    michaelkoepke hat kostenlosen Webspace.

    Hallo,

    dein Code sollte so wie er ist funktionieren, ich weiß es zwar nicht genau, aber es kann durchaus sein, das timestamp ein reserviertes Wort in mysql ist. Versuche es doch mal mit einem anderen Spaltennamen.

    MFG Micha
  4. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    Hi,

    das ist es leider nicht. Hab die Spalte mal umbenannt und alles angepasst, bleibt dabei das er als Zeit dann die erste die er vom Benutzer findet anzeigt.

    Hier mal noch die Ausgabe dazu:

    while($daten = $userdaten_scorre->fetch_object() ){
    	  // Prüfen ob der Rekord gleichgroß dem letzten ist
    	  if ($point_last == $daten->rek_neu){
    		  // Der Rekord hat die gleiche Höhe wie der letzte, der Platz wird nicht Hochgezählt
    	  }else{
    	  // Platzzähler um 1 erhöhen
    	  $i++;
    	  }
    	$datum  = date('d.m.Y',$daten->logtime);
    	$uhrzeit = date('H:i:s',$daten->logtime);
    
    	  // Ausgabe der Daten
    		echo "
    		  <tr>
    			<td>$i</td>
    			<td>$daten->name</td>
    			<td>$daten->rek_neu</td>
    		    <td>$datum $uhrzeit </td>
    
    		  </tr>
    		";
    	  // Rekord zwischenspeichern um zu prüfen ob der nächste Rekord die gleiche Höhe hat.
    	  $point_last = $daten->rek_neu;
    
      }// Schleife schließen


    Das sind die betroffenen Ausgaben.
    $datum  = date('d.m.Y',$daten->logtime);
    $uhrzeit = date('H:i:s',$daten->logtime);





  5. Hallo aff3m1tw4ff3,

    besteht dein Problem immer noch?

    Bin mir jetzt nicht sicher, ob ich es richtig verstanden habe: Machst du evtl. doch eine Abfrage über 2 Tabellen? Falls ja, hast du schon versucht, bei "timestamp" den Tabellennamen explizit anzugeben, also anstatt nur
    timestamp
    gibst du
    event_xmass_log.timestamp
    an. Oder habe ich dein Problem doch falsch aufgefasst?

    Gruss

  6. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!