WinFuture-Forum.de: Mysql Datenbank - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Mysql Datenbank einträgen positionen zuordnen und ändern


#1 Mitglied ist offline   felisse.courage 

  • Gruppe: aktive Mitglieder
  • Beiträge: 211
  • Beigetreten: 03. April 05
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Dresden
  • Interessen:grafik-/webdesign

  geschrieben 19. Juni 2007 - 08:54

hallo leute!

ich habe lange gegrübelt, wie es wohl möglich wäre, datenbankeinträgen positionen zuzuordnen, z.b. neben dem primärschlüssel eine extra spalte anzulegen, die informationen über die position beinhaltet.

man stelle sich einen adminbereich irgendeiner website vor und nehme mal eine hand voll datenbankeinträge welche geordnet nach ihrem primärschlüssels, einer INT "ID", über PHP ausgegeben werden. ich als admin brauche jetzt neben der möglichkeit einträge zu löschen und zu bearbeiten, auch unbedingt die möglichkeit deren position zu ändern. beispielsweise mit einem button wie "eine position nach oben".
ich bitte euch nur um den grundsätzlichen gedanken!

wäre es eine gute herangehensweise, wenn man sagt, man tausche die primärschlüssel-werte (int-autoincrement) zwischen zwei aufeinander folgenden einträgen? theoretisch gäbe es dabei für kurze zeit eine doppelbelegung des primärschlüssels. habe es noch nicht probiert...erschien mir nicht als die günstigste lösung.

also ich denke mal, ihr seid da schlauer als ich und es müsste ja eigentlich ein bekanntes problem sein!
danke schon maaal...:)
0

Anzeige



#2 Mitglied ist offline   axx 

  • Gruppe: aktive Mitglieder
  • Beiträge: 487
  • Beigetreten: 19. Mai 05
  • Reputation: 0

geschrieben 19. Juni 2007 - 16:14

Ich habe ein Feld INT 'rank' hinzugefügt, in die die Position des Artikel (oder was du auch mmer ordnen willst) gespeichert wird. Den Primärschlüssel lässt du besser unverändert, eine auch kurzzeitige 'Doppelbelegung' ist auf jeden Fall zu vermeiden.

Wird ein neuer Artikel eingefügt, könnte er an eine bestimmte Position gesetzt werden, an den Anfang oder an's Ende vorzugsweise. Wird ein Artikel gelöscht, muss die Rangfolge neu berechnet werden, d.h. die hinter der gelöschten Position liegenden Artikel müssen nachrücken.

Ich weiß nicht, wie diese Funktion in osCommerce oder ähnlichen Systemen umgesetzt ist, da ich meins selbst geschrieben habe. Vielleicht kann mal jemand, der ein solches shopsystem benutzt sagen, auf welche Weise das Problem (ist eigentlich keins) dort gelöst wurde.
0

#3 Mitglied ist offline   felisse.courage 

  • Gruppe: aktive Mitglieder
  • Beiträge: 211
  • Beigetreten: 03. April 05
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Dresden
  • Interessen:grafik-/webdesign

geschrieben 19. Juni 2007 - 18:33

nee, ist eigentlich kein problem :smokin:
ja, ich habe mir schon so etwas überlegt. dass der INT-wert für die position bei einem neu hinzugefügten datensatz gleich "mysql_num_rows() + 1" ist. und daraufhin könnte man diese untereinander tauschen, quasi dort diese doppelbelegung entstehen lassen. dann müssten nicht immer alle neu berechnet werden, obwohl du das ja auch hinbekommen hast.

eigentlich ist das ganz gut...müsste eigentlich funzen. gut, dass wir mal darüber gesprochen haben :smokin:
also dank dir!
vielleicht kommen ja noch paar richtige pro-antworten wa...
0

#4 Mitglied ist offline   axx 

  • Gruppe: aktive Mitglieder
  • Beiträge: 487
  • Beigetreten: 19. Mai 05
  • Reputation: 0

geschrieben 20. Juni 2007 - 08:20

In der Tat ist meine Lösung ein ziemliches PHP-Ungetüm, was sicher nicht das Optimum ist. Leider habe ich nur SQL-Grundkenntnisse, so dass ich nicht weiß, ob eine Lösung nur mit mySQL-Funktionen möglich wäre.

Nötig ist eine lückenlose Sortierung (1,2,3,4,5,6). Wenn ich jetzt Position 4 lösche, muss wieder eine lückenlose Sortierung hergestellt werden (1,2,3,4,5: 1=1, 2=2, 3=3, 4<-5, 5<-6). Dies ist mit PHP möglich, funktioniert bei mir auch tadellos, aber ist vielleicht verbesserungsfähig.

Gäbe es eine mysql-Funktion, die diese Neusortierung vornimmt, nachdem eine Position gelöscht wurde, wäre es deutlich einfacher.
0

#5 _MagicAndre1981_

  • Gruppe: Gäste

geschrieben 20. Juni 2007 - 21:49

warum willst du eine Neusortierung machen? das macht keinen Sinn.
0

#6 Mitglied ist offline   axx 

  • Gruppe: aktive Mitglieder
  • Beiträge: 487
  • Beigetreten: 19. Mai 05
  • Reputation: 0

geschrieben 21. Juni 2007 - 07:14

Beitrag anzeigenZitat (MagicAndre1981: 20.06.2007, 22:49)

warum willst du eine Neusortierung machen? das macht keinen Sinn.
Das ist _deine_ Meinung.

