PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Gepostete URL´s mit einem Query ändern?


Snatch
29.03.2006, 12:25
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

Henry
29.03.2006, 14:38
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

Snatch
29.03.2006, 14:48
Ich möchte liebe die URLs ändern. Ich möchte ja die Anfragen direckt auf dem aderen Server, ohne Weiterleitung.

Gruß
Snatch

Henry
29.03.2006, 15:19
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

Henry
29.03.2006, 15:36
Nachtrag: Denk auch dran, danach den Beitrags-Cache neu zu erstellen.

Gruß
Henry

Pathor
29.03.2006, 18:31
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

Henry
29.03.2006, 21:30
Stimmt, sollte die schnellste Version sein. Ab welcher MySQL-Version funzt eigentlich Replace bei Update?
Replace selbst ja ab 4.0.

Gruß
Henry

Snatch
30.03.2006, 10:03
Danke euch. Das mit dem Query hat 1a funktioniert.

Gruß
Snatch

Snatch
02.10.2006, 11:05
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

Pathor
02.10.2006, 11:58
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).

Snatch
02.10.2006, 12:04
Also auch wenn etwas ohne Abstand davor oder dahinter steht?

Gut, ich werde es versuchen. Vielen dank.

Gruß
Snatch

Pathor
02.10.2006, 12:49
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