Smilies Order MOD - MySQL u. kosmetisches Problem

Allgemeiner Support zum phpBB 2 Board und phpBB 2 Modifikationen
Forumsregeln
Auch wenn hier der Support für phpBB 2 weiterhin aufrecht erhalten bleibt, weisen wir darauf hin, dass das phpBB 2 nicht mehr offiziell unterstützt und weiterentwickelt wird!
Antworten
Stoebi
Beiträge: 447
Registriert: Do 24.Feb, 2005 16:35
Wohnort: Berlin
Kontaktdaten:

Smilies Order MOD - MySQL u. kosmetisches Problem

Beitrag von Stoebi »

Deine phpBB Version: 2.0.15
Typ Deines phpBB Forums: Premodded phpBB
MODs: Ja
Dein Wissensstand: Einsteiger
Link zu Deinem Forum: momentan local, sonst http://komsomolsk.spec-f.de

PHP Version: 4.3.10
MySQL Version: 4.1.10


Was hast Du gemacht, bevor das Problem aufgetreten ist?
Backup gemacht.


Was hast Du bereits versucht um das Problem zu lösen?
Ich habe mich mit MySQL und Selfhtml versucht, vertraut zu machen.



Fehlerbeschreibung und Nachricht

Hi,

ich hab heute den Smilies Order MOD installiert. Funktioniert soweit einwandfrei, nur das nach
der Installation meine Smilies (ACP - Konfiguration -> Smilies) in chaotischer Reihenfolge
sortiert sind und brauche daher eure Hilfe in Sachen MySQL Unterstützung.

Die Tabelle phpbb2_smilies hat eine neue Spalte erhalten: phpbb2_order_smilies

Ich möchte gerne ein Update durchführen so nach dieser Art.
UPDATE `phpbb2_smilies` SET `smilies_order` = '10' WHERE `smilies_id` =1

Mein Problem ist:
phpbb2_smilies_order wird immer um 10 erhöht.
phpbb2_ smilies_id fängt mit 1 an und hört mit 102 bei mir auf.

Wie kann ich es anstellen, dass in der Table phpbb2_smilies Spalte phpbb2_smilies_order
folgende Werte zugewiesen werden?

phpbb2_smilies_id = 1 -> phpbb2_smilies_order = 10
phpbb2_smilies_id = 2 -> phpbb2_smilies_order = 20
phpbb2_smilies_id = 3 -> phpbb2_smilies_order = 30
.
.
phpbb2_smilies_id = 50 -> phpbb2_smilies_order = 500
.
.
phpbb2_smilies_id = 102 -> phpbb2_smilies_order = 1020

geschrieben werden, ohne das ich es für jede phpbb2_smilies_id einzeln tun muss?


Mein 2te Frage bezieht sich auf das Verschieben von Smilies nach oben (TOP), nach unten (Bottom),
auf (up), runter (down), da habe ich bei up ein Problem.

Wenn ich ein Smilie (up) verschiebe, was auch klappt, wird aber nach oben zum ersten
Smilie gesprungen, und ich darf dann wieder ganz nach unten scrollen, um den nächsten
Smilie zu verschieben.

Beispiel:
Ich scrolle ganz nach unten zu meinem 102ten Smilie. Ich verschiebe (up) diesen an Stelle
101. Nach der erfolgreichen Verschiebung wird zum Anfang der Seite gesprungen (TOP).

Ist dafür das Templete und oder auch die MySQL Abfrage wichtig, bevor ich euch hier sinnlos
irgendetwas an diesem Post hänge?


Gruß Stöbi
Zuletzt geändert von Stoebi am So 05.Jun, 2005 16:20, insgesamt 4-mal geändert.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Beide Fragen hängen unmittelbar zusammen:
Der Button "Top" und "Bottom" verringert/erhöht den Wert im Feld "smilies_order" um 10, so daß dieses Smilie "theoretisch" vor/nach dem anderen Smilies einsortiert wird.
Nur (und das ist das Manko):
- Wenn die Stufen schon 10 sind, dann müsste man 15 verringern/erhöhen
- Nach dem Verschieben wäre eine Reorganisation der Ordnungszahlen nötig, um hier alle Smilie-Sortierungen eben von 10 beginnend in 10er-Schritten neu zu erstellen. Dann würde die nächste Verschiebung auch fehlerfrei klappen.

