- Ad -
php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here!

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 26-09-2005, 08:43
yakuzza
 Junior Member
Links : Onlinestatus : yakuzza ist offline
Registriert seit: Jul 2005
Beiträge: 108
yakuzza ist zur Zeit noch ein unbeschriebenes Blatt
Standard Eindeutige Auftragsnummer generieren

Hallo,

ich programmiere gerade ein Warenwirtschaftssystem indem auch Aufträge erfasst werden. Nun möchte ich eine eindeutige Auftragsnummer generieren, die jeweils nur einmal vorkommt.

Mein Ansatz war dies über das Datum zu lösen z.B. so:

PHP-Code:
echo floor(date("dmYhis") / 4000000000); 
dies ist allerdings nicht gerade eine elegante Lösung. Das Ergebnis wäre hier eine 4 Stellige Zahl (was auch so gewünscht ist) allerdings ändern sich bei der Division ja meist nicht die ersten 4 Zahlen.

Ich dachte mir schon eine random Zahl generieren zu lassen und zu prüfen ob diese schon in der db vorhanden ist.. aber das ist meiner meinung nach etwas zu umständlich. Weiß jmd. wie ich sowas ganz enfach lösen kann?
Mit Zitat antworten
  #2 (permalink)  
Alt 26-09-2005, 08:48
kaguya
 Newbie
Links : Onlinestatus : kaguya ist offline
Registriert seit: Apr 2004
Beiträge: 132
kaguya ist zur Zeit noch ein unbeschriebenes Blatt
kaguya eine Nachricht über ICQ schicken
Standard

Wie willst du eine eindeutige Nummer generieren ohne diese mit vorhandenen abzugleichen ?

Davon abgesehen halte ich es bei einem WaWi System für wesentlich sinnvoller aufsteigende Auftragsnummern zu haben wo der Nutzer am besten den Startwert einstellen kann. So zufällig generierte Nummern sind doch total verwirrend und ohne weitere Daten nicht zuzuordnen
Mit Zitat antworten
  #3 (permalink)  
Alt 26-09-2005, 08:54
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.283
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Allenfalls: Auftragsnummer === MySql Id (jene ID, die der Auftrag in deiner DB erhält).
Wenn das ID Feld in der DB als Primary Key und autoincrement definiert ist, solltest du sicher sein können, dass eine Nummer immer eindeutig ist.

Gruss

tobi
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #4 (permalink)  
Alt 26-09-2005, 09:03
yakuzza
 Junior Member
Links : Onlinestatus : yakuzza ist offline
Registriert seit: Jul 2005
Beiträge: 108
yakuzza ist zur Zeit noch ein unbeschriebenes Blatt
Standard

stimmt eigentlich aufsteigende nummern macht mehr sinn

Danke
Mit Zitat antworten
  #5 (permalink)  
Alt 26-09-2005, 09:53
mrhappiness
 PHP Guru
Links : Onlinestatus : mrhappiness ist offline
Registriert seit: Oct 2002
Beiträge: 14.890
mrhappiness ist zur Zeit noch ein unbeschriebenes Blatt
mrhappiness eine Nachricht über AIM schicken mrhappiness eine Nachricht über Yahoo! schicken
Standard

Für kosmetische Zwecke kannst du die DB ja einstellen, dass je Kundennummer hochgezählt wird.

Für die Kommunikation mit dem Kunden nimmst du dann Kundennummer, Auftragsnummer, Jahr; alles schön "gepaddet" und die Sonne scheint wieder
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
Mit Zitat antworten
  #6 (permalink)  
Alt 26-09-2005, 14:44
Spliffster
 Junior Member
Links : Onlinestatus : Spliffster ist offline
Registriert seit: May 2005
Beiträge: 71
Spliffster ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ansonsten macht man für eine einzigartige ID einfach sowas:

PHP-Code:

$id
=md5(time().rand(1999)); 
Mit Zitat antworten
  #7 (permalink)  
Alt 26-09-2005, 14:52
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Spliffster, du hast vergessen, die zahl mit einer jeden dritten nachkommastelle von pi zwischen dem 2419. und dem 2711. zeichen zu multiplizieren.

meinst du, diese verrenkungen haben sinn? außerdem lässt sich deine id rekonstruieren/voraussagen.
Mit Zitat antworten
  #8 (permalink)  
Alt 26-09-2005, 14:55
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 24.486
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von penizillin
außerdem lässt sich deine id rekonstruieren/voraussagen.
Nur weil MD5 mittlerweile als "broken" gilt, glaubst du seine zeit- und zufallsabhängigen IDs "voraussagen" zu können? *sehenWill*


btw: uniqid() gibt's übrigens auch noch ...
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #9 (permalink)  
Alt 26-09-2005, 15:03
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

nein, natürlich nicht.

ich sehe aber, dass er einen string hasht, der aus einem timestamp und einer zahl zwischen 1 und 999 besteht.

