php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 21-08-2004, 17:29
christianpfeil
 Newbie
Links : Onlinestatus : christianpfeil ist offline
Registriert seit: Aug 2004
Beiträge: 12
christianpfeil ist zur Zeit noch ein unbeschriebenes Blatt
Unhappy Nächsten AutoIncrement Wert herausfinden?

Hallo Zusammen!

Ich würde gerne wissen wie ich mit php den nächsten AutoIncrement Wert in einer mySQL tabelle herausfinden kann. Habe das ganze bisher so gehandhabt:

PHP-Code:
#Nächsten AUTO-INCREMENT Wert herausfinden.
$id=mysql_query("SHOW TABLE STATUS LIKE 'artikel'");
$zeile0=mysql_fetch_array($id); 
Leider läuft das ganze nur bei den neusten php Versionen. Ältere Versionen machen das nicht. Das Problem ist, das ich nicht immer die höchste ID in der tabelle "artikel" als ausgangspunkt für den nächsten AutoIncrement Wert nehmen kann. Wenn ich einen Artikel mit der ID 20 drinnen habe könnte man annehmen der nächste Wert wäre 21. Was aber wenn ein Artikel mit der ID 21 bereits existiert hat, gelöscht wurde, und mySQL beim nächsten Artikel nicht 21 sondern 22 nimmt?

Weiß jemand eine Lösung,
wäre sehr dankbar.

Gruss Christian
Mit Zitat antworten
  #2 (permalink)  
Alt 21-08-2004, 17:30
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.623
Abraxax befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
print_r($zeile0); 
__________________
INFO: Erst suchen, dann posten! | MANUAL(s): PHP | MySQL | HTML/JS/CSS | NICE: GNOME Do | TESTS: Gästebuch | IM: Jabber.org |


Mit Zitat antworten
  #3 (permalink)  
Alt 21-08-2004, 18:57
christianpfeil
 Newbie
Links : Onlinestatus : christianpfeil ist offline
Registriert seit: Aug 2004
Beiträge: 12
christianpfeil ist zur Zeit noch ein unbeschriebenes Blatt
Standard

danke, diesen befehl kannte ich bisher noch nicht. ich werde es gleich mal ausprobieren was es mir ausgibt.

gruss christian
Mit Zitat antworten
  #4 (permalink)  
Alt 21-08-2004, 21:23
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard Re: Nächsten AutoIncrement Wert herausfinden?

Zitat:
Original geschrieben von christianpfeil

Ich würde gerne wissen wie ich mit php den nächsten AutoIncrement Wert in einer mySQL tabelle herausfinden kann.
wofür soll das gut sein?
Mit Zitat antworten
  #5 (permalink)  
Alt 21-08-2004, 21:26
MaxP0W3R
 PHP Senior
Links : Onlinestatus : MaxP0W3R ist offline
Registriert seit: Dec 2003
Beiträge: 1.809
MaxP0W3R ist zur Zeit noch ein unbeschriebenes Blatt
Standard

wozu braucht man die nächste autoincrement id ?
__________________


An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )
Mit Zitat antworten
  #6 (permalink)  
Alt 21-08-2004, 22:02
jannik
 Newbie
Links : Onlinestatus : jannik ist offline
Registriert seit: Dec 2002
Beiträge: 47
jannik ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Auto Increment ist eh fürn *sry* Ar***!
Hab nen script, damit ich in dieser hinsicht nicht auf mysql angwiesen bin...

B2T: Aber wofür man das braucht interessiert mich auch
Mit Zitat antworten
  #7 (permalink)  
Alt 22-08-2004, 11:29
goth
  Moderator
Links : Onlinestatus : goth ist offline
Registriert seit: Mar 2002
Ort: Erde
Beiträge: 7.279
goth ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von jannik
Auto Increment ist eh fürn *sry* Ar***!
Hab nen script, damit ich in dieser hinsicht nicht auf mysql angwiesen bin...
Na ... der Grund für diese Aussage würde mich allerdings mal interessieren ... !

... lässt wohl eher auf unwissen schliessen ... !
__________________
carpe noctem

Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht!
Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung!
Mit Zitat antworten
  #8 (permalink)  
Alt 22-08-2004, 11:31
DanielD
 Junior Member
Links : Onlinestatus : DanielD ist offline
Registriert seit: Oct 2003
Beiträge: 234
DanielD ist zur Zeit noch ein unbeschriebenes Blatt
DanielD eine Nachricht über ICQ schicken
Standard

wie jetzt goth ... sag bloß du wusstest nicht dass eindeutige ids in datenbanken totaler schwachsinn sind .... und sowas mit deiner erfahrung *g*

