Skocz do zawartości
"Idzie nowe..." - o zmianach i nie tylko ×
Przeniesienie zakupów z IPS Marketplace / Moving bought items from IPS Marketplace ×

ROZWIĄZANY: Problem z tagiem [center] po konwersji z przema.


zelo

Rekomendowane odpowiedzi

Po konwersji z phpbb2 by przemo w treści postów mam [center:XXXXXXXX] XXXXXXX - losowy ciąg znaków, przynajmniej tak mi się wydaje ;).

Może ktoś z Was zna jakieś sprytne zapytanie które usunęło by ":XXXXXXXX" z treści postów tak aby został sam tag

.

Swoją drogą widziałem, że ktoś tu na forum miał ten sam problem jednak od 5 dni szukam tego tematu i nie moge znaleźć.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

Witaj,

kiedyś takie cudo znalazłem:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html>
<head>
 <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
 <meta name="Description" content=" [wstaw tu opis strony] ">
 <meta name="Keywords" content=" [wstaw tu slowa kluczowe] ">
 <meta name="Author" content=" [dane autora] ">
 <meta name="Generator" content="kED2">

 <title> [tytuł strony] </title>

 <link rel="stylesheet" href=" [nazwa_arkusza_stylow.css] " type="text/css">
</head>
<body>

<?php
function dane($a)    {

       if(get_magic_quotes_gpc())
       {
           $tmp = stripslashes($a);
       }
       else
       {
           $tmp = $a;
       }
       return mysql_real_escape_string($tmp);
   }


// polaczenie z baz± danych

$sql_open = mysql_connect ("localhost", "user", "pass") or die ('I cannot connect to the database because: ' . mysql_error());
mysql_select_db ("nazwa_bazy");
$sql_id = ''; // prefix tabel


//szukamy posty z krzakami:

$zap = mysql_query("SELECT postid, pagetext FROM ".$sql_id."post WHERE pagetext LIKE '%[center:%' LIMIT 0,50");
while ($tab = mysql_fetch_assoc($zap)) {
   $str = $tab['pagetext'];
   echo '<br>id: '.$tab['postid'].' stare: '.$str;

   $str = preg_replace("/\[center:([a-z0-9]+)\](.*?)\[\/center:([a-z0-9]+)\]/si", "
[center]\\2[/center]
", $str);
   echo '<br><br>nowe: '.$str;

   $zap2 = "UPDATE ".$sql_id."post SET pagetext='".dane($str)."'  WHERE postid='".$tab['postid']."'";

   $x = mysql_query($zap2);


}

?>

</body>
</html>

UWAGA: zrób kopię bazy przez użyciem tego skryptu!

Pamiętaj też, by zmienić dane dostępowe do bazy danych.

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html>
<head>
 <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
 <meta name="Description" content=" [wstaw tu opis strony] ">
 <meta name="Keywords" content=" [wstaw tu slowa kluczowe] ">
 <meta name="Author" content=" [dane autora] ">
 <meta name="Generator" content="kED2">

 <title> [tytuł strony] </title>

 <link rel="stylesheet" href=" [nazwa_arkusza_stylow.css] " type="text/css">
</head>
<body>

<?php
function dane($a)    {

       if(get_magic_quotes_gpc())
       {
           $tmp = stripslashes($a);
       }
       else
       {
           $tmp = $a;
       }
       return mysql_real_escape_string($tmp);
   }


// polaczenie z bazą danych

$sql_open = mysql_connect ("localhost", "nazwa uzytkownika bazy", "haslo") or die ('I cannot connect to the database because: ' . mysql_error());
mysql_select_db ("nazwa bazy");
$sql_id = 'xxx_'; // prefix tabel


//szukamy posty z krzakami:

$zap = mysql_query("SELECT pid, post FROM ".$sql_id."posts WHERE post LIKE '%[center:%' LIMIT 0,50");
while ($tab = mysql_fetch_assoc($zap)) {
   $str = $tab['post'];
   echo '<br>id: '.$tab['pid'].' stare: '.$str;

   $str = preg_replace("/\[center:([a-z0-9]+)\](.*?)\[\/center:([a-z0-9]+)\]/si", "
[center]\\2[/center]
", $str);
   echo '<br><br>nowe: '.$str;

   $zap2 = "UPDATE ".$sql_id."posts SET post='".dane($str)."'  WHERE pid='".$tab['pid']."'";

   $x = mysql_query($zap2);


}

?>

</body>
</html>

Taki skrypt się wykonał. W bazie już nie ma żadnych "[center:xxxxxx]".

Teraz tylko kwestia sprawdzenia czy wszystko jest tak jak być powinno.

Jeśli zależy nam na czasie to można zakomentować te 2 linie odpowiadające za wyświetlanie zmienianych postów:

echo '<br>id: '.$tab['pid'].' stare: '.$str;
echo '<br><br>nowe: '.$str;

Do tego można zwiększyć ilość przetwarzanych postów na cykl modyfikując wartości w tej lini:

$zap = mysql_query("SELECT pid, post FROM ".$sql_id."posts WHERE post LIKE '%[center:%' LIMIT 0,50");

Jak widać domyślnie jest 50 postów.

Dzięki DavPi

Edytowane przez zelo
Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

Problem ROZWIĄZANY. Jeśli są jakiekolwiek wątpliwości, pytania proszę o założenie nowego tematu.

Wszelkie uzasadnione reklamacje/pretensje/sugestie/rady przyjmuje ekipa forum.

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.