Sortierung A,B,C.....

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

  • Sortierung A,B,C.....

    Hallo,

    ich möchte eine Sortierung von Einträgen machen.
    So das wenn man auf "A" klickt alle einträge einer Spalte die mit "A" anfangen angezeigt werden usw...

    kann mir jemand dabei helfen?

    Gruß Hanna
    höre immer auf Leute die Wissen wovon sie reden .....

  • #2
    SELECT *
    FROM xxx
    WHERE spalte LIKE 'A%'

    Kommentar


    • #3
      aber das geht leider nicht:

      Select * FROM tabelle WHERE spalte LIKE '%A%'

      da findet er nur die, die ein A in der mitte enthalten

      Asien <-- findet er nicht

      hoppla <-- findet er nciht

      Haus <-- findet er..

      oder irre ich mich da?!?

      weil das is zb bei einer Suche sehr unpraktisch.
      weil dann müsste man den query verländern alla:

      SELECT * FROM tabelle WHERE spalte LIKE ('A%') OR spalte LIKE ('%A%') OR spalte LIKE ('A%')


      ich lass mich gern eines besseren belehren
      mfg

      Kommentar


      • #4
        Original geschrieben von Trashar
        SELECT *
        FROM tabelle
        WHERE
        spalte LIKE ('A%') OR
        spalte LIKE ('%A%') OR
        spalte LIKE ('A%')
        Wo ist denn der unterschied zwischem dem 1. LIKE und dem 3. LIKE? Und hab ich das nicht auch?

        Kommentar


        • #5
          Klappt wirklich nicht : (

          zum besseren verständnis poste ich mal das script.


          <?php

          include("config.php");
          mysql_connect($db_host,$db_user,$db_pass) || die("Could not contact mySQL!");
          mysql_select_db($db_db) || die("Connected mySQL, but database is unavailable!");


          if ($sort == 1)
          $sql1 = "SELECT ID, NickName FROM test WHERE NickName LIKE 'A%' ORDER BY NickName ASC;";
          else if ($sort == 2)
          $sql1 = "SELECT ID, NickName FROM test WHERE NickName LIKE 'B%' ORDER BY FirstName ASC;";
          else if ($sort == 3)
          $sql1 = "SELECT ID, NickName FROM test WHERE NickName LIKE 'C%' ORDER BY LastName ASC;";
          else
          $sql1 = "SELECT ID, NickName FROM test WHERE NickName LIKE 'D%' ORDER BY NickName ASC;";

          $rsMember = mysql_query($sql1);

          printf("
          <html>
          <head>
          <title>Intenetguide</title>
          <link rel=\"stylesheet\" type=\"text/css\" href=\"css/standard.css\">
          </head>
          <body vlink=\"#000000\">
          <BR>
          <TABLE width=600 align=\"center\" cellspacing=\"1\" cellpadding=\"3\" border=\"0\" bgcolor=\"#000000\">
          <tr>
          <td colspan=\"2\"><b><center>Titel</b> - <a href=\"haupt.html\">Hier geht's zur Startseite</a></center></td>

          </TR>

          <tr>

          <td><a href=\"admin.php?sort=1\"><b>A - Z</b></td></A>
          <td><b>Datenbank ID</b></td>
          </tr>

          ");
          while ($member = mysql_fetch_row($rsMember))
          {
          printf("
          <tr>

          <td><a href=\"show.php?sID=$member[0]\">$member[1]</a></td>
          <td>$member[0]</td>
          </tr>
          ");
          }
          printf("</table>

          </body>
          </html>
          ");
          ?>
          höre immer auf Leute die Wissen wovon sie reden .....

          Kommentar


          • #6
            Original geschrieben von TobiaZ
            Wo ist denn der unterschied zwischem dem 1. LIKE und dem 3. LIKE? Und hab ich das nicht auch?

            also

            wenn ich mich recht entsinne:

            SELECT *
            FROM tabelle
            WHERE
            spalte LIKE ('A%') OR // Gibt nur die aus, die mit A beginnen
            spalte LIKE ('%A%') OR // Gibt nur die aus, die ein A enthalten (bzw mehrere)
            spalte LIKE ('A%') // Gibt nur die aus, die mit A enden

            also bei einzelnen buchstaben is das ja egal, wenn er nach anfangsbuchstaben sortieren will

            aber was ist, wenn ich einen string habe und einen text durchsuchen will?!?
            dann muss man das doch so machen oder??

            mfg

            Kommentar


            • #7
              Was heißt klappt nicht. Was gibt mysql_error dir aus?

              PS: Die vielen ifs im ersten Teil solltest du durch ne switch() ersetzen und statt $sort nimmst du besser $_GET[sort]

              Kommentar


              • #8
                wenn ich so teste wie es jetzt geposted ist, gibt er alle einträge aus..

                Hanna
                höre immer auf Leute die Wissen wovon sie reden .....

                Kommentar


                • #9
                  @Trash: mom, muss mal kurz nachdenken

                  Kommentar


                  • #10
                    ich hab das script mal leicht verbessert. wo das problem mit dem %like liegt weiss ich allerdings nicht, ich hab das noch nie verwendet.

                    PHP-Code:
                    <?php
                    error_reporting 
                    (E_ERROR E_WARNING E_PARSE);

                    include 
                    'config.php';

                    mysql_connect($db_host,$db_user,$db_pass) || die("Could not contact mySQL!".mysql_error());
                    mysql_select_db($db_db) || die("Connected mySQL, but database is unavailable!".mysql_error());

                    $sort = (isset($_GET['sort'])) ? (int) $_GET['sort'] : "";

                    if (
                    $sort == 1) {
                        
                    $sql1 "SELECT ID, NickName FROM test WHERE NickName LIKE 'A%' ORDER BY NickName ASC;";
                    }
                    elseif (
                    $sort == 2) {
                        
                    $sql1 "SELECT ID, NickName FROM test WHERE NickName LIKE 'B%' ORDER BY FirstName ASC;";
                    }
                    elseif (
                    $sort == 3) {
                        
                    $sql1 "SELECT ID, NickName FROM test WHERE NickName LIKE 'C%' ORDER BY LastName ASC;";
                    }
                    else {
                        
                    $sql1 "SELECT ID, NickName FROM test WHERE NickName LIKE 'D%' ORDER BY NickName ASC;";
                    }

                    // edit: mysql_error() hinzugefügt
                    $rsMember mysql_query($sql1) or die ("Query Fehler".mysql_error());

                    ?>
                    <html>
                    <head>
                    <title>Intenetguide</title>
                    <link rel="stylesheet" type="text/css" href="css/standard.css">
                    </head>
                    <body vlink="#000000">
                    <BR>
                    <TABLE width=600 align="center" cellspacing="1" cellpadding="3" border="0" bgcolor="#000000">
                    <tr>
                    <td colspan="2"><b><center>Titel</b> - <a href="haupt.html">Hier geht's zur Startseite</a></center></td>

                    </TR>

                    <tr>

                    <td><a href="admin.php?sort=1"><b>A - Z</b></td></A>
                    <td><b>Datenbank ID</b></td>
                    </tr>

                    <?php

                    while ($member mysql_fetch_row($rsMember)) {
                    ?>
                    <tr>
                    <td>
                    <?php
                    echo "<a href='show.php?sID={$member[0]}'>{$member[1]}</a>";
                    ?>
                    </td>
                    <td>
                    <?php echo "{$member[0]}"?>
                    </td>
                    </tr>
                    <?php

                    }

                    ?>

                    </table>
                    </body>
                    </html>
                    Zuletzt geändert von martin_de; 15.12.2002, 14:06.
                    martin

                    Kommentar


                    • #11
                      hmmm was mir noch einfällt...

                      PHP-Code:
                      $sql1 "SELECT ID, NickName FROM test WHERE NickName LIKE 'A%' ORDER BY NickName ASC;"
                      gehört das ; (semikolon) hinter ASC ?

                      wenn man das direkt in mysql_query setzt, würde das da ja auch nicht stehen, sondern:

                      PHP-Code:
                      mysql_query("SELECT ID, NickName FROM test WHERE NickName LIKE 'A%' ORDER BY NickName ASC"); 
                      ich will das jetzt nicht extra ausprobieren, aber komisch kommt mir das schon vor, gibt das keinen syntaxfehler?
                      martin

                      Kommentar


                      • #12
                        dat egal

                        weil wennde nen sql befehl per console eingibst, dann musst du mit ; den befehl abschliessen

                        mfg

                        Kommentar


                        • #13
                          Original geschrieben von Trashar
                          spalte LIKE ('A%') OR // Gibt nur die aus, die mit A beginnen
                          spalte LIKE ('%A%') OR // Gibt nur die aus, die ein A enthalten (bzw mehrere)
                          spalte LIKE ('A%') // Gibt nur die aus, die mit A enden

                          also bei einzelnen buchstaben is das ja egal, wenn er nach anfangsbuchstaben sortieren will

                          aber was ist, wenn ich einen string habe und einen text durchsuchen will?!?
                          dann muss man das doch so machen oder??
                          Hmm, vielleicht wollen wir beide was anderes.

                          Wieso gibt dein 3. Like alles aus, die mit A enden?
                          Wenn ich nen String habe, und alle strings die mit a anfangen haben will nehme ich A% wenn ich alle will, die a als anfangsburchstaben haben, muss ich wahrscheinlich "a% OR % a%" machen.

                          Kommentar


                          • #14
                            oha merk grad beim 3. like hab ich mich verschrieben muss heißen

                            LIKE ('%A')

                            so dann passts..

                            sry

                            Kommentar


                            • #15
                              Hab mir sowas gedacht.

                              Aber ich will ja nur die dinger haben, die mit a anfangen. also sollte a% ja richtig sein.

                              @martin:

                              Hab meine Verbesserungsvorschläge ja auch schon gepostet. ich glaube ne switch() wäre besser gewesen. Und warst du nicht derjenige, der bei der shoutbox sich beschwert hat, dass dort $action anstat$_GET[action] werwendet wird

                              Kommentar

                              Lädt...
                              X