+ Antworten
Ergebnis 1 bis 8 von 8

Thema: Automatische Artikelnummer generierung in PHP & MySQL

  1. #1
    TP-Veteran Flow09 ist auf einem guten Weg Avatar von Flow09
    Registriert seit
    Jun 2001
    Ort
    Wien
    Beiträge
    1.436

    Automatische Artikelnummer generierung in PHP & MySQL

    Hallo,

    ich brauch mal etwas Hilfe von euch! Ich hab den AUftrag eine automatische Artikelnummer generierung zu erstellen.

    Die Artikelnummern sehen z.B. so aus: 123FLOW1/1

    Es geht nun um folgendes: Der Kunde möchte beim erstellen eines neuen Artikels z.B. 123FLOW* eingeben und das Ergebniss soll automatisch 123FLOW2/1 sein. Soweit kein Problem, is ja nicht schwer, einfach den Stern durch Prozent ersetzen und im SQL "where artikelcode like '123FLOW%'" den Schrägstrich und die Nummer dahinter wegschneiden und die übrig gebliebene Zahl raufzählen.

    Jetzt mein Problem, es gibt zwei Artikel mit den Nummern:

    123FLOW1/1
    123FLO1/1

    Beides sind voneinander unabhängige Artikel und weisen keine Ähnlichkeit ausser den Artikelcode auf.

    Wenn ich nun 123FLO* eingebe, bekomm ich ja leider auch den 123FLOW1/1 raus, mit dem ich ja gar nicht arbeiten möchte sondern mit 123FLO1/1. Mein Problem ist, die Suche so einzuschränken das ich genau mit den richtigen Nummern arbeite und mir keines dazwischen kommt welches ich nicht haben will.

    Ich hoffe ich hab es halbwegs verständlich erklärt was ich möchte. Vielleicht denke ich auch viel zu kompliziert und die Lösung ist simpel.

    lg
    Flow
    Lesser known Programming Languages #13: SLOBOL
    ... Although many compilers allow you to take a coffee break while they compile, SLOBOL compilers allow you to travel to Bolivia to pick the coffee. Forty-three programmers are known to have died of boredom sitting at their terminals while waiting for a SLOBOL program to compile. Weary SLOBOL programmers often turn to a related (but infinitely faster) language, COCAINE.

  2. #2
    TP-Supporter tom81 ist auf einem guten Weg Avatar von tom81
    Registriert seit
    Mar 2006
    Ort
    Erftstadt
    Beiträge
    301
    Hi,

    kann man nicht einfach das * weglassen wenn hinter FLO nichts mehr kommt?

    Wenn ich also nach 123FLOW suche, gebe ich 123FLOW* ein und wenn ich nach 123FLO suche, dann gebe ich 123FLO ohne Sternchen ein.

    Dann musst du nur noch herausfinden ob das Sternchen da ist oder nicht und dazu deine Abfrage machen ...

    Gruß
    Tom
    "Ich darf das!"
    Der Mensch hat drei Wege, klug zu handeln. Erstens durch Nachdenken: Das ist der edelste. Zweitens durch Nachahmen: Das ist der leichteste. Drittens durch Erfahrung: Das ist der bitterste. (Konfuzius)

  3. #3
    TP-Veteran Flow09 ist auf einem guten Weg Avatar von Flow09
    Registriert seit
    Jun 2001
    Ort
    Wien
    Beiträge
    1.436
    Hey,

    ich denke das geht am Thema vorbei, egal ob 123FLO oder 123FLOW, es kommt dannach immer eine Zahl, und genau darum gehts, es muss der Artikel mit der höchsten Zahl gefunden werden und diese um eins erhöht werden.

    Sinn dahinter ist folgender: Der Kunde will nicht immer nachschauen welche Artikelnummer er schon vergeben hat.

    Es sind z.B. 123FLO1/1, 123FLO2/1, 123FLO3/1 schon vergeben, der Kunde legt nun einen neuen Artikel an und möchte diesem die Artikelnummer 123FLO(nächste freie Zahl)/1 geben. Um nicht selbst schauen zu müssen welche denn nun die nächste freie Zahl ist will er einfach * als Wildcard eingeben. Das System sucht sich dann automatisch die passende Zahl raus.

    Das Problem ist nur, daß suchen bei Artikeln mit zu ähnlichen Nummern 123FLO1/1 und 123FLOW1/1.
    Lesser known Programming Languages #13: SLOBOL
    ... Although many compilers allow you to take a coffee break while they compile, SLOBOL compilers allow you to travel to Bolivia to pick the coffee. Forty-three programmers are known to have died of boredom sitting at their terminals while waiting for a SLOBOL program to compile. Weary SLOBOL programmers often turn to a related (but infinitely faster) language, COCAINE.

  4. #4
    TP-Supporter tom81 ist auf einem guten Weg Avatar von tom81
    Registriert seit
    Mar 2006
    Ort
    Erftstadt
    Beiträge
    301
    Du speicherst also das 1/1 im selben Datensatz!?
    Dann vielleicht das (1)/1 in eine andere Spalte schreiben und auf index setzten.
    Wie sieht denn die DB aus? Würde dir gerne helfen, wenn ich kann...
    "Ich darf das!"
    Der Mensch hat drei Wege, klug zu handeln. Erstens durch Nachdenken: Das ist der edelste. Zweitens durch Nachahmen: Das ist der leichteste. Drittens durch Erfahrung: Das ist der bitterste. (Konfuzius)

  5. #5
    TP-Veteran fettmme bringt sich richtig ein fettmme bringt sich richtig ein Avatar von fettmme
    Registriert seit
    Feb 2002
    Beiträge
    1.491
    Ich fürchte man kein Dein Problem ohne genauere Erklärung nicht verstehen.

    Vielleicht hilft Dir der Hinweis, das es die wildcards % und _ gibt. Der Unterstrich entspricht genau einem Zeichen.

    Falls Dir dieser Hinweis nicht hilft, erkläre genauer was Du versuchst, und wie die Artikelnummern aufgebaut sind.

    [Nachtrag] Zu spät geantwortet ::

    Mal ins Unreine:

    PHP-Code:
    // $dao sei ein AdoDB Objekt

    // Datensätze holen
    $q $dao->GetRow('
    SELECT artikelnummer, substring(artikelnummer, 7,1) AS zahl 
    FROM `tabelle` 
    WHERE artikelnummer LIKE "123FLO_/_" 
    ORDER BY zahl 
    DESC LIMIT 1
    '
    );

    echo 
    $q['zahl']; 
    Geändert von fettmme (21.03.2006 um 18:10 Uhr)
    class GetProfileCustomerEntityReceiverInformationReceiverAndProgrammingInforma...{
    public function __construct(){ if(!$this) die(' '); } }
    http://www.thedailywtf.com/

  6. #6
    TP-Veteran Flow09 ist auf einem guten Weg Avatar von Flow09
    Registriert seit
    Jun 2001
    Ort
    Wien
    Beiträge
    1.436
    OK, ich habs jetzt gelöst! Vielleicht etwas kompliziert aber es funkt!

    Ich such mir in der Datenbank alle Artikel mit 123FLO* (der Stern wird dann duch % ersetzt),

    aus jedem gefundenen Datensatz extrahiere ich den Teil von der Position des Sterns bis zum Schrägstrich! Als Beispiel:

    Gefundene Datensätze:

    123FLO1/1
    123FLO2/1
    123FLOW1/1

    Nach dem extrahieren:

    1
    2
    W1

    Dann noch prüfen ob das Ergebniss eine Zahl ist (is_numeric), alles was keine Zahl ist fliegt raus (hier W1) der Rest (1 und 2) kommt in einen Array, der Array wird mit sort() geordnet und mit array_pop wird der letzte Eintrag ausgegeben und raufgezählt. Dann nur noch die neue Artikelnummer zusammensetzen und fertig!

    Mag ein bisschen umständlich sein, funktioniert aber!!

    lg
    Flow
    Geändert von Flow09 (21.03.2006 um 18:22 Uhr)
    Lesser known Programming Languages #13: SLOBOL
    ... Although many compilers allow you to take a coffee break while they compile, SLOBOL compilers allow you to travel to Bolivia to pick the coffee. Forty-three programmers are known to have died of boredom sitting at their terminals while waiting for a SLOBOL program to compile. Weary SLOBOL programmers often turn to a related (but infinitely faster) language, COCAINE.

  7. #7
    TP-Special Mod steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User Avatar von steffenk
    Registriert seit
    Feb 2005
    Ort
    Haan / NRW
    Beiträge
    12.869
    warum speicherst Du nicht Präfix und id getrennt in 2 Feldern ? Dann hast Du ein leichtes Handling, Artikelnummer kannst Du dann über ein CONCAT zusammensetzen.


    TYPO3 · MySQLDumper · dislabs
    ·
    manche Mühlen mahlen schneller ...
    "Ich habe Rücken"
    Horst Schlämmer


  8. #8
    TP-Veteran Flow09 ist auf einem guten Weg Avatar von Flow09
    Registriert seit
    Jun 2001
    Ort
    Wien
    Beiträge
    1.436
    Hast du natürlich recht, allerdings geht es hier um ein System was schon im Einsatz ist und wo ich jegliche "größere" Änderung verhindern möchte. Sprich Änderungen an der Datenbank ziehen dann noch weitere Kreise und mehr arbeit nach sich da andere Teile des Programms auch geändert werden müssten.
    Lesser known Programming Languages #13: SLOBOL
    ... Although many compilers allow you to take a coffee break while they compile, SLOBOL compilers allow you to travel to Bolivia to pick the coffee. Forty-three programmers are known to have died of boredom sitting at their terminals while waiting for a SLOBOL program to compile. Weary SLOBOL programmers often turn to a related (but infinitely faster) language, COCAINE.

+ Antworten

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51