Ansonsten hast Du das Phänomen, einen Smilie mehrfach verschieben zu müssen, bis er wirklich einmal verschoben ist. Und das wird dann im Laufe der Zeit immer schlimmer.

Also:
Link zum Mod und ich schaue mal nach, wie das Problem zu lösen ist.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Stoebi
Beiträge: 447
Registriert: Do 24.Feb, 2005 16:35
Wohnort: Berlin
Kontaktdaten:

Beitrag von Stoebi »

[quote="oxpus - Sa 21.Mai, 2005 16:01";p="32576"]Beide Fragen hängen unmittelbar zusammen:
Der Button "Top" und "Bottom" verringert/erhöht den Wert im Feld "smilies_order" um 10, so daß dieses Smilie "theoretisch" vor/nach dem anderen Smilies einsortiert wird.
Nur (und das ist das Manko):
- Wenn die Stufen schon 10 sind, dann müsste man 15 verringern/erhöhen
- Nach dem Verschieben wäre eine Reorganisation der Ordnungszahlen nötig, um hier alle Smilie-Sortierungen eben von 10 beginnend in 10er-Schritten neu zu erstellen. Dann würde die nächste Verschiebung auch fehlerfrei klappen.

Ansonsten hast Du das Phänomen, einen Smilie mehrfach verschieben zu müssen, bis er wirklich einmal verschoben ist. Und das wird dann im Laufe der Zeit immer schlimmer.

Also:
Link zum Mod und ich schaue mal nach, wie das Problem zu lösen ist.[/quote]

Hi,

@Oxpus, dank dir für deine erschöpfende Antwort.

Anbei das Skript
Zuletzt geändert von Stoebi am So 05.Jun, 2005 16:20, insgesamt 1-mal geändert.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Also neu sortiert wird schon, aber nur, wenn ein Smilie um eine Position verschoben wird. Nicht, wenn es an den Anfang oder ans Ende kommt.
Dann ist diese Änderung nötig:

Code: Alles auswählen

#
#-----[ OPEN ]------------------------------------------
#
admin/admin_smilies.php

#
#-----[ FIND ]------------------------------------------
#
		$order_extreme = $row['smilies_extreme'] + $shift_it;

		$sql = "UPDATE " . SMILIES_TABLE . "
			SET smilies_order = $order_extreme
			WHERE smilies_id = " . $HTTP_GET_VARS['id'];
		if( !$result = $db->sql_query($sql) )
		{
			message_die(GENERAL_ERROR, "Couldn't change smilies order", "", __LINE__, __FILE__, $sql);
		}

#
#-----[ AFTER, ADD ]------------------------------------------
#
		$i = 10;
		$inc = 10;

		$sql = "SELECT *
			FROM " . SMILIES_TABLE . "
			ORDER BY smilies_order";
		if( !$result = $db->sql_query($sql) )
		{
			message_die(GENERAL_ERROR, "Couldn't query smilies order", "", __LINE__, __FILE__, $sql);
		}
		while ( $row = $db->sql_fetchrow($result) )
		{
			if ($row['smilies_order'] != $i)
			{
				$sql = "UPDATE " . SMILIES_TABLE . "
					SET smilies_order = $i
					WHERE smilies_id = " . $row['smilies_id'];
				if( !$db->sql_query($sql) )
				{
					message_die(GENERAL_ERROR, "Couldn't update order fields", "", __LINE__, __FILE__, $sql);
				}
			}
			$i += $inc;
		}
Getestet habe ich den Mod selber nicht, aber das ist das erste, was mir auffällt.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Stoebi
Beiträge: 447
Registriert: Do 24.Feb, 2005 16:35
Wohnort: Berlin
Kontaktdaten:

Beitrag von Stoebi »

[quote="oxpus - Sa 21.Mai, 2005 16:19";p="32579"]Also neu sortiert wird schon, aber nur, wenn ein Smilie um eine Position verschoben wird. Nicht, wenn es an den Anfang oder ans Ende kommt.
Dann ist diese Änderung nötig:

Code: Alles auswählen

#
#-----[ OPEN ]------------------------------------------
#
admin/admin_smilies.php

#
#-----[ FIND ]------------------------------------------
#
		$order_extreme = $row['smilies_extreme'] + $shift_it;

		$sql = "UPDATE " . SMILIES_TABLE . "
			SET smilies_order = $order_extreme
			WHERE smilies_id = " . $HTTP_GET_VARS['id'];
		if( !$result = $db->sql_query($sql) )
		{
			message_die(GENERAL_ERROR, "Couldn't change smilies order", "", __LINE__, __FILE__, $sql);
		}

