Ankündigung

Einklappen
Keine Ankündigung bisher.

ORDER BY funktioniert nicht

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • ORDER BY funktioniert nicht

    Hey,

    ich möchte, dass zuerst alle aufgezählt werden die in der Spalte "online" eine 1 haben, danach sollen alle anderen aufgezählt werden die eine 0 haben. Kleiner Screenshot:


    Also, zuerst die mit 1 und danach die mit 0 sollen aufgelistet werden.

    Query:

    PHP-Code:
    $select_user mysql_query("SELECT username, look, online FROM users WHERE id='$row[1]' ORDER BY online DESC") or die(mysql_error()); 
    Funktioniert leider nicht, es werden zuerst die mit "0" aufgelistet.

  • #2
    Du musst statt DESC ASC nehmen. DESC sortiert rückwärts, ASC normal.
    PHP-Code:
     $select_user mysql_query("SELECT username, look, online FROM users WHERE id='$row[1]' ORDER BY online ASC") or die(mysql_error()); 
    mysql_* ist veraltet. Nutze stattdessen lieber mysqli_* oder PDO.
    Die erste von mir erstellte Homepage: Wurzel der Liebe - Verein zu Förderung von Sozialprojekten weltweit

    Kommentar


    • #3
      Müsste schon richtig sein, da 0 nicht größer ist als 1. Bist du sicher, dass du das Order by ins richtige Query eingefügt hast? Denn "where id=etwas" spricht nicht wirklich dafür, dass du 'ne Liste abfragst.
      Crashkurs zum Thema Rechtschreibung: [COLOR="Green"]normalerweise[/COLOR] ([COLOR="Red"]normaler weise[/COLOR] oder [COLOR="Red"]normaler weiße[/COLOR]), [COLOR="DarkGreen"]Standard[/COLOR] ([COLOR="Red"]Standart[/COLOR]), [COLOR="DarkGreen"]eben[/COLOR] ([COLOR="Red"]ebend[/COLOR])

      Kommentar


      • #4
        @Asterixius
        Kann schon sein, dass du recht hast. Ich habe mir nur gedacht, dass wenns mit DESC nicht funktioniert, dass ASC vielleicht funktioniert.
        Die erste von mir erstellte Homepage: Wurzel der Liebe - Verein zu Förderung von Sozialprojekten weltweit

        Kommentar


        • #5
          Die Query ist schon richtig und mit ASC funktioniert es leider auch nicht.

          Kommentar


          • #6
            PHP-Code:
            $whatever_id_is intval($row[1]); // sanitize input, mysql_real_escape_string etc.
            $select_user mysql_query("SELECT username, look, online FROM users WHERE id='".$whatever_id_is."' ORDER BY online") or die(mysql_error()); 
            Neu bei PHP, lerne aktuell OOP

            Kommentar


            • #7
              Zitat von SchokoBrunnen Beitrag anzeigen
              Die Query ist schon richtig und mit ASC funktioniert es leider auch nicht.
              normalerweise nutzt man IDs um die datensätze eindeutig zu identifizieren.

              heißt wenn ich etwas wie
              Code:
              SELECT username, look, online FROM users WHERE id=1
              mache bekomme ich exakt einen User ausgegeben.
              das man ein resultat das aus nur einem datensatz besteht nicht sortieren kann ist eigentlich logisch.

              die frage ist nun ob deine IDs nicht eindeutig sind, wobei dann wiederum die frage wäre warum die Spalte id heißt oder ob du um alle User zu bekommen die abfrage in einer schleife ausführst.
              bei letzterem ist es natürlich logisch, dass eine sortierung nicht möglich ist, da dann pro abfrage nur ein Datensatz von der datenbank zurückgegeben wird und man wie gesagt ja einen einzelnen datensatz nicht sortieren kann
              liebe Grüße
              Fräulein Dingsda

              Kommentar


              • #8
                @Dingsda: Sein Satz "Funktioniert leider nicht, es werden zuerst die mit "0" aufgelistet." impliziert, dass er mehrere Resultate kriegt aber in der falschen Reihenfolge, oder habe ich was überlesen? =)
                Neu bei PHP, lerne aktuell OOP

                Kommentar


                • #9
                  Es wird alles in einer Schleife ausgeführt, siehe hier:

                  PHP-Code:
                  <?php

                                    $result 
                  mysql_query("SELECT user_one_id, user_two_id FROM messenger_friendships WHERE user_one_id='$myrow[id]'"); while ($row mysql_fetch_array($result)) {
                          
                  $select_user mysql_query("SELECT username, look, online FROM users WHERE id='$row[1]' ORDER BY online ASC") or die(mysql_error());    while ($freund mysql_fetch_array($select_user)) {
                   
                  ?>
                  <!-- ........... -->

                  Kommentar


                  • #10
                    Zitat von NewbieJoker Beitrag anzeigen
                    @Dingsda: Sein Satz "Funktioniert leider nicht, es werden zuerst die mit "0" aufgelistet." impliziert, dass er mehrere Resultate kriegt aber in der falschen Reihenfolge, oder habe ich was überlesen? =)
                    das heißt für mich nur das am ende in der html-ausgabe mehrere reihen in seiner tabelle hat.
                    aber ob der code dafür so aussieht
                    PHP-Code:
                    $querymysql_query($statementDasMehrereResultateZurueckliefert);
                    while(
                    $result=mysql_fetch_array($query)){
                        
                    // html generieren

                    weiß man nicht

                    es kann auch gut sein, dass der code so aussieht
                    PHP-Code:
                    foreach($ids_array as $ids){
                         
                    $query mysql_query("SELECT username, look, online FROM users WHERE id=$id");
                         
                    $result=mysql_fetch_array($query);
                         
                    // html generieren mit $result


                    da in seinem ersten post im code folgendes steht
                    PHP-Code:
                    WHERE id='$row[1]' 
                    bin ich zu 99% sicher, dass er das query in einer schleife ausführt. die ids hat er vorher mit einem anderen query ausgelesen.

                    Edit:
                    vermutung hat sich also bestätigt.
                    lass das abfragen in einer schleife. ist einfach nur unperformant und unnötig
                    nutze joins um beziehungen zwischen tabellen abzufragen
                    liebe Grüße
                    Fräulein Dingsda

                    Kommentar

                    Lädt...
                    X