Computerhilfen.de Logo
Forum
Tipps
News
Frage stellen

Mysql Problem

Hallo Leute ich bräuchte mal schnell euren Rat ():-)
Ich habe eine Datenbank mit Kundennummern. Jetzt möchte ich beim Anlegen eines neuen Kunden automatisch eine neue Kundennummer generieren.

Ich muss wissen, wie ich aus einer Datenbank mit Kundennummern die höchste Kundennummer bekomme. Die Kundennummern sollen bei 30000 anfangen. Ein Kunde ist eingetragen mit der Kundennummer 30000. Wenn ich jetzt aber noch einen anlegen, bekommt der Kunde ebenfalls die 30000 zugewiesen.

Hier mein Quelltext:

$nummern = array();
      $abfrage = mysql_query("SELECT * FROM `kunden`");
      while($show = mysql_fetch_assoc($abfrage))
      {
      $nummern[] = $show[knr];
      }
      $nummer = max($nummern);
       if($nummer < 30000) $knr = 30000;
       else $knr = $nummer++;

Bin für jeden Rat dankbar :)

Gruß
Marcel


Antworten zu Mysql Problem:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hi |

Hast du denn mal geschaut, ob der richtige Wert in der Variablen $knr steht? Und wenn ja, wie wird der Wert an die DB gegeben?

Tipp noch: Du kannst auch den höchsten Wert eines Feldes mit der MySQL-Funktion MAX() holen. Interessant wäre übrigens auch deine Felddefinition.

greez 8)
JoSsiF

Hallo JoSsiF,

Also Sinn und Zweck des Scripts ist es eine Kundennummer zu generieren, die per Mail verschickt wird. Wie gesagt klappt alles bis auf das er sich die richtige Kundennummer sucht, bzw. die nächst höhere generiert.

Ich hab das kleine Script jetzt mal in eine Extra php-Datei getan. In der Datenbank ist ein Kunde mit der Kundennummer 30000. Das Feld "knr" in der Datenbank ist ein Integerfeld.

Das Script:

$nummern = array();
      $abfrage = mysql_query("SELECT * FROM `kunden`");
      while($show = mysql_fetch_assoc($abfrage))
      {
      $nummern[] = $show[knr];
      }
      $nummer = max($nummern);
       if($nummer < 30000) { $knr = 30000; }
       else { $knr = $nummer++;
      }
      echo $knr;

Die Ausgabe sollte nun 30001 sein, ist aber 30000.
Gruß
Marcel

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hast du mal geguckt, was in deinem Resultset steht? Lass doch mal bei jedem Schleifendurchlauf den relevanten Wert ausgeben.

Ich hab jetz nen weg gefunden wie es klappt.
In der Else-Bedingung anstatt "$knr = $nummer++;" "$knr = $nummer + 1;" schreiben. Jetzt zählt er richtig weiter aber nach meinen Kenntnissen hätte es mit ++ auch gehen müssen.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Ups, der Schnitzer war mir gar nicht aufgefallen.

Deine Kenntnisse waren an der Stelle nicht so vollständig, wie du dachtest. Man unterscheidet beim ++ zwischen Prä- und Postinkrement. Du hast den Postinkrement-Operator verwendet, der erst den aktuellen Wert zurückliefert und erst dann erhöht (daher kommt in $knr keine Erhöhung an). Als Präinkrement würde es funktionieren:

$knr = ++$nummer;

greez 8)
JoSsiF 

« php: $_get zeigt nichts anProblem mit mailform.cgi / HTML - Kontaktformular »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Datenbank
Eine Datenbank (DBS), im englischen database, ist eine strukturierte Datensammlung und fungiert wie ein "digitales Archiv". Datenbanken dienen der effizienten Aufbewahrun...

Scriptsprache
Eine Scriptsprache ist eine Softwareeigene Programmiersprache, mit der der Anwender Skripte oder Makros für häufig vorkommende Arbeitsabläufe schreibt. Ein...

Junk Mail
Siehe Spam. ...