Max() Problem

Ich find das Ganze hier etwas wirr... deshalb mal zwei grundlegende Frage:
* Wieso braucht die Tabelle zwei eindeutige IDs?
* Wieso ist das Attribut "theme" ein varchar, wenn nur Zahlen drinstehen? Für Zahlen, mit denen man Arithmetik betreiben will, gibts idR passendere Datentypen.
 
Also nochmal:

Ich habe eine Spalte welche theme heißt. Die Spalte gehört zu einer Tabelle, in welcher die Posts sind. Wenn jemand ein Post schreibt zu einem Thema, dann kommt in die Spalte theme die entprechende Themen-ID! Das funktioniert auch.

Nur wenn man nun ein neues Thema eröffnet, soll geschaut werden, welches die höchte ID ist und diese soll dann um 1 erhöht werden, sodass nicht dieser Post einem Thema zugeordnet wird, sondern eine neues Thema damit eröffnet wird!
 
Du machst für die Themen eine extra Tabelle.
Dort steht eine auto_increment-Id drin.
Dann kannst du dir das alles sparen.
 
Wie wärs wenn du den Sting als Integer ausgeben lässt?

also als
PHP:
$db = connect_db();
$theme = mysql_fetch_array(mysql_query("SELECT MAX(`theme`) AS thememax FROM forum", $db));
mysql_close($db);
(int)$theme = $theme[thememax];
(int)$thememax = $theme+1
 
Dazu müsste ich wieder alles komplett umstellen!

Komischerweise hat das bis vor Kurzem noch funktioniert!

Warum funktioniert das nicht:

PHP:
$db = connect_db();
$theme = mysql_fetch_assoc(mysql_query("SELECT `theme` FROM forum ORDER BY `theme` DESC LIMIT 1", $db));
mysql_close($db);
$theme = $theme[theme]+1;

Das liegt noch nicht daran, dass ich varchar anstatt int als Typ genommen habe oder?
 
OK danke Leute!

Es lag tatsächlich am Typ!

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

Funktioniert super! :p
 
Das obere funktioniert übrigens nicht wegen mysql_fetch_assoc(), da würde man eig mysql_fetch_array() nehmen...
naja egal, wenns jetzt klappt ists ja super :D
Dann hf xD
ciao (und bitte abhaken)
 
Du hast dann aber, ohne weitere Absicherungsmaßnahmen (Stichwort: Transaktion) immer noch das Problem, dass zwei neue Themen, die z.B. von verschiedenen Benutzern fast gleichzeitig begonnen werden, die selbe "neue" ID bekommen könnten (Stichwort hierzu: Race condition).

Und: Arrays, die du mit mysql_fetch_assoc bekommst, sind mit Strings indiziert, nicht mit (vermutlich nicht initialisierten) Variablen. Also schreib den Zugriff besser so:
PHP:
$theme = $theme['theme']+1;
 
Zurück