MySQL Tabelle sortieren

  • #1
N

noah1

Bekanntes Mitglied
Themenersteller
Dabei seit
16.08.2002
Beiträge
1.415
Reaktionspunkte
0
Ort
Hamburg
Und noch eine Frage:
Wenn man in einer Tabelle in MySQL Datensätze einträgt, dann wird ja jedesmal beim Eintrag eine ID automatisch eingetragen, zumindest wenn man die Tabelle entsprechend programmiert hat.
Wenn man jetzt einen Datensatz löscht bleibt die ID aber scheinbar reserviert.
Wie kann ich jetzt die Tabelle entsprechend sortieren, daß die ID's immer fortlaufend mit der niedrigsten freien Zahl vergeben werden?
Und das am besten per PHP-Script bei der Übergabe der neuen Daten?
 
  • #2
Das nennt sich Auto-Increment (Automatisches Hochzählen), dieses sollte tunlichst nicht manipuliert werden. ;)

gruss conny
 
  • #3
Conny schrieb:
Das nennt sich Auto-Increment (Automatisches Hochzählen),
Das meinte ich mit richtig programmiert...

Das soll wohl heißen es geht nicht ?
Schade, das macht mir jetzt etwas mehr Arbeit...
 
  • #4
Ist für dich im Moment ein bissle Mehrarbeit, aber immer noch besser so, als ob nachher der MySQL-Server mehr Arbeiten muss und Resourcen frisst.

So wie du dir das Vorstellst, müsste ja der Server bei jedem neuen Datensatz erstmal suchen, ob irgendwelche freien ID's von gelöschten Datensätzen existieren.

Verlangsamt den Server ungemein ;)

Warum machst du dir nicht ein sep. Feld in deine Tabelle mit einer Eigenen ID.
Diese kannst du gestalten wie du lustig bist.


gruss conny
 
  • #5
Weil ich dann ja jedesmal beim Eintrage gucken müßte welche ID frei ist.

aber immer noch besser so, als ob nachher der MySQL-Server mehr Arbeiten muss und Resourcen frisst.
Er müßte das ja immer nur tun wenn ich einen User aus der Tabelle entfernt habe, bei wahrscheinlich max. 20-30 Einträgen kann das den Server ja nicht so sehr belasten.

Aber wo wir uns gerade sprechen - ich habe da noch eine Frage zum Ändern von einzelnen Daten einer Tabelle.
Ich habe ein Usercenter, in dem ich als Administrator User anlegen und löschen kann, und jeder User selber kann sein Passwort ändern.
Der Code für den Eintrag des geänderten Passwortes sieht so aus:
Code:
                   $passwordneu = md5($_POST['passwordneu']);
					$query1 = UPDATE->autoren' SET->password' =->$passwordneu' WHERE->username' = .$_SESSION['sess_username']. LIMIT 1;
					mysql_query($query1);
					echo<center>Das Passwort wurde geändert.</center>;
					mysql_close($dz);
Mit echo$query1 sehe ich ja in der Ausgabe was das Script an die DB übergeben will, aber ändern tut sich in der Datenbank nichts.
Wie muß ich es also richtig schreiben?
 
  • #6
Code:
<?php

$passwordneu = md5($_POST['passwordneu']);
$query1 = UPDATE autoren SET password =->.$passwordneu.' WHERE username =->.$_SESSION['sess_username'].' LIMIT 1;
mysql_query($query1);
echo<center>Das Passwort wurde geändert.</center>;
mysql_close($dz);

?>

Bissle viele Dödels => ' in der Query ;) ;) ;)

Bei Tabellen und Feldnamen brauchste keine ;)
Beim Usernamen hast du sie vergessen ;)

gruss conny
 
  • #7
noah1 schrieb:
Weil ich dann ja jedesmal beim Eintrage gucken müßte welche ID frei ist.

Warum sollst du da beim Eintragen drauf Achten, die neuen Einträge werden halt immer hinten angehängt.

Ob nun zwischendurch ein paar ID's frei sind ist doch theoretisch Jacke wie Hose ;D

gruss conny
 
  • #8
Conny schrieb:
Bissle viele Dödels => ' in der Query ;) ;) ;)

Die hatte ich anfangs auch nicht, aber da es ja nicht funktionierte habe ich mal geguckt wie PHPmyAdmin das schreibt, und da sind die Dödels auch vorhanden, deshalb habe ich sie auch mal eingetragen.

Und mit den ID's ist zwar Jacke wie Hose, aber ich habe in dem Admin-Bereich auch die Möglichkeit User zu löschen, der Einfachheit halber habe ich einfach ein Eingabefeld in das man die ID des Users, der gelöscht werden soll, eine Liste der angelegten User mit ID steht weiter oben auf der Seite, einträgt und dann isser weg...
Wenn jetzt die Seite ein paar Jahre im Netz stehen sollte kommen irgendwann bei 30 angelegten Usern Ergebnisse wie Lösche ID 350..., da wahrscheinlich regelmäßig welche gelöscht und andere neu hinzugefügt werden müssen.
Aber dann werde ich auch das Script zum Löschen ändern.
 
  • #9
noah1 schrieb:
Die hatte ich anfangs auch nicht, aber da es ja nicht funktionierte habe ich mal geguckt wie PHPmyAdmin das schreibt, und da sind die Dödels auch vorhanden, deshalb habe ich sie auch mal eingetragen.

Trotzdem hatte es bei den Feldern Passwort und Username nicht gestimmt.
Da du einen String eintragen willst, musst du den String auch als solches kennzeichnen.

Form => feldname =-> . $string .->

ohne die Space natürlich, die sind nur damit man es besser erkennt.

Mach mal ein echo $query1 und poste es mal hier (natürlich nur Beispieldaten).

gruss conny

edit:
und das Limit 1 brauchst du auch nicht, da der Username ja eindeutig sein sollte ;)
Ich mache meine Updates immer auf Basis der ID, die ist 100% eindeutig ;)
 
  • #10
Code:
UPDATE autoren SET password =->83e71d83b2dcea23dcab3b64182494cc' WHERE username =->noah'

Sieht jetzt so aus und funktioniert.
 
  • #11
Lag es also doch an den Dödels oder dem Limit ;) ;)

OK, wenns klappt ist ja gut.

gruss conny
 
Thema:

MySQL Tabelle sortieren

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.838
Beiträge
707.961
Mitglieder
51.491
Neuestes Mitglied
haraldmuc
Oben