Lexikon-Datenbank - Einträge gruppiert ausgeben.

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

  • Lexikon-Datenbank - Einträge gruppiert ausgeben.

    Hi,

    Ich habe eine Lexikon-Datenbank. Wichtig ist nur das Feld 'name'. ich möchte alle Datensätze alphabetisch gruppiert nach Name ausgeben.

    Bei den Zeichen von A-Z wäre die Ausgabe mit einer Schleife, die alle Buchstaben durchgeht und die Like-Syntax bei der Abfrage verwendet, kein Problem.
    Die Zahlen am Anfag bekomme ich mit REGEXP "^[0-9]" (richtig?)

    Aber: Wie bekomme ich die Umlaute (z.B "Ä" bzw. "ä") zu den entsprechenden Buchstaben?

    Wenn ich das Umlaut-Problem gelöst habe, muss ich noch irgendwie alle restlichen Sonderzeichen zusammengruppieren.

    Irgendwelche Ideen, wie ich das ganze elegant(er) lösen kann?

    Gruß,
    Syco
    Zuletzt geändert von syco23; 02.03.2004, 22:40.
    [COLOR=darkblue].: 1+1=23 :.[/COLOR]

  • #2
    Keiner eine Idee oder nur zu faul zum schreiben *fg*
    [COLOR=darkblue].: 1+1=23 :.[/COLOR]

    Kommentar


    • #3
      vielleicht so:
      ein array mit den ganzen Sonderzeichen, und dann die query ensprechend anpassen.

      PHP-Code:
      $aSonderzeichen = Array (
              
      "A" => "Ä",
              
      "O" => "Ö",
              
      "U" => "Ü");

      //dann für jeden Buchstaben
      if (isset ($aSonderzeichen[$letter]))
      {
          
      $query "SELECT *,REPLACE($column,'" 
              
      $aSonderzeichen[$letter
              . 
      "','".$letter."e') AS OrderCol FROM $table";
      }
      else
      {
          
      $query "SELECT *,$column AS OrderCol FROM $table";
      }
      $query .= " WHERE ($column like '$letter%')";

      if (isset (
      $aSonderzeichen[$letter]))
      {
          
      $query .= " OR $column like '".$aSonderzeichen[$letter]."%'";
      }

      $query .= " ORDER BY OrderCol"
      require_once('gehirn_v_02beta.php');

      Kommentar


      • #4
        Danek für die Hilfe

        Das ganze sieht bei mir jetzt folgendermaßen aus und funzt prima:
        PHP-Code:
        $aSonderzeichen = Array (
            
        "A" => "Ä",
            
        "O" => "Ö",
            
        "U" => "Ü",
            
        "S" => "ß");

        // ALLE EINTRÄGE MIT SONDERZEICHEN AUSGEBEN (außer Umlaute & "ß")
        $query "SELECT name,id FROM $table WHERE name NOT REGEXP '^[0-9a-zA-Z]' ORDER by name";
        if (
        $abfrage_lexikon mysql_query($query)) {
            if (
        mysql_num_rows($abfrage_lexikon)) {
                while (
        $row mysql_fetch_object($abfrage_lexikon)) {
                    if (!
        eregi("^ü|^ä|^ö|^ß"$row->name)) {
                        echo 
        $row->name." - ".$row->id."<br />";
                    }
                }
                
        mysql_free_result($abfrage_lexikon);
            } else {
                echo 
        "Kein Eintrag für Sonderzeichen";
            }
        } else {
            echo 
        "Fehler bei der Abfrage";
        }

        // ALLE EINTÄRGE MIT ZAHLEN [0-9] AUSGEBEN:
        $query "SELECT name,id FROM $table WHERE name REGEXP '^[0-9]' ORDER by name";
        if (
        $abfrage_lexikon mysql_query($query)) {
            if (
        mysql_num_rows($abfrage_lexikon)) {
                while (
        $row mysql_fetch_object($abfrage_lexikon)) {
                    echo 
        $row->name." - ".$row->id."<br />";
                }
                
        mysql_free_result($abfrage_lexikon);
            } else {
                echo 
        "Kein Eintrag für Zahlen";
            }
        } else {
            echo 
        "Fehler bei der Abfrage";
        }
        // ALLE BUCHSTABEN DURCHLAUFEN UND EINTRÄGE AUSGEBEN:
        $i 65;
        while (
        $i <= 90) {
            
        $letter chr($i);
            if (isset (
        $aSonderzeichen[$letter])){
                
        $query "SELECT name,id,REPLACE($column,'" 
                    
        $aSonderzeichen[$letter
                    . 
        "','".$letter."') AS OrderCol FROM $table";
            } else {
                
        $query "SELECT name,id,$column AS OrderCol FROM $table";
            }
            
        $query .= " WHERE ($column like '$letter%')";
            if (isset (
        $aSonderzeichen[$letter])) {
                
        $query .= " OR $column like '".$aSonderzeichen[$letter]."%'";
            }

            
        $query .= " ORDER BY OrderCol";
            echo 
        "<b>".$letter."</b><br />";
            if (
        $abfrage_lexikon mysql_query($query)) {
                if (
        mysql_num_rows($abfrage_lexikon)) {
                    while (
        $row mysql_fetch_object($abfrage_lexikon)) {
                        echo 
        $row->name." - ".$row->id."<br />";
                    }
                    
        mysql_free_result($abfrage_lexikon);
                } else {
                    echo 
        "Kein Eintrag für ".$letter;
                }
            } else {
                echo 
        "Fehler bei der Abfrage";
            }
            
        $i++;

        Zuletzt geändert von syco23; 03.03.2004, 19:46.
        [COLOR=darkblue].: 1+1=23 :.[/COLOR]

        Kommentar


        • #5
          PHP-Code:
           "U" => "&Uunl;"
          PHP-Code:
           "U" => "&Uuml;"
          Die Zeit hat ihre Kinder längst gefressen

          Kommentar

          Lädt...
          X