d.h. wenn ich die zeit des erstellens ungefähr weiß, kann ich durch banales bruteforce-n (das durch die integers ein kinderspiel von 3-4 zeilen ist) die id mit einer gewissen wahrscheinlichkeit voraussagen/rekonstruieren. (zwar keiner hohen für unsere makrowelt, aber immer noch einer viel höheren, als z.b. uniqid()).
Mit Zitat antworten
  #10 (permalink)  
Alt 26-09-2005, 15:06
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 24.486
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von penizillin
ich sehe aber, dass er einen string hasht, der aus einem timestamp und einer zahl zwischen 1 und 999 besteht.
Das siehst du jetzt, weil du den Code vorliegen hast.

Aber wenn du als Außenstehender nachher eine dieser IDs vor dir hast, dann sagst du doch bestimmt nicht mehr auf Anhieb, "ganz klar, das ist MD5 von Zeitstempel plus Zufallszahl zwischen 1 und 999!" ...
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #11 (permalink)  
Alt 26-09-2005, 15:09
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

du hast natürlich recht, den code muss man dafür gesehen haben.
Mit Zitat antworten
  #12 (permalink)  
Alt 26-09-2005, 15:16
Ueps
 Junior Member
Links : Onlinestatus : Ueps ist offline
Registriert seit: Dec 2003
Beiträge: 81
Ueps ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Verstehe das Problem nicht. Sobald das Schema bekannt ist, was bei Auftragsnummer ja der Fall ist, lässt sich so ziemlich jede Auftragsnummer rekonstruieren. Ansonsten müsste er ja jedesmal eine rein Zufällige ID vergeben, was ich für sein Vorhaben allerdings sehr uninteressant finde, denn meist sind die Auftragsnummer so gestalltet das gewisse Blöcke hinweise zur Art des Auftrages geben.

Nochmal kurz: Wo sind die Bedenken, wenn sich die Auftrags-/Vorgangsnummer rekonstruieren lässt?
Mit Zitat antworten
  #13 (permalink)  
Alt 26-09-2005, 15:18
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

in diesem zusammenhang - nirgendwo. jahlives hat bereits die richtige antwort gegeben. meine antwort auf Spliffsters beitrag hätte wohl in ot-tags gemusst.
Mit Zitat antworten
  #14 (permalink)  
Alt 26-09-2005, 15:26
Ueps
 Junior Member
Links : Onlinestatus : Ueps ist offline
Registriert seit: Dec 2003
Beiträge: 81
Ueps ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ah ok... ich würde auch jahlives vorschlag unterstützen, denn md5 klamotten machen es dem Kunden und Mitarbeitern am Telefon nicht gerade leicht: "Können Sie mir die Auftragsnummer nennen?", ab diesem Zeitpunkt hört man wohl ein tuten in der Leitung.
Mit Zitat antworten
  #15 (permalink)  
Alt 28-09-2005, 16:42
Spliffster
 Junior Member
Links : Onlinestatus : Spliffster ist offline
Registriert seit: May 2005
Beiträge: 71
Spliffster ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich will nur noch mal anmerken dass es mir dabei einzig um eine eindeutige/einzigartige ID ging. Bei der die Wahrscheinlichkeit, dass sie mehrfach erzeugt wird, auch unter ungünstigen Umständen relativ gering ist. Wobei uniqid() da sicher noch einiges vorteilhafter ist.

/Für einen externen Gebrauch ist diese natürlich nur bedingt nutzbar.
Mit Zitat antworten
Antwort

Lesezeichen


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

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

MariaDB 5.5 veröffentlicht
MariaDB 5.5 veröffentlichtDie freie MySQL-Alternative MariaDB wurde in der stabilen Version 5.5.23 veröffentlicht und soll einige Verbesserungen gegenüber Oracles Communityversion von MySQL mitbringen.

16.04.2012 | Berni

Deutsche Yii Framework Community
Deutsche Yii Framework CommunitySeit dem 19.03.2012 gibt es für die Yii PHP Framework Community ein deutsches Zuhause.

20.03.2012 | dhcomputer

 

Aktuelle PHP Scripte

Advanced Login ansehen Advanced Login

Login-System und Kundenverwaltung, die sich spielend leicht in bestehende Webseiten einbauen lässt und einen enormen Funktionsumfang bietet. Ihre eigene Webseite muss mit Advanced Login nicht umständlich an ein fertiges System angepasst werden.

25.05.2012 Madden | Kategorie: PHP/ Kundenverwaltung
BROM CMS/BelCal 3 ansehen BROM CMS/BelCal 3

Spezielles CMS für Betreiber von Ferienwohnungen. Komplette Seitenerstellung online, Verwaltung mehrerer Objekte, Reservierungssystem mit sofortigem Abgleich im Belegungskalender und vieles mehr bietet dieses Content Management System.

25.05.2012 belcal2 | Kategorie: PHP/ CMS
belbit LiveSupport Script ansehen belbit LiveSupport Script

Schnellen und unkomplizierten Support im LiveSupport-Chat anbieten. Ohne Datenbank und in wenigen Sekunden installiert.

24.05.2012 EichbaumMedia | Kategorie: PHP/ Chat
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 09:07 Uhr.