php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2007

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 11.05.2007, 23:44  
Gast
 
Beiträge: n/a
Standard fortlaufende Rechnungsnummer

Hi,
ich habe folgendes Problem:
ein Kunde kann auf der Seite von unserem Schulorchester Karten bestellen.
Jede Bestellung soll dabei eine eindeutige ID haben ,die bei jedem bestellvorgang erhöht werden soll. Soweit so gut. Fortlaufende IDs lassen sich bei SQL mit auto_increment leicht lösen. Das Problem ist, dass diese neue ID im gleichen Skript, sobald der Satz in die DB eingetrage ist, nochmal gebraucht wird, um die Besätitungsemail an den Kunden zu versenden.
Ich könnte jetzt den Datensatz mit der höchsten ID aus der DB auslesen. Das find ich jetzt allerdings nicht sehr elegant, und race-conditions sind dann auch gleich vorprogrammiert.
Ich hoffe mein Problem ist durch meine Beschreibung klar geworden.

lg,
André
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 11.05.2007, 23:59  
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse:
Fortgeschritten
agrajag wird schon bald berühmt werdenagrajag wird schon bald berühmt werden
Standard

Wenn du MySQL verwendest kannst du mysql_insert_id() ( http://de2.php.net/mysql_insert_id ) dafür verwenden.
__________________
Today you...Tomorrow me.
agrajag ist offline  
Alt 12.05.2007, 00:19  
Gast
 
Beiträge: n/a
Standard

Exakt das habe ich gesucht. Vielen Dank.
 
Alt 12.05.2007, 00:20  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Du bist krass drauf ..
Zergling-new ist offline  
Alt 12.05.2007, 00:25  
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse:
Fortgeschritten
agrajag wird schon bald berühmt werdenagrajag wird schon bald berühmt werden
Standard

Zitat:
Zitat von Zergling
Du bist krass drauf ..
Wie darf man denn das verstehen?
__________________
Today you...Tomorrow me.
agrajag ist offline  
Alt 12.05.2007, 08:48  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Zitat:
Wie darf man denn das verstehen? :Smile
Ich nehme mal an, weil Zergling weiß, dass man sich durch mysql_insert_id() erst recht Race Conditions ermöglicht...

Statt dessen sollte man nach einem Statement mit

Code:
SELECT LAST_INSERT_ID()
die letzte auto_increment-ID abfragen. Steht meines Wissens auch unter http://de2.php.net/mysql_insert_id .
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline  
Alt 12.05.2007, 10:15  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Soweit es mir bekannt ist kann mysql_insert_id() genauso verwendet werden wenn du den resource_link mit angegeben wird. Dann wird die letzte auto_increment ID die mit dieser Kennung erstellt wird zurückgegeben. Egal was andere Clients machen.

ABER was ich nicht weiß ist was passiert wenn mysql_pconnect() verwendet wurde. Dann wird nicht per Client eine eigene Verbindung aufgebaut sondern eben zusammen verwendet.

Allerdings hatte ich bis jetzt noch nie das Problem dass ich irgendwo eine falsche ID bekommen habe mit mysql_insert_id().
Flor1an ist offline  
Alt 12.05.2007, 10:23  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Ich hatte mal ausprobiert, dass sich zwei mysql_insert_id()s möglicherweise das Ergebnis einer anderen Ausgabe einholen.

PHP-Code:
<?php
(mysql_connect(..) and mysql_select_db(..)) or die(..);
mysql_query('INSERT INTO ..');
echo 
'waiting..';
flush();
sleep(10);
echo 
time(), "\n
"
;
echo 
mysql_insert_id();
?>
(als "waiting.." erschien im 2. Browserfenster diese Datei aufgerufen)
PHP-Code:
<?php
(mysql_connect(..) and mysql_select_db(..)) or die(..);
mysql_query('INSERT INTO ..');
echo 
time(), "\n
"
;
echo 
mysql_insert_id();
?>
Beide haben jeweils die richtige ID geliefert.

Nein mit krass meinte ich vielmehr, dass ein Schüler schon Race-Conditions kennt, dazu noch die Schulorchester-Page codet, in der er wahrscheinlich auch noch musiziert. Wieder so ein Wunderkind? Wahrscheinlich rennt er auf 100m auch gleich 11,0.
Zergling-new ist offline  
Alt 12.05.2007, 11:05  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo RaZor,

Zitat:
ABER was ich nicht weiß ist was passiert wenn mysql_pconnect() verwendet wurde. Dann wird nicht per Client eine eigene Verbindung aufgebaut sondern eben zusammen verwendet.
Ich benutze eine einzige Verbindung während eines Requests und darüber laufen zig Anwendungen, da passiert es ab und an schon mal, dass man Race Conditions hat...
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline  
Alt 12.05.2007, 11:21  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Was passiert wenn du kein pconnect verwendest sondern einzelne Verbindungen? Kommt es dann immer noch zu Race Conditions? Das würd mich mal interessieren.

@Zergling: krass -> Race Conditions und dazu dann noch nicht wissen dass es mysql_insert_id() gibt das is krass ^^
Flor1an ist offline  
 


Themen-Optionen
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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Rechnungsnummer Vergabe ohne auto_imcrement Torsten.E Datenbanken 13 30.05.2007 17:00
syntax problem: fortlaufende textboxnummerierung in variable PHP Tipps 2005-2 4 06.09.2005 23:13
fortlaufende rechnungsnummern lindner PHP Tipps 2005-2 3 26.08.2005 09:30
Fortlaufende Nummer PHP Tipps 2005-2 8 27.06.2005 09:48
Fortlaufende Nummer jacos PHP Tipps 2004 4 23.08.2004 17:17

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
fortlaufende rechnungsnummer php, php fortlaufende rechnungsnummer, mysql rechnungsnummer, php automatische rechnungsnummer, fortlaufende nummerierung mysql php insert, mysql fortlaufende rechnungsnummer, fortlaufende rechnungsnummern php, rechnungsnummer fortlaufend php, rechnungsnummer mysql, php rechnungsnummer, php fortlaufende nummer vergeben, fortlaufende rechnungsnummer, fortlaufend rechnungsnummer sqlite insert, request php mit fortlaufender nummer, fortlaufende rechnungsnummer tipps, eindeutige id als rechnungsnummer, google.de rechnungsnummerierung, php mysql rechnungsnummer, mysql eindeutige eigene rechnungsnummer, rechnungsnummer php mysql

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:29 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.