WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 08.12.2004, 18:50   #1
fenster
Master
 
Registriert seit: 29.12.2001
Beiträge: 797


Standard php mysql problem mit kundenanmeldung und id

hallo

habe da ein keines prob

habe da ein formualr
bei dem sich kunden neu anmelden können
name vorname usw.

und auch ein passwort feld

wenn alle felder ausgefüllt sind
wird eine kunden nummer automatisch (id)
vergeben
(die kann der kunde nicht selber wählen )
in der sql datenbank

den id und das passwort benötigt
er dann später zum einloggen


nur das problem ist dass der kunde seine
kunden nr (id) nicht kennt da die ja
von der datenbank automatisch erzeugt wird

wie soll ich jetzt eine ausgabe (abfrage) machen
und dem neuen kunden seine kunden nr
zeigen damit er sch später einlogen kann ?


gruß
fenster
fenster ist offline   Mit Zitat antworten
Alt 08.12.2004, 19:04   #2
T.dot
Master
 
Registriert seit: 13.08.2003
Beiträge: 624


Standard

Hi!

Nachdem du deine Insertabfrage ausgeführt hast kannst du die letzte generierte ID auslesen, dies macht man so:

zb Insert:
INSERT INTO tblUser(Name) VALUES ('Hr. Maier';

Abrufen der ID:
SELECT LAST_INSERT_ID( )

Das liefert dir genau einen Wert mit der zuletzt hinzugefügten ID zurück.

Eine zweite Variante wäre, dass du einfach den maximalwert der ID auslest, also "Select max(ID) from tblUser"
oder "select max(ID) from tblUser WHERE Name='Hr. Maier'"

mfg Thomas
T.dot ist offline   Mit Zitat antworten
Alt 08.12.2004, 20:15   #3
snowman
Inventar
 
Registriert seit: 26.09.1999
Beiträge: 2.569


Standard

Dazu würde ich mir aber das hier anschauen:
http://dev.mysql.com/doc/mysql/en/Tr..._Commands.html
Damit sich nicht zwei gleichzeitig anmelden können, und dann eventuell die falsche id ausgegeben wird.

gruss,
snowman
____________________________________
MediaMarkt? Ich bin doch nicht blöd, Mann!

Vorsprung durch Technik

Lesen Sie keine Anleitungen, FAQs, Readme - Files. Reine Zeitverschwendung. In den Newsgroups und Foren gibt es genug kompetente Leute, die mit großer Geduld immer wieder dieselben einfachen Fragen beantworten. Völlig kostenlos noch dazu!
snowman ist offline   Mit Zitat antworten
Alt 14.12.2004, 12:24   #4
mqs
Master
 
Registriert seit: 08.05.2001
Alter: 44
Beiträge: 533


mqs eine Nachricht über ICQ schicken
Standard

Zitat:
Original geschrieben von snowman
Damit sich nicht zwei gleichzeitig anmelden können, und dann eventuell die falsche id ausgegeben wird.
bei einer unique id (autoincrement) sollte das aber nicht vorkommen


hier nach dem eintragen in die db kannst mit dem code die id abfragen

$lastid = mysql_insert_id();
____________________________________
http://www.schmausen.at
Dein Infoportal für Mittagsmenüs in Klagenfurt
mqs ist offline   Mit Zitat antworten
Alt 14.12.2004, 13:09   #5
T.dot
Master
 
Registriert seit: 13.08.2003
Beiträge: 624


Standard

Zitat:
bei einer unique id (autoincrement) sollte das aber nicht vorkommen
theoretisch ja, praktisch jein.

Wenn sich zwei Leute zu einem ziemlich genau gleichen Zeitpunkt anmelden kanns es dazu kommen, dass die beiden inserts zum fast gleichen zeitpunkt ausgeführt werden. danach liest du die letzte id aus - dadurch kriegst du dann zweimal die gleiche (letzte) id zurück.

Deshalb sollte man das über eine Transaction machen (wusste selber gar nicht das des bei mysql gibt, kenn des nur ms-sql).

mfg Thomas
T.dot ist offline   Mit Zitat antworten
Alt 14.12.2004, 13:11   #6
mqs
Master
 
Registriert seit: 08.05.2001
Alter: 44
Beiträge: 533


mqs eine Nachricht über ICQ schicken
Standard

gut zu wissen... das wusste ich bis jetzt noch nicht.. hab gedacht das es zu diesem problem nicht kommt bei autoincrement
____________________________________
http://www.schmausen.at
Dein Infoportal für Mittagsmenüs in Klagenfurt
mqs ist offline   Mit Zitat antworten
Alt 14.12.2004, 13:54   #7
snowman
Inventar
 
Registriert seit: 26.09.1999
Beiträge: 2.569


Standard

Zitat:
Original geschrieben von T.dot
Wenn sich zwei Leute zu einem ziemlich genau gleichen Zeitpunkt anmelden kanns es dazu kommen, dass die beiden inserts zum fast gleichen zeitpunkt ausgeführt werden. danach liest du die letzte id aus - dadurch kriegst du dann zweimal die gleiche (letzte) id zurück.
Genau darum gehts.

gruss,
snowman
____________________________________
MediaMarkt? Ich bin doch nicht blöd, Mann!

Vorsprung durch Technik

Lesen Sie keine Anleitungen, FAQs, Readme - Files. Reine Zeitverschwendung. In den Newsgroups und Foren gibt es genug kompetente Leute, die mit großer Geduld immer wieder dieselben einfachen Fragen beantworten. Völlig kostenlos noch dazu!
snowman ist offline   Mit Zitat antworten
Alt 14.12.2004, 16:05   #8
fenster
Master
 
Registriert seit: 29.12.2001
Beiträge: 797


Standard ich habe es so gemacht

hallo

ich hab das prob so gelöst
printf("Ihre Kunden Nr. ist: %d\n", mysql_insert_id());


gruß
fenster
fenster ist offline   Mit Zitat antworten
Alt 14.12.2004, 16:15   #9
T.dot
Master
 
Registriert seit: 13.08.2003
Beiträge: 624


Standard

@snowman

juhu ich habs verstanden

@fenster

naja, genau das ist es eben nicht. Angenommen du machst zwei inserts fast gleichzeitig, dann ist die last_insert_id die insgesamt letze id.

einfaches bsp (timestamp/geschehen):

01: php-script-insert, id wäre 5
02: php-script-liest id aus -> 5

01: php-script-insert (1. user), id wäre 5
02: php-script-insert (2. user), id wäre 6
03: php-script-liest (1. user) id aus -> kriegt 6
04: php-script-liest (2. user) id aus -> kriegt 6

Ich würd sowieso dem kunden einen namen und ein passwort geben und ihm ned die ID geben. Persönlich arbeite ich in php/mysql auch ned mit transactions, da bei mir höchstens jemand der einen neuen Forumthread erstellt zum falschen Thread weitergeleitet wird -> sein Pech.

mfg Thomas
T.dot ist offline   Mit Zitat antworten
Antwort


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

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.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:55 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag