Shop-Hilfe.com
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 21.03.2006, 15:41   #1
TP-Veteran
 
Benutzerbild von Flow09
 
Registriert seit: Jun 2001
Ort: Wien
Flow09 ist auf einem guten Weg

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.
Flow09 ist offline   Mit Zitat antworten


Alt 21.03.2006, 15:59   #2
TP-Senior
 
Benutzerbild von tom81
 
Registriert seit: Mar 2006
Ort: Erftstadt
tom81 ist auf einem guten Weg
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)
tom81 ist offline   Mit Zitat antworten
Alt 21.03.2006, 16:11   #3
TP-Veteran
 
Benutzerbild von Flow09
 
Registriert seit: Jun 2001
Ort: Wien
Flow09 ist auf einem guten Weg
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.
Flow09 ist offline   Mit Zitat antworten
Alt 21.03.2006, 16:35   #4
TP-Senior
 
Benutzerbild von tom81
 
Registriert seit: Mar 2006
Ort: Erftstadt
tom81 ist auf einem guten Weg
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)
tom81 ist offline   Mit Zitat antworten
Alt 21.03.2006, 16:49   #5
TP-Veteran
 
Benutzerbild von fettmme
 
Registriert seit: Feb 2002
fettmme bringt sich richtig einfettmme bringt sich richtig ein
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']; 
__________________
class GetProfileCustomerEntityReceiverInformationReceiverAndProgrammingInforma...{
public function __construct(){ if(!$this) die(' '); } }
http://www.thedailywtf.com/

Geändert von fettmme (21.03.2006 um 17:10 Uhr).
fettmme ist offline   Mit Zitat antworten
Alt 21.03.2006, 17:19   #6
TP-Veteran
 
Benutzerbild von Flow09
 
Registriert seit: Jun 2001
Ort: Wien
Flow09 ist auf einem guten Weg
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
__________________
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.

Geändert von Flow09 (21.03.2006 um 17:22 Uhr).
Flow09 ist offline   Mit Zitat antworten
Alt 21.03.2006, 19:23   #7
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
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
steffenk ist offline   Mit Zitat antworten
Alt 22.03.2006, 09:16   #8
TP-Veteran
 
Benutzerbild von Flow09
 
Registriert seit: Jun 2001
Ort: Wien
Flow09 ist auf einem guten Weg
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.
Flow09 ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
Automatische Artikelnummer generierung in PHP & MySQL Automatische Artikelnummer generierung in PHP & MySQL
« mySQL/PHP Programmiercode verbessern | Zeilenumbruch auch im Quellcode »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:56 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67