Album - Löschroutine ändern

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!
Max
Beiträge: 628
Registriert: So 23.Jan, 2005 09:54

Album - Löschroutine ändern

Beitrag von Max »

Hallo,


ich habe mal vor einiger Zeit das hier als txt gespeichert:
unbekannt hat geschrieben:$sql = " SELECT post_id FROM " . POSTS_TEXT_TABLE . " WHERE post_text LIKE '%pic_id=$pic_id\[%' ";
$resulttext = mysql_query($sql) or die (mysql_error());
$anzahltext = mysql_num_rows($resulttext);

$sql = " SELECT post_id FROM " . POSTS_TEXT_TABLE . " WHERE post_subject LIKE '%pic_id=$pic_id%' ";
$resultsubject = mysql_query($sql) or die (mysql_error());
$anzahlsubject = mysql_num_rows($resultsubject);

$sql = " SELECT comment_id FROM " . ALBUM_COMMENT_TABLE . " WHERE comment_text LIKE '%pic_id=$pic_id%' ";
$resultcomment = mysql_query($sql) or die (mysql_error());
$anzahlcomment = mysql_num_rows($resultcomment);

$sql = " SELECT user_id FROM " . USERS_TABLE . " WHERE user_sig LIKE '%pic_id=$pic_id\[%' ";
$resultsig = mysql_query($sql) or die (mysql_error());
$anzahlsig = mysql_num_rows($resultsig);

if ($anzahltext == 0 && $anzahlsubject == 0 && $anzahlcomment == 0 && $anzahlsig == 0)
{
--> Löschen
}
else
{
--> Fehlermeldung oder so (Ich hab hier ne Seite dahinter die die Posts dann anzeigt, weil das als Admi geschickt ist)
}
das habe ich in gekürzter Form versucht in mein Album (with Volodymyr (CLowN) Skoryk's SP1 addon & IdleVoid's Album Category Hierarchy mod!) einzubauen:

Code: Alles auswählen

// loesche nicht wenn verlinkt
$sql = " SELECT post_id FROM " . POSTS_TEXT_TABLE . " WHERE post_text LIKE '%pic_id=$pic_id\[%' ";
$resulttext = mysql_query($sql) or die (mysql_error());
$anzahltext = mysql_num_rows($resulttext);