#
#-----[ AFTER, ADD ]------------------------------------------
#
		$i = 10;
		$inc = 10;

		$sql = "SELECT *
			FROM " . SMILIES_TABLE . "
			ORDER BY smilies_order";
		if( !$result = $db->sql_query($sql) )
		{
			message_die(GENERAL_ERROR, "Couldn't query smilies order", "", __LINE__, __FILE__, $sql);
		}
		while ( $row = $db->sql_fetchrow($result) )
		{
			if ($row['smilies_order'] != $i)
			{
				$sql = "UPDATE " . SMILIES_TABLE . "
					SET smilies_order = $i
					WHERE smilies_id = " . $row['smilies_id'];
				if( !$db->sql_query($sql) )
				{
					message_die(GENERAL_ERROR, "Couldn't update order fields", "", __LINE__, __FILE__, $sql);
				}
			}
			$i += $inc;
		}
Getestet habe ich den Mod selber nicht, aber das ist das erste, was mir auffällt.[/quote]


Tut mir leid Oxpus, es brachte leider keine Änderung.
Ich habe extra DB Backup von heute morgen eingespielt. Spalte smilies_order neu angelegt usw.
Ohne Smilie Order MOD sieht es so aus:
Bild

Nach der Installation des Smilie Order MOD und deiner Anpassung, aber auch ohne deiner Anpassung sieht das Bild, nach dem anschliessenden Gang ins ACP -> Konfiguratiotion und Aufruf
von Smilies, so aus:
Bild

Und klicke ich dann das erste Icon an, um es eine Stufe runter zu setzen (down), dann verschwindet
es ganz nach unten der Seite. Erst wenn ich es wieder nach oben verschiebe (TOP), nicht up, und
dann wieder runter (down) anklicke, funktioniert das mit dem down. Wahrscheinlich, weil durch
das erstmalige Verschieben eines Smilies dann die Daten in DB phpbb2_smilies Spalte
phpbb2_smilies_order, dann für alle Smilies geschrieben werden.

Vielleicht liegt ja da der Hase im Pfeffer begraben. Weil beim erstmaligen Aufruf der Seite Smilies
im ACP wird willkürlich sortiert, da die Spalte phpbb2_smilies_order nur mit 0 zu Anfang gefüllt ist.
0 aber für jedes vorhandene Smilie.

Oder?


Mir ist aufgefallen, wenn ich in der Mitte des Bildschirmes bin, also der Scrollbalken am rechten
Rand sich in der Mitte ja auch befindet, egal ob ich up oder down klicke, es wird danach immer
zum Anfang der Seite gesprungen. Das ist wirklich störend mit der andauerenden Scrollerei,
wenn man mehrere Smilies bearbeiten/verschieben möchte. :(


Gruß Stöbi
Zuletzt geändert von Stoebi am So 05.Jun, 2005 16:20, insgesamt 9-mal geändert.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Welche Button zum nach unten/oben nimmst Du denn? Den einfachen Pfeil oder den Doppelpfeil?
Und wie schauen denn die jeweiligen Links aus?
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Stoebi
Beiträge: 447
Registriert: Do 24.Feb, 2005 16:35
Wohnort: Berlin
Kontaktdaten:

Beitrag von Stoebi »

[quote="oxpus - Sa 21.Mai, 2005 18:03";p="32587"]Welche Button zum nach unten/oben nimmst Du denn? Den einfachen Pfeil oder den Doppelpfeil?
Und wie schauen denn die jeweiligen Links aus?[/quote]

In meinem Beitrag über dir siehst du ja das zweite Image.
Schau mal unter Verschieben (Code, Smiley, Beschreibung, Verschieben, Kategorie, Aktion). Da meine ich die beiden Pfeile (Buttons) zwischen den Doppelpfeilen.

Für "nach oben" (up) sieht der Link so aus:
http://localhost/board/admin/admin_smil ... eb8f60c894

Für "nach unten" (down) sieht der Link so aus:
http://localhost/board/admin/admin_smil ... eb8f60c894


Gruß Stöbi

Edit:
Sorry, ja, den einfachen Pfeil.
Zuletzt geändert von Stoebi am So 05.Jun, 2005 16:19, insgesamt 2-mal geändert.
Antworten