Laufende Nummer (von bis) in MySQL - sowie Nummernkreisprüfung

dwex

Erfahrenes Mitglied
Hallo Leute,

ich stehe wieder ein mal vor einem Problem welches ich ohne eure stehts kompetente Hilfe nicht zu lösen vermag.

Es geht um folgendes:
Ich muss in PHP eine Routine schreiben welche es mir ermöglichen soll in eine MySQL-DB laufende Gutscheinnummern einzugeben. Die Nummern sind 13-stellig (EAN-Code basierend). Jetzt muss ich über ein Eingabeformular einen Startwert sowie einen Endwert vorgeben und dann werden diese Nummern in die DB geschrieben.

Das mache ich über eine for-Schleife mit dem Startwert und dem Endwert aus dem Formular und mit folgendem Statement welches ich dann bei 100.000 Einträgen eben 100.000x an den Server senden muss:
Code:
mysql_query("INSERT INTO `fwv`.`gutscheine` (`nummer` ,`time_angelegt`) VALUES ('$i', '$time')");

Hierzu gleich meine erste Frage - habt Ihr hier eine bessere Lösung? Der Server ist hier ziemlich beschäftigt und mein Testsystem (XAMPP) hat sogar schon mal den Dienst quittiert.

So nun kommt das zweite Problem welches ungleich (zumindest für mich) schwieriger ist. Jetzt muss ich bei der Eingabe erstmal prüfen ob vielleicht schon die ein oder andere Nummer bereits vorhanden ist und dann eben einen Fehler generieren - das würde fürs erste schon mal reichen. Weiteres würde ich dann aber auch noch gerne ausgeben welche Nummern(kreise) aus der Anforderung bereits belegt waren.

Hat jemand 1-50 Ideen?
Vielen dank für eure Bemühungen im voraus.
 
Moin!
Also zur Umsetzung darfst du mich nicht fragen, da ich nicht aus der MySQL und PHP Welt komme, aber..
Ich würde eine gespeicherte Prozedur schreiben (siehe hier: http://dev.mysql.com/doc/refman/5.1/de/stored-procedures.html), welche von deiner PHP Routine mit dem Start- und Endwert aufgerufen wird. Das eintragen in die Datenbank übernimmt die die Datenbankprozedur. So müsstest du nur einen einzigen Aufruf tätigen...
Die Prozedur kann dann auch zurückgeben, wenn die eine oder andere Nummer nicht eingetragen werden konnte, weil sie schon belegt waren..
*grüssle*
MeinerEiner
 
Zurück