Max() Problem

Sasser

Erfahrenes Mitglied
Hallo Leute!

Ich versuche verzweifelt, den maximalen Wert einer Spalte mit

PHP:
$db = connect_db();
$theme = mysql_fetch_assoc(mysql_query("SELECT MAX(`theme`) AS thememax FROM forum", $db));
mysql_close($db);
$theme = $theme[thememax]+1;

heraus zubekommen! Dazu soll dann 1 addiert werden! Leider bekomme ich immer $theme = "1" ausgegeben!

Wo liegt mein Fehler?
 
Was steht denn im Feld "theme" drin?

Sind das Integer Werde, oder auch Varchars?


Dessweiteren würde ich so umformulieren:

PHP:
$theme_max = $theme["thememax"]+1;

Funktioniert wahrscheinlich besser.
 
Da stehen Varchars drin. Wenn nun ein neues Thema eröffnet wird, möchte ich den maximalen Wert von Theme haben und 1 hinzu addieren!

ID ist leider schon vergeben mit auto_increment :(
 
Abgesehen von den obigen Tipps, die dir helfen sollten, das Syntaxproblem in den Griff zu bekommen:
Versuchst du, damit eine eindeutige ID für einen neuen Eintrag in die Tabelle zu berechnen? Wenn ja, definiere das Attribut in der Tabelle lieber als AUTO_INCREMENT und lies die erzeugte ID, wenn du sie brauchst, über mysql_insert_id aus. Damit vermeidest du einige Probleme, wenn mehrere Leute gleichzeitig mit deiner Webanwendung arbeiten können sollen.

Da stehen Varchars drin. Wenn nun ein neues Thema eröffnet wird, möchte ich den maximalen Wert von Theme haben und 1 hinzu addieren!

ID ist leider schon vergeben mit auto_increment :(

Äh... und was stellst du dir vor, soll rauskommen, wenn du zu einem Text 1 dazuzählst?
 
Wie wärs mit ORDER BY?

//edit:
Wenn der Text numerisch ist kann man auch eine "1" dazu addieren
 
Zuletzt bearbeitet:
@ Lomes

ORDER BY Nützt dir auch nichts, wenn der neueste A beginnt und der zweit neueste mit Z, der Drittneueste mit C

@Sasser

Wenn dem so ist, würde ich gleich vorgehen wie benjava es geschrieben hat

In der Tabelle ein zusätzliches Feld hinzufügen mit einem INT und AUTOINCREMENT.

Somit erhältst du automatisch den um 1 erhöhten Wert beim nächsten Themen-Eintrag.
 
Er hat doch geschrieben:
ID ist leider schon vergeben mit auto_increment

Ich verstehe das so, er will den höchsten Wert und nicht den neuesten. Und den kann man mit ORDER BY rausfinden.

So wie ich das lese, gehe ich davon aus, dass dort ein numerischer Wert (also eine Zahl) drin steht.

Wenn das nicht so ist, nehme ich natürlich alles zurück.

/edit:
@Sasser was steht nun in den Felder "Theme" drin?
 
Man kann in einer SQL Tabelle auch meherere Autoincrements haben. Daran liegt es nicht.

Ebenfalls besteht auch einfach die Möglichkeit eines einfachen INT-Feldes, bei welcher man einfach eine Zahl reinschreibt, und diese beim nächsten Eintragen um 1 erhöht..

Wiederum sagt er, dass es ein Varchar FELD ist.. Haben wir beide ja jetzt gefragt. Wenn dort "Wörter" drinn stehen wirds schwer mit dem +1.. Wenns jedoch INT-Werte sind im Varchar Feld, sollte es kein Problem darstellen.

;-]
 
Hast du mal versucht eine Tabelle mit 2 auto_increment-Feldern zu erstellen?

Da sollte dann ungefähr folgende Fehlermeldung erscheinen:
Code:
#1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key
 
Ne.. probiert hab ichs noch nie.. :-)

Jetzt liegts eigentlich nur daran, was das für ein Feld ist, ob da Chars drinstehen, oder nur Int-Werte.
 
Zurück