Ich sehe darin sehr wohl einen Sinn, und felisse.courage offenbar auch. Spätestens wenn man Position 5 und 4 tauschen will, macht sich das Fehlen der 4 bemerkbar.
0

#7 _MagicAndre1981_

  • Gruppe: Gäste

geschrieben 21. Juni 2007 - 07:22

eine Sortierung bekommt man per ORDER BY im SQL Statement hin! MySQL ist keine Filebasierte DB!
0

#8 Mitglied ist offline   axx 

  • Gruppe: aktive Mitglieder
  • Beiträge: 487
  • Beigetreten: 19. Mai 05
  • Reputation: 0

geschrieben 21. Juni 2007 - 07:30

Beitrag anzeigenZitat (MagicAndre1981: 21.06.2007, 08:22)

eine Sortierung bekommt man per ORDER BY im SQL Statement hin! MySQL ist keine Filebasierte DB!
Hast recht, Ich habe mich unglücklich ausgedrückt. Das zu lösende Problem wurde aber in den ersten vier Beiträgen recht gut beschrieben. Hast du da eine Idee?
0

#9 Mitglied ist offline   felisse.courage 

  • Gruppe: aktive Mitglieder
  • Beiträge: 211
  • Beigetreten: 03. April 05
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Dresden
  • Interessen:grafik-/webdesign

geschrieben 21. Juni 2007 - 13:45

ja, es geht um eine völlig anpassbare reihenfolge, um eine extra zur ppsitionierung angelegten tabellenspalte.

@axx:
habe es noch nciht probiert. aber heute ist es glaube ich soweit, ich bin bald an der stelle, wo ich es brauche.
0

#10 Mitglied ist offline   gr4y 

  • Gruppe: aktive Mitglieder
  • Beiträge: 216
  • Beigetreten: 08. Dezember 06
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Großpösna
  • Interessen:PHP und MySQL, .NET-Programmierung

geschrieben 21. Juni 2007 - 14:16

Für was brauchst du das? Ich empfinde das als völlig nutzlos!
In die Datenbank passen 4GB, zumindest wenn du das lokal nutzt. Bei Hostern sieht das schon anders aus.
Aber eigentlich ist das ja auch egal, da die fehlenden ID's letztenendes ja sowieso keinen Speicher wegnehmen würden.

Du kannst mir ja mal deine Lösung per PN oder Mail zukommen lassen, da kann ich ja mal drüberschauen und evtl. was verbessen wenn es etwas zu verbessern gibt!

Hast du auch schonmal in der Hilfe von MySQL oder PHP geguckt?
http://php-center.de <-- gute Seite mit eine Funktionsübersicht
http://php.net <-- Die PHP-Dokumentation mit Funktionsübersicht!
http://dev.mysql.com...1/de/index.html <-- die MySQL Dokumentation

sysProfile

Mit leerem Kopf nickt es sich leichter. (Zarko Petan, slowenischer Aphoristiker, *1944)
0

#11 Mitglied ist offline   axx 

  • Gruppe: aktive Mitglieder
  • Beiträge: 487
  • Beigetreten: 19. Mai 05
  • Reputation: 0

geschrieben 21. Juni 2007 - 14:33

Beitrag anzeigenZitat (gr4y: 21.06.2007, 15:16)

Für was brauchst du das? Ich empfinde das als völlig nutzlos!
Kein Problem.

Zitat

In die Datenbank passen 4GB, zumindest wenn du das lokal nutzt. Bei Hostern sieht das schon anders aus.
Aber eigentlich ist das ja auch egal, da die fehlenden ID's letztenendes ja sowieso keinen Speicher wegnehmen würden.
Ja, aber darum geht's nicht.

Zitat

Du kannst mir ja mal deine Lösung per PN oder Mail zukommen lassen, da kann ich ja mal drüberschauen und evtl. was verbessen wenn es etwas zu verbessern gibt!
Nein, wenn der thread hier beendet ist, wird eine Lösung darin enthalten sein.

Zitat

Hast du auch schonmal in der Hilfe von MySQL oder PHP geguckt?
Ja.
0

#12 Mitglied ist offline   gr4y 

  • Gruppe: aktive Mitglieder
  • Beiträge: 216
  • Beigetreten: 08. Dezember 06
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Großpösna
  • Interessen:PHP und MySQL, .NET-Programmierung

geschrieben 21. Juni 2007 - 14:47

Beitrag anzeigenZitat (axx: 21.06.2007, 15:33)

Nein, wenn der thread hier beendet ist, wird eine Lösung darin enthalten sein.



Naja dann bin ich ja mal gespannt!
Was glaubst du warum niemand auf diese komische Idee gekommen ist? Weils nichts bringt! Was willst du damit bewirken? Versuche mich mal zu überzeugen!

sysProfile

Mit leerem Kopf nickt es sich leichter. (Zarko Petan, slowenischer Aphoristiker, *1944)
0

#13 Mitglied ist offline   gr4y 

  • Gruppe: aktive Mitglieder
  • Beiträge: 216
  • Beigetreten: 08. Dezember 06
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Großpösna
  • Interessen:PHP und MySQL, .NET-Programmierung

geschrieben 22. Juni 2007 - 18:47

http://www.wer-weiss...icle322173.html

vielleicht hilft das ja!

sysProfile

Mit leerem Kopf nickt es sich leichter. (Zarko Petan, slowenischer Aphoristiker, *1944)
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0