nur die ersten 10 zeichen

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

  • nur die ersten 10 zeichen

    Hallo zusammen,

    Ich habe eine Übersicht von Bildern gemacht, welche je einen Titel tragen. Diesen Titel möchte ich in der Übersicht als anbruck darstellen, das heisst es sollen nur die ersten 10 zeichen gefolgt von 3 Punkten dargestelt.
    Soweit so gut, funst alles soweit.

    Nun habe ich festgestellt das gewisse Worte nicht 10 Zeichen lang sind, weil in der DB die Umlaute zbsp. ü ausgezählt werden.

    Wie kann ich das verhindern?

    PHP-Code:
    SELECT..... left(bild_beschreib10) as bild_beschreib from .....
    if (
    $bild_beschreib!= ""){$bild_beschreib $row["bild_beschreib"]."...";} 
    Für Eure Tipps bednke ich mich.

  • #2
    Sollte MySQL auch nicht mit den Multibytes zurecht kommen?

    Also ich würds ganz einfach PHP-Seitig lösen. Da kannste dann auch noch den kompletten String für das title-Attribut des img-Tags verwenden.

    Kommentar


    • #3
      Also ich würds ganz einfach PHP-Seitig lösen. Da kannste dann auch noch den kompletten String für das title-Attribut des img-Tags verwenden.
      mb_substr hilft da weiter.
      Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

      Kommentar


      • #4
        Ja, PHP-seitig kein Problem. Ne wirkliche Lösung für MySQL wäre da interessanter. Wenn das Problem überhaupt existiert.


        EDIT:

        Übrigens:

        SELECT LEFT( 'HÄLLÖ', 3 ) => HÄL

        Auch bei meiner utf8-Tabelle, du scheinst deine encodings falsch zu haben...

        Kommentar


        • #5
          Hmm, das bedeutet das mit der richtigen Codierung alles funktioniern sollte?!

          Ich habe nun utf8_bin und latain_german2 versucht leider ohne Erfolg.

          Aber ist es nicht so das die Select abfrage 1:1 den Inhalt ausliest und demnach zählt? Denn auch bei anderer Codierung steht immer noch ü statt ü

          Kommentar


          • #6
            Ich kann dir nicht sagen, woran es bei dir liegt. Fakt ist, dass es gehen sollte (mysql 5 getestet)

            Kommentar


            • #7
              Sorry, das ich nun nochmal so blöd nachfrage:

              Bei Dir steht in der Tabelle HÄLLÖ und er zählt nur 5 Zeichen?

              Kommentar


              • #8
                Würde ich (ungetestet) behaupten, zumindest schneidet er korrekt nach dem Dritten Zeichen ab, wie du siehst.

                Kommentar


                • #9
                  Und die Codierung der Tabelle sowie den einzelnen Zeilen ist utf8_bin?

                  Kommentar


                  • #10
                    CHARSET=utf8 japp

                    Haste auch mal die Verbindung geprüft? Ich teste direkt im admin.

                    Kommentar


                    • #11
                      ich weiss das in oracle dies ist:

                      substr(s,m[,n])
                      Teilstring von s ab Stelle m, n Zeichen lang (n nicht angegeben => bis Stringende)

                      Dies sollte mysql auch können.
                      Gruss
                      Entilan

                      ------------------------
                      SIE LIEBEN ES - WIR VERSICHERN ES!

                      Kommentar


                      • #12
                        Klar, aber hier geht es darum, dass die Fkt bei Sepp die Sonderzeichen (Multibyte) doppelt zählt, was meiner Erfahrung nach nicht so sein sollte, wenn die Zeichensätze korrekt eingestellt sind.

                        Kommentar


                        • #13
                          jep und so ist es auch. Wenn die korrekt eingestellt ist, dann kann er mit multibyte auch umgehen. Offensichtlich ist dies nicht der fall und denke daher der Sepp weiss nun was zu tun ist.

                          Wenn nicht => http://dev.mysql.com/doc/refman/5.0/...haracters.html
                          Zuletzt geändert von Entilan; 05.02.2008, 21:27.
                          Gruss
                          Entilan

                          ------------------------
                          SIE LIEBEN ES - WIR VERSICHERN ES!

                          Kommentar


                          • #14
                            Würde ich (ungetestet) behaupten, zumindest schneidet er korrekt nach dem Dritten Zeichen ab, wie du siehst.
                            Code:
                            character set client 	utf8
                            character set connection utf8
                            character set results 	utf8
                            
                            SELECT CHAR_LENGTH('HÄLLÖ') | 5
                            
                            SELECT CHAR_LENGTH(title) FROM content_pages WHERE id=21 | Brünn | 5
                            MySQL Zeichensätze
                            Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

                            Kommentar


                            • #15
                              Sorry, ich verstehe nicht ganz...wo muss ich nun den Hebel ansetzen' Ich habe bereits erfolglos folgendes versucht.
                              PHP-Code:
                              CHAR_LENGTH(bild_beschreib), left(bild_beschreib10

                              Kommentar

                              Lädt...
                              X