Ankündigung

Einklappen
Keine Ankündigung bisher.

Dropdown Liste - mehrere Spalten - werden jedoch nicht genau untereinander angezeigt

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

  • Dropdown Liste - mehrere Spalten - werden jedoch nicht genau untereinander angezeigt

    Guten Abend...

    Habe in einem Formular eine Dropdownliste, welche die Werte dynamisch aus einer Datenbank einlist ---> funktioniert.

    Es werden dabei mehrere Spalten in der Dropdownliste angezeigt - diese einzelnen Spalten sind jedoch nicht genau untereinander

    siehe Bild....

    Wie bekomme ich das so hin, das die Spalten genau untereinander angezeigt werden (Problem liegt vermutlich daran, dass die

    Einträge in den Spalten nicht die gleiche Zeichenanzahl aufweisen



    PHP-Code:
    //<code>
    $db JFactory::getDBO();
    $db->setQuery("SELECT `Auswahl1`, `Auto` , `Telefonnummer` FROM #__aaa  ORDER BY Streifenname");
    $rez $db->loadObjectList();
    $items "|Select...\n";
    foreach(
    $rez as $r){
        
    $items .= $r->Auswahl1.  "   |   " .$r->Auto.  " & " .$r->Telefonnummer" & " .$r->Handy.        "\n";
    }
    return 
    trim($items);
    //</code> 

    dropdown-liste.PNG


  • #2
    Herzlichen Dank für eure Hilfe ...

    Kommentar


    • #3
      Moin,

      du könntest in deiner Abfrage rpad() nutzen um die Einträge der Spalten beim Auslesen auf die gleiche Länge zu bringen. Die Werte würden dann mit Leerzeichen bis zur angegeben Zeichenanzahl aufgefüllt werden.

      Code:
      SELECT RPAD(`Auswahl1`, `Auto`, 30, ' ') FROM #__aaa  ...
      Handbuch



      Relax, you're doing fine.
      RTFM | php.de Wissenssammlung | Datenbankindizes | Dateien in der DB?

      Kommentar


      • #4
        Er muss dazu aber vorher die maximale Zeichenlänge kennen, die je Spalte vorkommt. Hier mit der Aggregatfunktion MAX mit der Stringfunktion CHAR LENGTH umzusetzen.
        Code:
        SELECT MAX(CHAR LENGTH(Auswahl 1)) AS LEN ...

        Kommentar


        • #5
          Alles gut und schön, sobald UTF-8 character ins Spiel kommen, siehts wieder Kacke aus
          Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

          Kommentar


          • #6
            Du könntest es auch mit JavaScript lösen
            Hier ein Fiddle aus diesem Thread

            Kommentar


            • #7
              @lstegelitz
              Worauf beziehst du dich konkret?

              Kommentar


              • #8
                Zitat von protestix Beitrag anzeigen
                @lstegelitz
                Worauf beziehst du dich konkret?
                Naja, für so eine Formatierung braucht es ja einen Monospace Font, es scheint aber nichts 100%iges zu geben (oder ich habe bisher nichts dergleichen gefunden)...

                Windows 10, die Konsole läuft unter codepage 65001 mit "Consolas" Font, Datenbank "10.1.13-MariaDB"
                Code:
                MariaDB [tmp]> SHOW VARIABLES LIKE 'character_set%';
                +--------------------------+--------------------------------+
                | Variable_name            | Value                          |
                +--------------------------+--------------------------------+
                | character_set_client     | utf8                           |
                | character_set_connection | utf8                           |
                | character_set_database   | utf8                           |
                | character_set_filesystem | binary                         |
                | character_set_results    | utf8                           |
                | character_set_server     | utf8                           |
                | character_set_system     | utf8                           |
                | character_sets_dir       | E:\xampp\mysql\share\charsets\ |
                +--------------------------+--------------------------------+
                8 rows in set (0.00 sec)
                In der Konsole (Windows UNICODE) werden relativ viele Zeichen durch ersetzt, vermutlich im benutzten Font nicht gemappt.
                Die Ausgabe sieht dort viel ordentlicher aus als hier im Post... trotzdem sieht man bereits 2 Verschiebungen, eine zwischen den Hochkommas,
                das andere mal bei der von MariaDB berechneten Umrandung
                utf8_padded.png

                Und hier das Copy&Paste aus der Konsole ins Forum (CODE Block benutzt Courier New?)
                Code:
                MariaDB [tmp]> select id, concat('"', rpad(name, 60, ' '), '"') as name from tmp where id in(19503,19553,18724,18919,18937,19273,19624,2112298);
                +---------+-------------------------------------------------------------------------------------------------------+
                | id      | name                                                                                                  |
                +---------+-------------------------------------------------------------------------------------------------------+
                |   18724 | "©ˢᶰᵉᵃᵏᵉʳ ✰ѕυηѕнιηє✰                                         "                                        |
                |   18919 | "~☜✿☞~LuCkY~☜✿☞~                                             "                                        |
                |   18937 | "©ˢᶰᵉᵃᵏᵉʳ ♡ѕтяαωвєяяу♡                                       "                                        |
                |   19273 | "ᵐˡᵒ*ஐ⚢Lemonie Nr.66 ஐ*                                      "                                        |
                |   19503 | "ƑƛƓƲƧ  ƧƳԼƔƛƬƖƇƲƧ                                           "                                        |
                |   19553 | "(V) 30 / ஜ۞ஜ Laubi ஜ۞ஜ (S 1)                                "                                        |
                |   19624 | "葉 ɢoldeɴer нerвѕт 葉                                         "                                      |
                | 2112298 | "⛄) hεƦƦ $απ†α chε.Ʀ.Ʀψ cøκε (ᶻᵖ⁼ˢᵃᵇᵇᶤᶤᶤ⁼ˣ3                  "                                        |
                +---------+-------------------------------------------------------------------------------------------------------+
                8 rows in set (0.00 sec)

                Die Namen hab ich mir übrigens nicht ausgedacht, das sind "real life" Eingaben eines Browserspiels
                Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                Kommentar


                • #9
                  Das etliche Zeichen nicht im Zeichenvorast eines Zeichensatzes sind ist ja normal, es gibt derzeit, denke ich, keinen Zeichensatz der den gesamten Zeichenvorrat von Unicode abbilden kann mit Ausnahme von GNU Unifont. Ist ja auch gar nicht notwendig. Darüber hinaus betrifft dieses Problem ja nicht nur dicktengleiche Schriften sondern ebenso Proprtionalschriften.
                  Das hat aber mit UTF8 nichts zu tun. Bei mir im Browser werden zumindest die Abstände eingehalten und darauf kommt es doch an.

                  Kommentar

                  Lädt...
                  X