btw: Ich will [ironie] tags hier im forum ....

mfG

EDIT:
Damits net wie Spam aussieht, hier des Rätsels Lösung (oder jedenfalls eine Möglichkeit):
http://www.hk8.org/old_web/linux/sql/ch06_05.htm

__________________
CMS-X Medien- und Modelagentur


Geändert von DanielD (22-08-2004 um 11:34 Uhr)
Mit Zitat antworten
  #9 (permalink)  
Alt 22-08-2004, 12:05
Quickborner
 Junior Member
Links : Onlinestatus : Quickborner ist offline
Registriert seit: May 2004
Beiträge: 62
Quickborner ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von goth
Na ... der Grund für diese Aussage würde mich allerdings mal interessieren ... !

... lässt wohl eher auf unwissen schliessen ... !
nun, goth, das sehe ich anders und gebe jannik recht.

Wie vergebt ihr denn die nächste Artikelnummer, Kundennr, RG-Nummer etc.?

etwa per auto_increment? wohl kaum.

Jedenfalls überlasse ich (zumindes by mySql) die Business-Logik nicht der Datenbank.

Ich benutze auch so eine Funktion wie vermutlich jannik:
ich habe eine Tabelle nummern:
2 Spalten:
bereich | nummer
artikelnr | 1500
debitor | 70001
...
vor einem Artikel-Insert kommt: $artnr=fxgetnext("artikelnr");
(erhöht nummer für 'artikelnr' um 1 und returned den Wert);

So habe ich *vor* einem Insert die neue Nummer und kann diese in relationalen Tabellen
zu Artikel benutzen. Und so wird es bei Christian sein,
er braucht diese ID, weil er sie in anderen Tabellen referenziert.
(übrigens ist hier die Lösung :SELECT LAST_INSERT_ID() from tabelle; )

Ich benutze auto_increment, wenn überhaupt, nur für temp-Tabellen,
weil es auch nicht sehr portabel auf andere RDBMS ist.

außerdem vergeben einige mySql-Version einen ai-wert mehrfach, nachdem
der höchste gelöscht wurde; und das ist im günstigsten Fall schlecht.

Dies soll kein Streß- oder Philosophie-Post sein;
wenn jemand qualitative,sachliche Argumente gegen meine Version
vorbringt, bin ich gerne bereit, meine Arbeit umzustellen.

nice day
Quickborner
Mit Zitat antworten
  #10 (permalink)  
Alt 22-08-2004, 12:39
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von jannik
Auto Increment ist eh fürn *sry* Ar***!
Hab nen script, damit ich in dieser hinsicht nicht auf mysql angwiesen bin...

B2T: Aber wofür man das braucht interessiert mich auch
wenn du keine Ahnung hast wovon du sprichst, dann spreche lieber nicht, denn wenn du schon soviel Ahnung hast, was soll denn dann der Thread hier: [SQL allgemein] Felder anhand von Ai auslesen

BTW: ** verschiebe zu SQL **
Mit Zitat antworten
  #11 (permalink)  
Alt 22-08-2004, 12:47
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von Quickborner

Ich benutze auch so eine Funktion wie vermutlich jannik:
ich habe eine Tabelle nummern:
2 Spalten:
bereich | nummer
artikelnr | 1500
debitor | 70001
...
vor einem Artikel-Insert kommt: $artnr=fxgetnext("artikelnr");
(erhöht nummer für 'artikelnr' um 1 und returned den Wert);
So habe ich *vor* einem Insert die neue Nummer und kann diese in relationalen Tabellen
zu Artikel benutzen.
Du speicherst sozusagen vor dem Insert der restlichen Daten schon die neue Nummer. Was passiert, wenn der User sich anders überlegt und auf Abbrechen klickt, währenddessen ein anderer User, der später dazu kam, seine Eingabe voll durchzieht.
Mit Zitat antworten
  #12 (permalink)  
Alt 22-08-2004, 13:07
pekka
 PHP Master
Links : Onlinestatus : pekka ist offline
Registriert seit: Jun 2001
Ort: Köln
Beiträge: 6.608
pekka befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von Quickborner
nun, goth, das sehe ich anders und gebe jannik recht.

Wie vergebt ihr denn die nächste Artikelnummer, Kundennr, RG-Nummer etc.?

etwa per auto_increment? wohl kaum.

Jedenfalls überlasse ich (zumindes by mySql) die Business-Logik nicht der Datenbank.

