Welcome, Guest. Please Login or Register.
November 26, 2024, 10:40:31 PM
Home Help Search Log in Register
News: SMF is the next generation in forum software, almost completely re-written from the ground up, make sure you don't fall for cheap imitations that suffer from feature bloat!

YaBB SE Community  |  German User Help  |  Hilfe zu YaBB SE  |  Forum verschoben - interne Links falsch « previous next »
Pages: [1] Reply Ignore Print
Author Topic: Forum verschoben - interne Links falsch  (Read 5105 times)
tOsE
Noobie
*
Posts: 34


give me ONE pixel..

ICQ - 43160564
Forum verschoben - interne Links falsch
« on: January 30, 2004, 06:02:52 PM »
Reply with quote

YaBB SE Version: 1.5.5
PHP Version: 4.3.4
MySQL Version: 4.0.x
Server Plattform: Unix, Linux, or BSD

Problem Beschreibung:
Über die Suchfunktion habe ich nichts gefunden:

es geht darum, ich habe mein forum im zuge eines redesigns verschoben - soweit alles besten, nur die user haben in einigen thread ein paar interne links zu anderen thread gesetzt - der pfad dieser thread im forum ist nun ein anderer, die links sind somit tot. wie kriege ich alle links in den postings auf einmal korrigiert?

vielen dank vorab
Logged
SnowCrash
Full Member
***
Posts: 110


Re:Forum verschoben - interne Links falsch
« Reply #1 on: January 30, 2004, 06:52:35 PM »
Reply with quote

<?php

   require_once
('Settings.php');

   //
   
   $old_url   
'http://www.alt.com/board/index.php';
   $new_url   'http://neu.com/board/index.php';
   
   
//
   
   $dbcon   
mysql_connect($db_server$db_user$db_passwd) or die(mysql_error());
   mysql_select_db($db_name) or die(mysql_error());
   
   $sqlquery   
'SELECT body,ID_MSG FROM '.$db_prefix.'messages WHERE body LIKE "%'.addslashes($old_url).'%"';
   $request   mysql_query($sqlquery) or die(mysql_error());
   
   $queries   
= array();
   
   while 
($data mysql_fetch_assoc($request))
   {
      if (!(stristr($data['body'],$old_url) === false))
      {
         $queries[]   'UPDATE '.$db_prefix.'messages SET body = "'.addslashes(stri_replace($old_url,$new_url,$data['body'])).'" WHERE ID_MSG = '.$data['ID_MSG'].';';
      }
   }

   echo '<pre>';

   foreach ($queries as $curquery)
      echo $curquery."\n";

   echo '</pre>';

   // 

   function stri_replace($find,$replace,$string)
   {
          if(!is_array($find)) $find = array($find);
          if(!is_array($replace)) $replace = array($replace);
          foreach($find as $fKey => $fItem)
          {
                  $between explode(strtolower($fItem),strtolower($string));
                  $pos 0;
                  foreach($between as $bKey => $bItem)
                  {
                          $between[$bKey] = substr($string,$pos,strlen($bItem));
                          $pos += strlen($bItem) + strlen($fItem);
                  }
                  $string implode($replace[$fKey],$between);
          }
          return($string);
   }

?>


Die Beiden Variablen am Anfang richtig setzen und das Script ins YSE-Verzeichnis packen und dort ausführen... nach dem Durchlauf zeigt es Dir die SQL-Queries an die Du ausführen musst...

Wenn Du dem Script blind vertraust kannst Du auch

   echo '<pre>';

   foreach ($queries as $curquery)
      echo $curquery."\n";

   echo '</pre>';


durch

   foreach ($queries as $curquery)
      $request   = mysql_query($curquery) or die(mysql_error());


ersetzen... dann führt es alle SQL-Abfragen selber durch...

Wie immer: Garantien gibt es keine...
« Last Edit: January 30, 2004, 06:53:08 PM by SnowCrash » Logged

It's better to be hated for who you are
then to be loved for who
you are not...
[/b][/i]
tOsE
Noobie
*
Posts: 34


give me ONE pixel..

ICQ - 43160564
Re:Forum verschoben - interne Links falsch
« Reply #2 on: January 31, 2004, 08:51:22 AM »
Reply with quote

Vielen vielen Dank - es hat funktioniert.  :)
Logged
signforum24.ch
Noobie
*
Posts: 20


I'm a llama!

Re:Forum verschoben - interne Links falsch
« Reply #3 on: February 07, 2004, 03:58:09 PM »
Reply with quote

Ich habe sowas mal ganz primitiv gemacht: Datenbank gedumpt mit phpmyadmin, Datenbankdatei in einem Texteditor geöffnet (rund 16MB), dann "Suchen und ersetzen" ;) und dann die Datenbankdatei mit dem "restore-script" wieder hochgeladen.
Logged
Pages: [1] Reply Ignore Print 
YaBB SE Community  |  German User Help  |  Hilfe zu YaBB SE  |  Forum verschoben - interne Links falsch « previous - next »
 


Powered by MySQL Powered by PHP YaBB SE Community | Powered by YaBB SE
© 2001-2003, YaBB SE Dev Team. All Rights Reserved.
SMF 2.1.4 © 2023, Simple Machines
Valid XHTML 1.0! Valid CSS

Page created in 0.038 seconds with 20 queries.