Archiv verlassen und diese Seite im Standarddesign anzeigen : Gepostete URL´s mit einem Query ändern?
Hallo,
meine Crew hat ihre Bilder auf meinem Server liegen.
Da ich nun einen zweiten Flat-Server habe, möchte ich das meine Crew Ihre Bilder nun dort lagern und die bis jetzt gepostet Bilder auch dort hin schieben. Allerdings ist das dann eine andere URL.
Nun möchte ich alle was in den Beiträgen mit
http://pics.celebritymarkt.de/images/femd..............
anfängt in
http://10mbit.celebritymarkt.de/images/crew............
ändern.
Geht das?
Gruß und vielen Dank
Snatch
Hi,
geht schon, ist aber etwas langwierig.
Alle Posts lesen, mit str_replace() den Inhalt ändern und zurückschreiben.
Einfacher wäre aber ein Mod-Rewrite auf das Verzeichnis http://pics.celebritymarkt.de/images/, das auf http://10mbit.celebritymarkt.de/images/ umleitet.
Gruß
Henry
Ich möchte liebe die URLs ändern. Ich möchte ja die Anfragen direckt auf dem aderen Server, ohne Weiterleitung.
Gruß
Snatch
Dann mach das mit nem kleinen Script:<?php
require_once('./global.php');
$result = $db->query_read("SELECT postid, pagetext FROM " . TABLE_PREFIX . "post WHERE pagetext LIKE '%http://pics.celebritymarkt.de/images/%'");
while ($dat = $db->fetch_array($result))
{
$pagetext= str_replace("http://pics.celebritymarkt.de/images/","http://10mbit.celebritymarkt.de/images/",$dat['pagetext']);
$db->query_write("UPDATE " . TABLE_PREFIX . "post SET pagetext = '$pagetext' WHERE postid = " . $dat['postid']);
}
?>
Ungetestet, sollte aber funzen
Gruß
Henry
Nachtrag: Denk auch dran, danach den Beitrags-Cache neu zu erstellen.
Gruß
Henry
Müsste auch so gehen:
UPDATE post SET pagetext = REPLACE (pagetext , 'http://pics.celebritymarkt.de/images/femd','http://10mbit.celebritymarkt.de/images/crew')
Natürlich vorher die post-Tabelle sichern.
Bei post evtl. noch das Präfix hinzufügen.
Ich übernehme keine Haftung für eventuelle Schäden.
Am besten vorher lokal testen. ;)
StGaensler
29.03.2006, 21:01
Ja, das dürfte die schnellste Lösung sein.
Allerdings ist sowohl der Query, als auch str_replace case sensitive - achten also beide auf Groß- und Kleinschreibung.
Bei dem php-Script könntest du (je nach Serverkonfiguration und Datenbank-Größe) Probleme mit der maximalen Ausführungszeit des Scriptes bekommen.
Viele Grüße,
Stefan
Stimmt, sollte die schnellste Version sein. Ab welcher MySQL-Version funzt eigentlich Replace bei Update?
Replace selbst ja ab 4.0.
Gruß
Henry
Danke euch. Das mit dem Query hat 1a funktioniert.
Gruß
Snatch
Hierzu eine Frage.
Würde dieser Code
UPDATE post SET pagetext = REPLACE (pagetext , 'celebritymarkt.de','celebritymarkt.net')
alle Texte genau so umschreiben, also egal was davor und dahinter steht? z.B. www.celebritymarkt.de ? Oder muss ich dann mit * Arbeiten?
GRuß
Snatch
So ist es. ;) Mit Wildcards brauchst du nicht zu arbeiten.
Es wird die Zeichenfolge celebritymarkt.de gesucht und durch celebritymarkt.net ersetzt (egal was davor und dahinter ist).
Also auch wenn etwas ohne Abstand davor oder dahinter steht?
Gut, ich werde es versuchen. Vielen dank.
Gruß
Snatch
So ist es. ;)
Solange celebritymarkt.de zusammengeschrieben ist, ist alles in Butter. :D
StGaensler
02.10.2006, 21:50
... und so lange es klein geschrieben wird. Leider ist diese Abfrage case-sensitive.
Viele Grüße,
Stefan
vBulletin® v3.7.2, Copyright ©2000-2008, Jelsoft Enterprises Ltd.