Bilder sortieren - andere Möglichkeit? Bilder sortieren - andere Möglichkeit?
 

News:

CPG Release 1.6.26
Correct PHP8.2 issues with user and language managers.
Additional fixes for PHP 8.2
Correct PHP8 error with SMF 2.0 bridge.
Correct IPTC supplimental category parsing.
Download and info HERE

Main Menu

Bilder sortieren - andere Möglichkeit?

Started by Starlight, April 27, 2009, 09:57:17 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Starlight

Hallo mal wieder,

mich würde folgendes interessieren:

Ich habe jetzt Bilder wiedergefunden, von denen ich glaubte, sie bei einem Upgrade-Fehler verloren zu haben.
Diese Bilder möchte ich gern wieder hochladen, aber sie dann auch gleich an die chronologisch richtige Stelle setzten.
Ich hab schon herausgefunden, wie man in der Datenbank das Uploaddatum verändert. Aber trotzdem möchte ich die Bilder weder an erster Stelle im Album haben, noch bei lastup angezeigt.

Ich weiß, dass man alles mit "Meine Bilder sortieren" machen kann, aber ich habe recht viele Bilder und das wäre mir eigentlich zu aufwendig. Ich würde auch lieber alles nach Datum absteigend sortiert lassen. Also eben nur die betroffenen Bilder an die richtige Stelle rücken und fertig. ;)

Versteht ihr, was ich möchte? Kann man das irgendwie machen, ohne gleich alles neu durchsortieren zu müssen?

http://starlights-graphics.de/gallery/index.php

Αndré

Quote from: Starlight on April 27, 2009, 09:57:17 AM
Aber trotzdem möchte ich die Bilder weder an erster Stelle im Album haben, noch bei lastup angezeigt.

Quote from: Starlight on April 27, 2009, 09:57:17 AM
Ich würde auch lieber alles nach Datum absteigend sortiert lassen.

Quote from: Starlight on April 27, 2009, 09:57:17 AM
Ich hab schon herausgefunden, wie man in der Datenbank das Uploaddatum verändert.

Was genau möchtest du jetzt wissen? Wenn du das Upload-Datum manipulierst, werden die Bilder so einsortiert wie von dir vorgegeben und erscheinen dann auch irgendwo weiter hinten bei 'lastup'. Das würde ich an deiner Stelle aber erstmal lokal testen.

Starlight

QuoteWenn du das Upload-Datum manipulierst, werden die Bilder so einsortiert wie von dir vorgegeben und erscheinen dann auch irgendwo weiter hinten bei 'lastup'.
Wirklich? Das ist genau das was ich möchte. Aber ich hab das schon gestern einmal ausprobiert und da war zwar das Datum dann richtig aber die Bilder waren sowohl bei lastup als auch in ihrem Album ganz vorne, obwohl ich es ja nach Datum haben möchte.
Stell ich mich mal wieder umständlich an? ^^

Αndré

Mein Fehler.

$query = "SELECT $select_columns FROM {$CONFIG['TABLE_PICTURES']} WHERE approved = 'YES' $META_ALBUM_SET ORDER BY pid DESC $limit";
Die Bilder werden nach ID absteigend sortiert. Dementsprechend müsstest du die ID auch noch manipulieren. Das heisst aber, dass du entsprechend größe Lücken in deiner Bild-ID-Liste haben musst, um alle Bilder dort einzusortieren.
Alternativ könntest du den SQL-String anpassen, so dass nach Uploadzeit absteigend sortiert wird.

Das ganze ist eine ganz schöne rumtrickserei, bei dem ungewollte Ergebnisse herauskommen, wenn du nicht 100%ig weisst was du tust und das ganze dann auch konzentriert durchführst. Davon mal abgesehen verursacht das wahrscheinlich mehr Arbeit als sie mit Boardmitteln neu einzusortieren, wenn du dich nicht mit SQL auskennst.

Ich rate von der Datenbankmanipulation ab. Du kannst es natürlich trotzdem so machen, wenn es dir das Wert ist. Backups sind dein Freund ;)

Starlight

Okay, der Vorsicht halber werd ich es dann wohl mit dem Picmanager machen. *seufz*
Wie ist das dann, wenn ich also sort by position verwende, kann ich dann danach neue Bilder auch noch chronologisch einsortieren? (weil ich ja dann nicht mehr sort by date verwende)

Αndré

Ich habe den Picmanager nie benutzt - probier's am besten testweise aus, bevor du dir die Arbeit umsonst machst. Mit dem Picmanager kannst du die Bilder einsortieren wie du willst. Die Frage ist, ob du die Bilder dann zwangsläufig einsortieren musst, damit sie an der richtigen Stelle erscheinen.

