id zahlenfolge kürzen

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

  • id zahlenfolge kürzen

    hallo,

    ich hätte da gerne ein problem ... gelöst.

    ich habe bislang 3 tabellen:

    hersteller: hid | hname (min. 20 stck, max 30)
    produkt: pid | hid | pname | ... weitere parameter (min 200 stck, max 900)
    artikel: aid | ... weitere parameter (min 500, max 9999)

    artikel ist von produkt abhängig (zB. in farbe und grösse) aber hersteller
    unabhängig ... letzterer ist nur der vollständigkeit halber erwähnt.

    wollte ich jetzt einen artikel eindeutig durch eine eingegebene ziffernfolge
    beschreiben, sähe das zB so aus: 1231234 oder so 0120023. dabei
    definieren die ersten 3 ziffern das produkt (pid) und die letzten 4 ziffern
    den artikel (aid).

    für eine kurzeingabe muss man nun 7 ziffern eingeben ... für leute die
    kaum bis 3 zählen können schon eine schwierige aufgabe. deshalb möchte
    ich eigentlich mit so wenig wie möglich an ziffern auskommen (können auch
    buchstaben sein).

    füchse kämen jetzt auf die idee, eine verknüpfungstabelle zu erstellen.
    das geht aber in die hose, da theoretisch jeder artikel mit jedem produkt
    verknüpft werden kann.

    als praxisbeispiel "werbeartikel":
    produkt A (pid=1) entspricht einem feuerzeug mit einer entsprechend
    grossen druckfläche
    produkt B (pid=123) entspricht einem teller mit einer anderen druckfläche
    beide können mit dem selben motiv in farbe bedruckt werden
    (motiv+farbe = artikel = aid 4711)
    => eingabe 0014711 heisst feuerzeug mit motiv x in grösse y bedrucken
    => eingabe 1234711 heisst dasselbe auf dem teller

    hat jemand eine idee, wie ich einen möglichst kurzen aber eindeutigen
    bezeichner für die bisher 7stellige ziffernfolge generieren kann, der zudem
    eine einfache manuelle eingabe möglich macht?
    Kissolino.com

  • #2
    die führenden nullen kannst du weglassen

    oder aus 0014711 bzw. 1234711 machst du AID4711-1 bzw. AID4711-123, ich bilde mir ein, dass es dadurch zwar länger, aber leichter wird

    ein trennezichen zwischen pid und aid (oder zwischen aid und pid ) würde ich aber auf jeden fall reinmachen, auch wenn du's ohne trennzeichen ebensogut verarbeiten lassen kannst
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      Original geschrieben von mrhappiness
      die führenden nullen kannst du weglassen
      im prinzip ja, dann wäre 4711-1 oder 815-22 noch kürzer allerdings ist das trennzeichen doof (für die eingabe) ... ich überlege gerade, mit "a-z" zu arbeiten
      a=0
      z=25

      und darüber eine kurzform zu generieren ... obwohl, ich glaub das ist ne sch**ss-idee
      Kissolino.com

      Kommentar


      • #4
        47111 würde dann ehbbb heißen, ist das wirklich besser?

        geht's dir drum, das ding so kurz wie möglichzu haben oder so leicht merkbar wie möglich?

        warum ist "-" blöd bei der eingabe?
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          so kurz wie möglich ... wer sich die folge merken kann, kann auch 10 zeichen fehlerfrei eingeben
          warum ist "-" blöd bei der eingabe?
          ich muss ganz unterschiedliche eingabemöglichkeiten berücksichtigen ... daher wäre mein wunsch nur ziffern oder buchstaben zu haben.
          Kissolino.com

          Kommentar


          • #6
            Original geschrieben von Wurzel
            so kurz wie möglich ... wer sich das merken kann, kann auch 10 zeichen fehlerfrei eingeben
            daher ja das trennzeichen als auflockerndes element

            so kurz wie möglich wäre dann wohl 47111, was anderes fällt mir nicht ein
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              Hm .. du könntest auch die Zahl, die du dir hier konstruierst einfach in ein anderes Zahlensystem umrechnen:

              z.B. im Hexadezimalsystem sieht '1234711' so aus: '12D717'

              da du aber sogar mit allen Buchstaben arbeiten möchtest, kannst du auch das Zahlensystem mit der Basis 36 benutzen (0123456789abcdefghi...xyz)

              wenn ich mich nicht vertan habe, sähe dann '1234711' so aus: 'qgpj' (ohne Gewähr )

              und wenn du dann sogar noch zwischen Groß- und Kleinschreibung unterscheidest, hast du nochmal 26 Stellen mehr, was das ganze evtl. noch um eine Stelle verkürzt (ich hab jetzt aber keine Lust das nochmal zu rechnen )
              [color=red]Geht nicht[/color] ist keine Fehlermeldung

              Kommentar


              • #8
                Original geschrieben von Big Chief
                wenn ich mich nicht vertan habe, sähe dann '1234711' so aus: 'qgpj' (ohne Gewähr )
                äh ... wie bist du denn dahin gekommen ? *verwirrtichbin*
                Kissolino.com

                Kommentar


                • #9
                  ist einfach @wurzel

                  also du hast Zahlen zu Basis 36, so mit sind deine Darstellungsziffer: 0-9a-z, also folgt in Dezimal:

                  q = 26, steht an "bit 3" somit faktor 36^3*26 = 1213056
                  g = 16, steht an "bit 2" somit faktor 36^2*16 = 20736
                  p = 25, steht an "bit 1" somit faktor 36^1*25 = 900
                  j = 19, steht an "bit 0" somit faktor 36^0*19 = 19

                  Summe der Dezimal = 1234711

                  Kommentar


                  • #10
                    Basis: 36
                    1234711 / 36 = 34297 Rest 19 (19 => j)
                    34297 / 36 = 952 Rest 25 (25 => p)
                    952 / 36 = 26 Rest 16 (16 => g)
                    26 / 36 = Rest 26 (26 => q)

                    => Zahl im 36er-System: qgpj

                    und jetzt wieder zurückrechnen:
                    q*36^3+g*36^2+p*36+j =
                    26*36^3+16*36^2+25*36+19 = 1234711


                    ach ja:
                    die Buchstaben kommen daher, dass ich einfach das hex-system fortführe:
                    C=12, D=13, E=14, F=15,G=16,H=17,I=18, .....


                    EDIT:
                    und mal wieder zu spät ... und ich muss auch noch zugeben, dass der post von @asp2php übersichtlicher ist .. aber egal
                    Zuletzt geändert von Big Chief; 12.08.2004, 19:48.
                    [color=red]Geht nicht[/color] ist keine Fehlermeldung

                    Kommentar


                    • #11
                      aso ... das kommt davon, wenn man in der schule nicht aufgepasst hat

                      sowas schwebte mir vor ... mal sehen, wie weit ich damit komme ... thx
                      Kissolino.com

                      Kommentar


                      • #12
                        hehe ... mit der Schule hast du recht ... bei der Umrechnung hab ich mir tatsächlich Hilfe von einer Inet-Seite für Zwischenstufler geholt *jaja ... das Gedächtnis*
                        Aber .. ich schreib jetzt bessa nix mehr ... ich bin viieeell zu betrunken .... morgen wieder

                        aber trotzdem ... biddeschön
                        [color=red]Geht nicht[/color] ist keine Fehlermeldung

                        Kommentar


                        • #13
                          Original geschrieben von Wurzel

                          sowas schwebte mir vor ... mal sehen, wie weit ich damit komme ... thx
                          wer soll das eintippen? User? Wenn ja -> ohoh ... ist mutig von dir denn ich bezweifle ganz stark, dass sie mit Zahlen zu Basis 36 klar kommen.

                          Kommentar


                          • #14
                            ich denke nicht, dass sie das selbst ausrechnen müssen

                            und abtippen bzw. copy&pasten können mehr als selbst denken/rechnen
                            Ich denke, also bin ich. - Einige sind trotzdem...

                            Kommentar


                            • #15
                              Original geschrieben von asp2php
                              wer soll das eintippen? User? Wenn ja -> ohoh ... ist mutig von dir denn ich bezweifle ganz stark, dass sie mit Zahlen zu Basis 36 klar kommen.
                              natürlich nicht ... aber "qgpj" ist kürzer und schneller eingegeben, als "1234711" oder "123-4711" oder "AID123-4711"
                              Kissolino.com

                              Kommentar

                              Lädt...
                              X