Verlangt ja auch keiner. Aber Kundennummern, Artikelnummern und so weiter können sich ändern. Der Sinn einer AutoIncrement-ID ist die eindeutige Identifizierung eines bestimmten Datensatzes innerhalb der Datenbank, das hat mit der Business-Logik nichts zu tun. Oder was machst Du mit Kundennummern, die ein bestimmtes Format haben oder alphanumerische Zeichen enthalten? Wird daraus dann eine Varchar-ID?

Wenn jemand wirklich fundierte Argumente gegen AIs hat, bitte vortreten.
Mit Zitat antworten
  #13 (permalink)  
Alt 22-08-2004, 14:24
Quickborner
 Junior Member
Links : Onlinestatus : Quickborner ist offline
Registriert seit: May 2004
Beiträge: 62
Quickborner ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Sekündchen mal, pekka:

wir müssen sauber differenzieren zwischen Artikelnummern etc., die nur den Programmierer
und die Datenbank etwas angehen (artikelnr) und im Frontend sichtbaren 'Artikelnummern',
zB artikelcode (Varchar(x), Format: $prefix.sprintf("%06d",$artikelnr).$postfix o.ä.).

Zitat:
Aber Kundennummern, Artikelnummern und so weiter können sich ändern
wenn jemand die Anforderung hat, daß sich interne Artikelnr ändern müssen, hat er ein
(lösbares, aber) erhebliches konzeptionelles Problem.

jemand, der die Anforderung hat, daß sich sichtbare Artikelcodes ändern sollen, hat seine
wahre Berufung noch nicht gefunden; denn diese sind auf 10000 Rechnungen gedruckt
und in 42.000.000 Papier-Katalogen unter den Produktfotos abgebildet.
[es sei denn, es gibt zB juristische Gründe hierfür]

keine Frage, auto_increment ist bequem; aber mal ehrlich: wie !ups, muß weg.
Mit Zitat antworten
  #14 (permalink)  
Alt 22-08-2004, 15:55
em-!x
 Member
Links : Onlinestatus : em-!x ist offline
Registriert seit: Sep 2003
Beiträge: 491
em-!x ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Warum denn das..? Nehmen wir beispielsweise ein Upload-Script. Die Dateinamen sollen wie folgt aussehen: <autoinrementwert>.<filetyp>
Wenn der komplette Dateiname jetzt in eine Spalte geschrieben werden soll, muss vorher der nächste AutoInreament gefunden werden.
Mit Zitat antworten
  #15 (permalink)  
Alt 22-08-2004, 16:40
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.623
Abraxax befindet sich auf einem aufstrebenden Ast
Standard

nein. erst eintragen in die DB , dann den vergebenen wert auslesen. die datei umbennen und ein update mit dem korrekten dateinamen machen. so ist das normal.
__________________
INFO: Erst suchen, dann posten! | MANUAL(s): PHP | MySQL | HTML/JS/CSS | NICE: GNOME Do | TESTS: Gästebuch | IM: Jabber.org |


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

Projektmanagement Damals und Heute
Projektmanagement Damals und HeuteWerfen Sie einen Blick auf das, was sich verändert hat, und entdecken Sie, wo die Zukunft dieses Gebietes hinsteuert.

18.01.2021 | Berni

Arbeitsmanagement-Tools
Arbeitsmanagement-ToolsWarum jedes Team Arbeitsmanagement-Tools benötigt. Man schätzt, dass 25% eines durchschnittlichen Mitarbeiter-Tages durch ineffiziente Arbeit vergeudet werden.

11.12.2020 | Berni


 

Aktuelle PHP Scripte

PHP Newsletter Script SuperWebMailer ansehen PHP Newsletter Script SuperWebMailer

Die webbasierte PHP Newsletter Software SuperWebMailer ist die optimale Lösung zur Durchführung eines erfolgreichen E-Mail-Marketings. Zur Nutzung des PHP Script-Pakets ist eine eigene Webpräsenz/Server mit PHP 5 oder neuer, MySQL 4 oder neuer und die

29.04.2021 mirko_swm | Kategorie: PHP/ Mail
OXID eShop

Mit OXID eshop bieten wir Ihnen eine modulare und skalierbare Internet Shopping Software mit einem hervorragenden Preis-/Leistungsverhältnis.

29.04.2021 eric.jankowfsky@ | Kategorie: PHP/ Shops
PHP-Login

Die Aufgabenstellung bestand darin, ein einfaches Login-Script zu erstellen, dass schnell und universell auf jeder Webseiten eingebaut werden kann. Der Schwerpunkt lag dabei auf der Entwicklung eines universell einsetzbarem Modul für den Login und zur

05.04.2021 Wallhalla | Kategorie: PHP/ Kundenverwaltung
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:24 Uhr.