Ich habe dir 2 Möglichkeiten gezeigt.
Die Variante mit dem Picmanager ist weniger fehleranfällig, aber langfristig vielleicht nicht das was du suchst (teste es einfach mal).
Die Variante mit der Datenbankmanipulation setzt Kenntnisse mit Datenbanken und SQL voraus. Generell rate ich jedem von dieser Variante ab, der sich nicht absoulut sicher ist, was er da überhaupt tut.

Ich persönlich würde zur Datenbankmanipulation greifen, da ich davon überzeugt bin, dass ich weiss was ich tue 8)

Aber wie gesagt: das ist deine Entscheidung. Auf alle Fälle würde ich vorher ein Backup machen und das ganze so oder so erstmal nicht am Produktivsystem testen.



Starlight

Hmm... *grübel, murmel* Ist das denn schwer zu lernen? Also in meinem Fall beträfe es dann ja ctime und picid, richtig?
Kann ich mir das vielleicht irgendwo anlesen. Wirklich Ahnung hab ich nicht. Aber wenn ich es dann gut verständlich irgendwo lese, komme ich meist recht gut klar.

QuoteDas heisst aber, dass du entsprechend größe Lücken in deiner Bild-ID-Liste haben musst, um alle Bilder dort einzusortieren.
Das hier verstehe ich nämlich nicht. ^^

Αndré

Nochmals zum Verständnis: das Meta-Album 'lastup' sortiert standardmäßig nach pid (= Picture-ID). Wenn du die Bilder nicht in der Liste an erste Stelle stehen haben möchtest, musst du diese "weiter hinten" einsortieren.

Beispiel: Du hast momentan 3636 Bilder in deiner Galerie - dein Picture-ID-Zähler ist aber schon bei 4589. D.h. du hast irgendwo zwischen 1 und 4589 ca. 950 freie Picture-IDs, wo du Bilder einsortieren könntest, die dann nicht an erster Stelle im Meta-Album 'lastup' stehen würden. Diese müsstest du herausfinden.

Alternativ könntest du das Sortierverhalten vom Meta-Album 'lastup' ändern. Sprich: nicht nach pid sondern nach ctime sortieren lassen. Damit würdest du nur noch den Wert 'ctime' anpassen müssen, sonst nix.

Quote from: Starlight on April 27, 2009, 10:37:10 AM
Kann ich mir das vielleicht irgendwo anlesen. Wirklich Ahnung hab ich nicht. Aber wenn ich es dann gut verständlich irgendwo lese, komme ich meist recht gut klar.
Ich kenne deine Fähigkeiten nicht. Daten mit phpMyAdmin manipulieren wird wohl jeder können, der sich 5 Minuten mit dem Tool beschäftigt hat. Dazu müsstest du dann aber jeden Wert manuell anpassen, was bestimmt keine Zeitersparnis im Vergleich zum Picmanager wäre.
Hier könnte der SQL-Befehl "UPDATE" helfen, mit dem du gezielt den Wert 'ctime' von den gewünschten Einträgen ändern kannst. Machst du hierbei einen Fehler, erhältst du aber vielleicht ein ganz anderes Ergebnis als gewünscht.

Joachim Müller

Das trickreiche an der ID ist, dass sie auf "AutoIncrement" steht - wenn Du da einen Fehler baust, dann rauscht es kräftig - Datenverlust und hellgelbe Fehlermeldungen sind höchstwahrscheinlich. Nicht böse sein, aber wie eenemeenemuu schon taktvoll versucht hat zu sagen ist die Datenbank-Manipulation was für Könner und sollte nicht von Einsteigern probiert werden - dafür kann zuviel schiefgehen. Wenn Du an der Stelle was verbockst kann Dir keiner mehr großartig helfen, und das nur für den schalen Effekt einer Sortierung? So genau schaut sich - mit Verlaub - keiner Deine Seite an - wenn da ein kleiner Knick in einem Meta-Album drin ist, dann bemerkt das kaum jemand.

Starlight

eenemeenemuu:Tja, sobald ich ne kleine Anleitung oder Beschreibung hab, krieg ich fast alles hin. Ohne kann ich seeehr wenig.  ;)
Ich hoffe, ich überstrapaziere deine Geduld noch nicht...
Das mit dem lastup nach ctime sortieren klingt gut.
Da müsste ich eben nur noch wissen, wie man das macht.  ::) ;D ctime anpassen krieg ich ja dann hin.

Joachim Müller: Hach, ich weiß, ich bin bei sowas immer so pingelig ^^
Wenn ihr mir jetzt wirklich so sehr davon abratet, dann lass ich es ABER: Wenn ich das so mache, wie eenemeenemuu meinte, also lastup nur noch ctime sortieren, das dürfte doch machbar sein, oder? Also, ich weiß zwar nicht wie, aber schwer klingt es trotzdem nicht.  ;D Und das mit ctime hab ich ja schonmal hingekriegt, da das Datum anzupassen. Und da hab ich nichts verwurstelt...

