Wert mittels PHP um 1 erhöhen

atlantyz

Erfahrenes Mitglied
Hallo Leute,

ich habe heute eine Frage, bei dem viele von euch laut anfangen werden zu lachen. Aber ich komm echt net weiter.

Ich habe in MySql eine Tabelle, die Druckerbestände beinhaltet. Dort gibt es eine ID, als Auto_Increment Wert und eine InventarNr, die automatisch hochgezählt werden soll. Die InventarNr soll bei 30000 beginnen und pro neu angelegten Drucker um 1 erhöht werden.

Nun meine Frage: wie mache ich das? Es fängt schon damit an, dass ich es irgendwie nicht hinbekomme, den letzten eingetragenen Wert zu ermitteln, ihn um 1 zu erhöhen und dann in eine neue Zeile zu schreiben.

Ich habe absolut keinen Plan von SQL und hab auch nur ein "geliehenes Skript", welches ich anpassen wollte. Aber das mit dem Begin ab 30000 klappt bei meinem einfach nicht.

Bitte um Hilfe.
 
Hallo Leute,

ich habe heute eine Frage, bei dem viele von euch laut anfangen werden zu lachen. Aber ich komm echt net weiter.

Ich habe in MySql eine Tabelle, die Druckerbestände beinhaltet. Dort gibt es eine ID, als Auto_Increment Wert und eine InventarNr, die automatisch hochgezählt werden soll. Die InventarNr soll bei 30000 beginnen und pro neu angelegten Drucker um 1 erhöht werden.

Nun meine Frage: wie mache ich das? Es fängt schon damit an, dass ich es irgendwie nicht hinbekomme, den letzten eingetragenen Wert zu ermitteln, ihn um 1 zu erhöhen und dann in eine neue Zeile zu schreiben.

Ich habe absolut keinen Plan von SQL und hab auch nur ein "geliehenes Skript", welches ich anpassen wollte. Aber das mit dem Begin ab 30000 klappt bei meinem einfach nicht.

Bitte um Hilfe.

Du musst erstmal die höchste InventarNr auslesen. Dazu gibt es verschiedene Möglichkeiten. Die Einfachste wäre über MAX(InventarNr). Den Wert speicherst du in einer Variablen z.B. $maxinvent. Jetzt addierst du noch 1 drauf ($aktuellinvent = §maxinvent + 1) und dann kannste den Wert $aktuellinvent entsprechend bei deinem INSERT verwenden.

Es gibt einfachere Wege, indem du z.B. die Abfrage in den Eintrag integrierst, aber das wäre für dich wahrscheinlich zu schwer verständlich.
 
Okay, soweit kapier ich das. Aber wie ordne ich der Variablen nun die SQL-Abfrage zu?
Ich muss doch php erstma mitteilen, dass eine SQL-Abfrage kommt, oder? Und dann?

Ich glaub hier scheitere ich leider am Verständnis von PHP und SQL.

Hier der bisherige Code:

Code:
 $datum=date("Y-m-d");
    $sql="INSERT INTO geraet VALUES ('','$e_hersteller','$e_modell','$e_typ','$e_standort','$e_benutzer','$e_serial','$e_anschluss','$e_ip','$e_printserver','$e_bemerkung','$e_kauf_am','$e_kauf_bei','$e_finanziert','$datum');";
    $res=send_sql ($db,$sql); 
    if (! $res) $fehler++;
    $iid=mysql_insert_id ($lk);

    }
Wenn ich das richtige verstehe, ist das mit dem $ die Variable. Und dort gibt es auch eine Variable sql, die dem PHP dann sagt, dass es auf die Datenbank zugreifen kann. Wie bekomm ich die und meine neue Variable aber unter einen Hut?

Etwa so?:
Code:
$sql=Max(inventarnr)
           $var=Max(inventarnr)

Bitte nicht auf ein Tutorial oder so verweisen, die bringen mich im Moment auch nicht weiter, ich hab schon ein Gutes gefunden, aber wie gesagt, es hapert ein bisschen am Verständnis (deswegen die geliehene Druckerabfrage zum üben)
 
Definiere deine Spalte doch einfach als Autowert.
Du kannst angeben bei welcher Zahl er anfangen soll und welche Schritte gemacht werden sollen. Dann brauchst du dich um das erhöhen nicht selber kümmern.
phpMyAdmin sollte da weiterhelfen, falls du in dem Bereich noch keine Kenntnisse haben solltest.
 
Wenn ich ja in PHPmyadmin den Eintrag dafür gefunden hätte, wäre das alles kein Problem... aber ich finde einfach nicht, wo man das einstellen kann
 
das ist totaler Unsinn.
MAX(InventNr) kannst du nur in einer Abfrage verwenden.

PHP:
$sql = "SELECT MAX(InventNr) AS InventNr FROM xy";
$result = mysql_query($sql) OR die(mysql_error());
while($row = mysql_fetch_assoc($result)) {
$aktuellinvent = ".$row['InventNr']." + 1
}

Du kannst die query auch auf eine Zeile kürzen, aber so sind die Schritte verständlicher.
Kann sein, dass ich irgendwie "" vergessen hab oder so. Musste mal ausprobieren.
 
Definiere deine Spalte doch einfach als Autowert.
Du kannst angeben bei welcher Zahl er anfangen soll und welche Schritte gemacht werden sollen. Dann brauchst du dich um das erhöhen nicht selber kümmern.
phpMyAdmin sollte da weiterhelfen, falls du in dem Bereich noch keine Kenntnisse haben solltest.

Stimmt. Nicht dran gedacht.
Ich würds aber trotzdem mit nem Script machen, da es dann keine Problem beim löschen / editieren gibt.
 
Ich würds aber trotzdem mit nem Script machen, da es dann keine Problem beim löschen / editieren gibt.

Welche Probleme sollte es denn da geben?

Zum Einwand von Loomes:
Dort gibt es eine ID, als Auto_Increment Wert und eine InventarNr,

Da hat er ganz recht, zweimal Auto_increment geht nicht. Aber du solltest dir vielleicht dein Tabellendesign nochmal anschauen. Was ist denn schon eindeutiger als eine InventarNr? Damit ist die ein super PrimaryKey und du kannst deine alte id wegwerfen und den Auto_Increment für deine Inventarnummer verwenden.
 
Welche Probleme sollte es denn da geben?

Die Frage ist wofür es genutzt wird. Zur Identifikation ist es perfekt (is ja standart ID auf Autoincrement zu setzten)
Für alles weitere nicht, da das auto_increment nicht berücksichtigt, ob z.B. der letzte Drucker wieder gelöscht wurde.

Es ist schwer eine richtige Lösung zu nennen, wenn man nicht weiß für was es gut sein soll.
 

Neue Beiträge

Zurück