if ($anzahltext == 0)
{
// --> Löschen
// loesche nicht wenn verlinkt




// loesche nicht wenn verlinkt    
      }
      else
      {
		      //message_die(GENERAL_ERROR, 'Das Bild ist in Beiträgen verlinkt');
          $message = '<b>Das Bild ist in Beitr&auml;gen verlinkt, l&ouml;schen abgebrochen.</b>' .'<br /><br />'. sprintf($lang['Click_return_category'], "<a href="" . append_sid(album_append_uid("album_cat.$phpEx?cat_id=$cat_id")) . "">", "</a>") .'<br /><br />'. sprintf($lang['Click_return_modcp'], "<a href="" . append_sid(album_append_uid("album_modcp.$phpEx?cat_id=$cat_id")) . "">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_album_index'], "<a href="" . append_sid("album.$phpEx") . "">", "</a>");

			message_die(GENERAL_MESSAGE, $message);
      }
// loesche nicht wenn verlinkt
Aber irgendwie schaffe ich es nicht, dass das fehlerfrei läuft.
1. Fehler: es werden alle Versuche bei egal welchem Bild damit kommentiert, dass es verlinkt sei, auch wenn das nicht der Fall ist

2. Fehler: ist quasi die ersatzhandlung zu Fehler Nr. 1
Es wird einfach jedes Bild gelöscht, egal ob verlinkt oder nicht

3. Fehler, eigentlich ein Problem: in album_modcp.php ist es irgenwie nicht wirklich praktikabel, oder bewirkt nichts anderes als bei Fehler1 unb Fehler2

Dann wünsche ich mir noch eine Ergänzung dazu.
Es wäre ja genial, wenn statt der Meldung, dass das Bild verlinkt ist, gleich der entspr. Beitrag (bzw die entspr. Beiträge) verlinkt wird.

Ich krieg es nicht gebacken, würde mich daher riesig freuen, wenn ich da Hilfe bekommen kann.




Gruß Max
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Lass es besser wie es ist. Nur, wenn alles zusammen passt, wie vorgegeben, ist die Arbeit auch korrekt.
Das wurde bereits im Album schon optimiert...
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!
Max
Beiträge: 628
Registriert: So 23.Jan, 2005 09:54

Beitrag von Max »

hmmmm, schade eigentlich.

Ich halte das für eine sinnvolle Sache, da man so die Linkliechen in Beiträgen verhindern kann. Entweder durch nicht löschen des Bildes oder aber, weil man den Beitrag angezeigt bekommt und dann editieren kann.



Gruß Max
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Ich meinte Deine ursprüngliche Version der Abfragen mit "so lassen"...
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!
Max
Beiträge: 628
Registriert: So 23.Jan, 2005 09:54

Beitrag von Max »

ok, aber ich hänge ja so oder so fest.

Gekürzt hatte ich das, weil mir eigentlich die Abfrage durch Textinhalte ausreicht.



Gruß Max
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Also, um jetzt mal Grund in die Sache zu bekommen:

Du willst eine Routine, die aufzeigt, in welchem Post gelöschte Album-Bilder verlinkt sind, richtig?
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!
Max
Beiträge: 628
Registriert: So 23.Jan, 2005 09:54

Beitrag von Max »

Hallo,

also ich möchte, dass oben genannter Code funktionierend in die album_delete.php und die album_modcp.php integriert werden kann - ich kriege den Code zwar rein, aber dann treten die Fehler 1 bis 3 auf.
Damit würde beim Löschen verhindert werden, dass Bilder, die in Beiträgen verlinkt wurden, gelöscht werden, sondern es erscheint eine Meldung, dass das Bild verlinkt ist.

Das wäre schon mal ein Teilerfolg.
Das Sahnehäubchen wäre, wenn man statt der Meldung, dass das Bild verlinkt wurde, auch gleich noch der jeweilige Beitrag angezeigt wird.


Also Schritt eins wäre den Code von Oben zum Laufen zu bringen und Schritt zwei dann halt "nur" noch die Anzeige des Beitrages mit dem Bild.



Gruß Max
Zuletzt geändert von Max am Sa 17.Jun, 2006 19:31, 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 ein "Anti-Lösch-Code", sofern die Images verlinkt wurden?
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!
Max
Beiträge: 628
Registriert: So 23.Jan, 2005 09:54

Beitrag von Max »

[quote="oxpus";p="60863"]Also ein "Anti-Lösch-Code", sofern die Images verlinkt wurden?[/quote]

Genau mit der Wunscherweiterung, dass man sieht, in welchem Beitrag sie verlinkt wurden.

Das schützt dann vor häßlichen Linkleichen in den Beiträgen, falls man mal ein verlinktes Bild löschen musste.


Und da ich meine, dass es reicht, wenn man nur die Beitragstexte durchsucht, habe ich den Code oben etwas verkürzt, da sonst Thementitel, Signaturen und Albumkommentare auch nach der Bild-ID durchsucht werden würden - ist m.E. etwas viel.



Gruß Max
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Aber genau dort kann auch verlinkt werden...
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!
Max
Beiträge: 628
Registriert: So 23.Jan, 2005 09:54

Beitrag von Max »

Ja, ich weiß, aber da sehe ich für mich nicht sooooo den Schwerpunkt - ansonsten kann man den Code ja oben komplett nutzen.
Denn ich schätze, dass sonst das Löschen eines Bildes zu einem Megaklimmzug in der DB wird, deshalb habe ich das in meiner Fantasie auf die Texte reduziert.


Gruß Max
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Und warum nicht in den Posts dann eher auch die Links entfernen und vielleicht durch einen "Dummy"-Text ersetzen?
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!
Max
Beiträge: 628
Registriert: So 23.Jan, 2005 09:54

Beitrag von Max »

[quote="oxpus";p="60867"]Und warum nicht in den Posts dann eher auch die Links entfernen und vielleicht durch einen "Dummy"-Text ersetzen?[/quote]

Das ist eine wesentlich bessere Idee, also das beim Löschen des Bildes, wenn es verlinkt ist, nebenbei noch das hier gemacht wird:

Code: Alles auswählen

UPDATE phpbb_posts_text 
SET post_text = REPLACE(post_text, 'Link zum Bild$pic_id', 'Bild wurde aus dem Album glöscht') 
WHERE post_text LIKE '%Link zum Bild$pic_id%'
Das ist ja deutlich komfortabler, als nur der Link auf die betreffenden Beiträge.
Damit wäre dann mein Wunsch von oben sehr angenehm übererfüllt. Und möglicherweise kann man dann einfach die riesen Abfrage aus dem Code oben weglassen, sondern packt das als Standard mit in die ganzen Löschfelder rein, also praktisch hier:

Code: Alles auswählen

hier war der Bereich, wo ich´s mir dachte
Gruß Max


EDIT:

ich habe nun etwas gefummelt....
Man kann also die Abfragen vom ersten Beitrag hier im Thema komplett weglassen.

Übrigens nicht wundern, dass ich da so viele Informationen in den Link gefummelt habe, aber so werden bei mir die Bilder vom Album verlinkt, da es entweder unterhalb des Bildes in der album_showpage.php angezeigt wird, oder aber beim Posten so in den Beitrag übernommen wird.


als Erstes habe ich in der album_constants.php das hier gemacht:

Code: Alles auswählen

define('TEXT_TABLE', $table_prefix.'posts_text');
dann habe ich in der album_delete.php klar gestellt, wie was auszulesen geht:

Code: Alles auswählen

#
# suche:
#

else
{
	message_die(GENERAL_ERROR, 'No pics specified');
}

#
# danach einfügen:
#

$sql = "SELECT p.*, ac.*, u.user_id, u.username, u.user_rank, r.rate_pic_id, AVG(r.rate_point) AS rating, COUNT( DISTINCT c.comment_id) AS comments_count
		FROM ". ALBUM_CAT_TABLE ." AS ac, ". ALBUM_TABLE ." AS p
			LEFT JOIN ". USERS_TABLE ." AS u ON p.pic_user_id = u.user_id
			LEFT JOIN ". ALBUM_COMMENT_TABLE ." AS c ON p.pic_id = c.comment_pic_id
			LEFT JOIN ". ALBUM_RATE_TABLE ." AS r ON p.pic_id = r.rate_pic_id
		WHERE pic_id = '$pic_id'
		    AND ac.cat_id = p.pic_cat_id
		GROUP BY p.pic_id
		LIMIT 1";

if( !($result = $db->sql_query($sql)) )
{
	message_die(GENERAL_ERROR, 'Could not query pic information', '', __LINE__, __FILE__, $sql);
}
$thispic = $db->sql_fetchrow($result);

if( empty($thispic) )
{
	message_die(GENERAL_ERROR, $lang['Pic_not_exist'] . ' -> ' . $pic_id);
}

$text = '[url=http://'.$board_config['server_name'].$board_config['script_path']. append_sid("album_showpage.$phpEx?pic_id=". $pic_id).']'.'[img]http://'.$board_config['server_name'].$board_config['script_path']. 'album_mod/upload/cache/'.$picrow[$j].$thispic['pic_filename'].'[/img][/url]';
und am Ende im selben File die Löschgeschichte eingestellt:

Code: Alles auswählen

#
# suche:
#

	// --------------------------------
	// It's confirmed. First delete all comments
	// --------------------------------

#
# davor einfügen
#

$sql = "UPDATE " . TEXT_TABLE . "SET post_text = REPLACE(post_text, '$text', 'Das Bild wurde aus dem Album gelöscht.') 
WHERE post_text LIKE '%$text%'";
if( !$result = $db->sql_query($sql) )
	{
		message_die(GENERAL_ERROR, 'Could not delete imagelinks', '', __LINE__, __FILE__, $sql);
	}

das funktioniert fast gut. Leider nur fast, da es mit folgender Fehlermeldung honoriert wird:

Code: Alles auswählen

Could not delete imagelinks

DEBUG MODE

SQL Error : 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '= REPLACE(post_text, '[url=http://127.0.0.1/orion231/album_showpage.php?pic_id=3' at line 1

UPDATE phpbb_posts_textSET post_text = REPLACE(post_text, '[url=http://127.0.0.1/orion231/album_showpage.php?pic_id=313][img]http://127.0.0.1/orion231/album_mod/upload/cache/aneu_007_(large)Makro.jpg[/img][/url]', 'Das Bild wurde aus dem Album gelöscht.') WHERE post_text LIKE '%[url=http://127.0.0.1/orion231/album_showpage.php?pic_id=313][img]http://127.0.0.1/orion231/album_mod/upload/cache/aneu_007_(large)Makro.jpg[/img][/url]%'

Line : 206
File : album_delete.php
 
Wo mache ich da jetzt den Fehler?



Gruß Max
Zuletzt geändert von Max am So 18.Jun, 2006 08: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 »

Ja und damit weiß jeder:
"Hier klebte mal ein Bild"...
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!
Max
Beiträge: 628
Registriert: So 23.Jan, 2005 09:54

Beitrag von Max »

hmmm, irgendwie will mich das Teil ärgern.....

jetzt habe ich das hier:

Code: Alles auswählen

$sql = "UPDATE " . TEXT_TABLE . " SET post_text = REPLACE (post_text, '$text', 'Das Bild wurde aus dem Album geloescht.') 
WHERE post_text LIKE '%$text%'";
if( !$result = $db->sql_query($sql) )
	{
		message_die(GENERAL_ERROR, 'Could not delete imagelinks', '', __LINE__, __FILE__, $sql);
	}
gegen das hier:

Code: Alles auswählen

$sql = "UPDATE ". TEXT_TABLE ." SET post_text = REPLACE(post_text, '$text', 'Das Bild wurde aus dem Album geloescht.') "; 

if( !$result = $db->sql_query($sql) )
	{
		message_die(GENERAL_ERROR, 'Could not delete imagelinks', '', __LINE__, __FILE__, $sql);
	}
ersetzt.
Und nun wird zwar das Bild ohne Fehlermeldungen gelöscht, aber der Beitragstext wird nicht verändert, das heißt, ob der Block nun da ist oder nicht, macht keinen Unterschied, da der Link im Beitrag bleibt.

Ich bin jetzt mal wieder mit meinem Latein am Ende.



Gruß Max
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Den Tabellennamen hast Du bei Dir doch wohl korrekt geschrieben, oder?
Und was genau beinhaltet $text?
Bedenke, daß Links, die mit den BBCodes URL und IMG erstellt werden, auch BBCode-UID's beinhalten!
Daher wäre es hier vielleicht geschickter, erst alle Texte abzufragen und in dieser Schleife mit Hilfe der BBCOde-UID dann den Text zu ersetzen.
Dauert klar länger und erzeugt auch u. U. viele Queries, ist aber dann die einzigste Möglichkeit, den Text sauber zu finden!
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!
Max
Beiträge: 628
Registriert: So 23.Jan, 2005 09:54

Beitrag von Max »

Hallo,


[quote="oxpus";p="60878"]Und was genau beinhaltet $text?[/quote]

damit wird der ewig lange Pfad ausgelesen, so dass alles drin ist, was den BB-Code ausmacht (dachte ich)

Code: Alles auswählen

# $text = '[url=http://'.$board_config['server_name'].$board_config['script_path']. append_sid("album_showpage.$phpEx?pic_id=". $pic_id).']'.'[img]http://'.$board_config['server_name'].$board_config['script_path']. 'album_mod/upload/cache/'.$picrow[$j].$thispic['pic_filename'].'[/img][/url]';

[quote="oxpus";p="60878"]Bedenke, daß Links, die mit den BBCodes URL und IMG erstellt werden, auch BBCode-UID's beinhalten!
Daher wäre es hier vielleicht geschickter, erst alle Texte abzufragen und in dieser Schleife mit Hilfe der BBCOde-UID dann den Text zu ersetzen.
Dauert klar länger und erzeugt auch u. U. viele Queries, ist aber dann die einzigste Möglichkeit, den Text sauber zu finden![/quote]
An die BB-Code.UID habe ich nicht gedacht.
Aber hier komme ich nicht weiter, ich war schon stolz darauf, dass ich so weit gekommen bin.

Wie frage ich diese UID ab und wie bringe ich sie dann in die SQL-Geschichte?



Gruß Max
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Du musst jeden Post abfragen, in dem das Image vorhanden ist.
Also überall, wo

Code: Alles auswählen

post_text LIKE '%album_showpage.$phpEx?pic_id=".$pic_id."%'
ist und dann in dieser Abfrage jeden Post updaten, um dann inkl. der so ermittelten bbcode_id den Link zu komplettieren.
Schau Dir dazu einfach mal die Texte und die Inhalte der Tabellen phpbb_posts_text und phpbb_posts an, dann siehst Du schon, was ich meine...
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!
Max
Beiträge: 628
Registriert: So 23.Jan, 2005 09:54

Beitrag von Max »

Hallo,


es tut mir leid, aber das kapiere ich nicht ganz....

Aber ich habe eine Alternativlösung erstellt.

Ich lasse einfach

Code: Alles auswählen

"album_showpage.$phpEx?pic_id=". $pic_id
gegen album.php ersetzen und dann noch den Pfad zum Thumbnail:

Code: Alles auswählen

'upload/cache/'.$picrow[$j].$thispic['pic_filename']
gegen images/picdel.jpg

So spare ich mir den zerbrochenen Kopf und dem Board beim Löschen die von Dir angekündigte Masse an Queries.
Dann liegt im Beitrag ein kleines Bild mit dem Hinweis, dass das alte Bild aus dem Albumg elöscht wurde und verlinkt einfach nur zum Album selbst.

Ist vielleicht nicht die totale Ideallösung, aber für den Zweck sehr ausreichend.
Es sei denn, Du hasst da noch Zweifel an der langfristigen Sinnhaltigkeit der Aktion, dann würde ich mich über die fraglichen Punkte freuen, damit ich sie in meine Gedankengänge mit einbeziehen kann.


Und nun mach ich mich an die album_modcp.php ran, um dort den selben Effekt hin zu bekommen.


Gruß Max


EDIT

Nun habe ich die album_modcp.php auch fast so weit...

Wenn ich das File so ändere:

Code: Alles auswählen

			// Generate the page
			//
			$template->pparse('body');

			include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
		}
		else
		{
			//
			// Do the delete here...
			//
			if( isset($HTTP_POST_VARS['pic_id']) )
			{
				$pic_id = $HTTP_POST_VARS['pic_id'];
				if( is_array($pic_id) )
				{
					$pic_id_sql = implode(',', $pic_id);
				}
				else
				{
					message_die(GENERAL_ERROR, 'Invalid request');
				}
			}
			else
			{
				message_die(GENERAL_ERROR, 'No pics specified');
			}
  
// Bild-Link loeschen 1. Abschnitt Anfang      
    $sql = "SELECT p.*, ac.*
		FROM ". ALBUM_CAT_TABLE ." AS ac, ". ALBUM_TABLE ." AS p
		WHERE pic_id IN ($pic_id_sql)";
if( !($result = $db->sql_query($sql)) )
{
	message_die(GENERAL_ERROR, 'Could not query pic information', '', __LINE__, __FILE__, $sql);
}
$thispic = $db->sql_fetchrow($result);
if( empty($thispic) )
{
	message_die(GENERAL_ERROR, $lang['Pic_not_exist'] . ' -> ' . $pic_id);
}      
      $text1 =  "album_showpage.$phpEx?pic_id=".($pic_id_sql);
      $text2 = 'upload/cache/'.$thispic['pic_filename'];
// Bild-Link loeschen 1. Abschnitt Ende      

			// well, we got the array of pic_id but we must do a check to make sure all these
			// pics are in this category (prevent some naughty moderators to access un-authorised pics)
			$sql = "SELECT pic_id
					FROM ". ALBUM_TABLE ."
					WHERE pic_id IN ($pic_id_sql) AND pic_cat_id <> $cat_id";
			if( !$result = $db->sql_query($sql) )
			{
				message_die(GENERAL_ERROR, 'Could not obtain album information', '', __LINE__, __FILE__, $sql);
			}
			if( $db->sql_numrows($result) > 0 )
			{
				message_die(GENERAL_ERROR, $lang['Not_Authorised']);
			}
 
// Bild-Link loeschen 2. Abschnitt Anfang      
        $sql = "UPDATE ". TEXT_TABLE ." SET post_text = REPLACE(post_text, '$text1', 'album.php')";
if( !$result = $db->sql_query($sql) )
	{
		message_die(GENERAL_ERROR, 'Could not delete imagelink', '', __LINE__, __FILE__, $sql);
	}
        $sql = "UPDATE ". TEXT_TABLE ." SET post_text = REPLACE(post_text, '$text2', 'images/picdel.jpg')";
if( !$result = $db->sql_query($sql) )
	{
		message_die(GENERAL_ERROR, 'Could not delete thumbnailpath', '', __LINE__, __FILE__, $sql);
	} 
// Bild-Link loeschen 2. Abschnitt Ende     

			// Delete all comments
			$sql = "DELETE FROM ". ALBUM_COMMENT_TABLE ."
					WHERE comment_pic_id IN ($pic_id_sql)";
			if( !$result = $db->sql_query($sql) )
			{
				message_die(GENERAL_ERROR, 'Could not delete related comments', '', __LINE__, __FILE__, $sql);
			}
      

			// Delete all ratings
(es ist etwas mehr Code, die neuen Löschroutinen sind markiert)
dann kann nach der Änderung normal darüber gelöscht werden, aber wenn man mehrere Bilder löscht, wird immer nur bei dem Bild mit der jeweils niedrigsten Pic-ID das Bild getauscht (mein Ersatzbild) und bei keinem gelöschten Bild wird der Link gegen album.php getauscht.
Richtig funktioniert es nur, wenn ich ein Bild löschen lasse, dann wird der Link gegen album.php getauscht und das Thumbnail wird gegen das Ersatzbild getauscht.

Wo liegt hier nun der Fehler, so dass deshalb mein Zusatz nicht sauber durchgeführt wird?



Gruß Max
Zuletzt geändert von Max am So 18.Jun, 2006 18:26, 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 »

Nun, die Löschabfrage für die Images selber wird für alle Bilder gleichzeitig durchgeführt, die Änderung für die Post-Texte aber nur für das ersten Image!

Code: Alles auswählen

$text1 =  "album_showpage.$phpEx?pic_id=".($pic_id_sql);
Das hier wäre also daher falsch, da $pic_id_sql ein String mir aneinander geketten Image-IDs ist! Das ist ja auch in den Post-Texten nicht so, daher musst Du eine Schleife mit

Code: Alles auswählen

for($i = 0; $i < sizeof($pic_id); $i++)
{
Post finden und ändern
}
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!
Max
Beiträge: 628
Registriert: So 23.Jan, 2005 09:54

Beitrag von Max »

Hallo,


dake für die Antwort.
Vom Prinzip her verstehe ich das ja, aber ich kann das nicht umsetzen.

Kannst Du mir bitte an meinem Code die richtige Version posten?
Ich bin echt am Ende meiner Möglichkeiten, selbst mit dem Tipp von Dir.



Gruß Max
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Öhm, ich bin gerade selber im Umbruch bei einer Anpassung hier.
Sorry, musst entweder noch ein paar Tage warten oder versuchst es selber.

Daher nochmal:
Die Bilder, die Du im Moderator Panel auswählst, werden mit Ihren ID's in das Array $pid_id geladen und von dort in $pic_id_sql als hintereinanderkettete Zahlen, durch Kommata getrennt, aneinander gereiht, im diese eben mit nur einer Abfrage aus dem Album gelöscht werden.
Du verwendest aber genau diesen String, der so NIE in den Post-Texten vorkommt, daher ist die von mir genannte Schleife zu verwenden, um eben für jedes ausgewählte Image einmal die Post-Texte durchzugehen. Ist anders nicht möglich.
Sorry aber, wenn ich nicht den kompletten Code poste.
Bin momentan etwas mehr als knapp mit Zeit...
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!
Max
Beiträge: 628
Registriert: So 23.Jan, 2005 09:54

Beitrag von Max »

Hallo,


ich werde es mal versuchen, aber sicherlich muss ich wohl doch einige Tage warten, bis ich die Lösung von Dir serviert bekomme.
Wie gesagt, das Prinzip habe ich verstanden, nur halt die Umsetzung stellt ein Problem für mich dar.


Gruß Max



EDIT:


Hallo,


da ich so rein garnicht weiterkomme, möchte ich doch gerne mal nachfragen, wie es mit der Zeit aussieht?
Würde mich echt freuen, wenn ich da eine Lösung serviert bekomme :)


Gruß Max
Zuletzt geändert von Max am Fr 30.Jun, 2006 10:46, insgesamt 1-mal geändert.
Benutzeravatar
Christian_N
Beiträge: 1787
Registriert: Sa 19.Feb, 2005 21:48
Wohnort: Frankfurt am Main
Kontaktdaten:

Beitrag von Christian_N »

Hallo, versteh ich es richtig, wenn man aus dem Album ein Bild in ein Beitrag hinzufügt und dieses Bild aus Album entfernt wird das gleichzeitig alle Beiträge durchsucht werde wo diese BILD verlinkt wurde und dann mit ein Text ersetzt wird damit in diese Beiträge kein rotes Kreuz (IE) erscheint?

Das wäre ja ne super idee, hoffe dann mal das es da ein komplette fertiges snippet für die allgemeinheit geben wird :)
Meine Projekte: Chantals - Fanpage .::. phpBB Projekt
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Bei mir siehst es zeitlich immer noch schlecht 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!
Antworten