Joachim Müller

Schon alleine die Tatsache, dass Du dazu den Core-Code bearbeiten musst (und immer auf's neue nach jedem Update) würde für mich bedeuten, dass es ausscheidet, ganz alleine vom benötigten Zeitaufwand her. Ist aber natürlich Deine Entscheidung - wenn Du abenteuerlustig bist... ;)

Αndré

Quote from: Starlight on April 27, 2009, 10:57:43 AM
Das mit dem lastup nach ctime sortieren klingt gut.
Da müsste ich eben nur noch wissen, wie man das macht.
Das ist das geringste übel ;)

Ersetze in include/functions.inc.php:
$query = "SELECT $select_columns FROM {$CONFIG['TABLE_PICTURES']} WHERE approved = 'YES' $META_ALBUM_SET ORDER BY pid DESC $limit";
durch
$query = "SELECT $select_columns FROM {$CONFIG['TABLE_PICTURES']} WHERE approved = 'YES' $META_ALBUM_SET ORDER BY ctime DESC $limit";

Da hier eine Kerndatei modifiziert wird, muss man diese Änderung nach jedem Coppermine-Update durchführen, wenn das Meta-Album die Sortierung nicht wieder nach der ID anzeigen soll.

Starlight

Äh, ok einer sagt mir dies, der andere das. :D
Joachim: Also, das wäre sozusagen das einzige Problem, ja? Dass ich bei jedem Coppermine Update das ändern müsste. (Damit ist doch gemeint, wenn ich auf eine neue Verion update, oder?)

Da fällt mir noch ein, das gilt doch dann nur für lastup, oder? Stünden dann die Bilder im Album immer noch an vorderster Stelle? Das wäre ja auch wieder doof. (Ich weiß, ihr wollt mich schon ne Runde schütteln :D ich mit meinen Sonderwünschen)

Αndré

Quote from: Starlight on April 27, 2009, 11:11:22 AM
das wäre sozusagen das einzige Problem, ja? Dass ich bei jedem Coppermine Update das ändern müsste. (Damit ist doch gemeint, wenn ich auf eine neue Verion update, oder?)
Ja & Ja.

Quote from: Starlight on April 27, 2009, 11:11:22 AM
Stünden dann die Bilder im Album immer noch an vorderster Stelle?
Wenn du diese nach Uploaddatum sortiert ausgeben lässt: nein, da du dieses ja in der Datenbank manuell anpassen willst.


Quote from: Starlight on April 27, 2009, 09:57:17 AM
Ich würde auch lieber alles nach Datum absteigend sortiert lassen. Also eben nur die betroffenen Bilder an die richtige Stelle rücken und fertig. ;)
Genau das ist das Ergebnis, wenn du 'ctime' manipulierst und die Sortierung des Meta-Albums anpasst.

Starlight

Hach, super! :)
Ich danke euch beiden für die nette und geduldige Hilfe!

Starlight

Ähm, ja, also das Problem dabei ist jetzt, dass die Bilder im Album trotzdem vorne stehen, auch wenn ich ctime verändert hab und das Album nach Datum sortiere. Kann ich das auch noch geradebiegen?

Joachim Müller

Quote from: Starlight on April 27, 2009, 11:11:22 AM
Damit ist doch gemeint, wenn ich auf eine neue Verion update, oder?
Ich rede über Maintenance releases - bisher (bei cpg1.4.x) also 21 mal!

Quote from: Starlight on April 27, 2009, 11:11:22 AM
Äh, ok einer sagt mir dies, der andere das. :D
Wieso? Wir haben doch das gleiche geschrieben. Wo siehst Du einen Unterschied?

Starlight

Ich meinte nur, du hörtest dich sehr negativ diesbezüglich an und eenemeenemuu kam dennoch gleich mit dem nötigen Codeschnipsel. ;)
Das mit den Maintenance Releases find ich jetzt nicht so schlimm. Die erscheinen ja nicht ununterbrochen. Und viel Aufwand ist das ja auch nicht, kurz den Codeschnipsel zu ersetzen.

Mmh, hab jetzt eben, wie gesagt, das Problem mit der Position der Bilder.

Αndré

Quote from: Starlight on April 27, 2009, 12:07:41 PM
Ähm, ja, also das Problem dabei ist jetzt, dass die Bilder im Album trotzdem vorne stehen, auch wenn ich ctime verändert hab und das Album nach Datum sortiere.
Im Meta-Album oder in dem Album in das du die Bilder hinzugefügt hast? Link?

Starlight

Nicht das Meta-Album, sondern, das, das die Bilder beinhaltet.
Z.B. hier. http://starlights-graphics.de/gallery/thumbnails.php?album=24
Die ganze erste Seite sind die "alten" Bilder, die ich umdatiert habe.