MySql koduyla post değişme?

0
Onaylı Üye
Üye
Katılım
10 Mayıs 2007
Mesajlar
20
Tepki puanı
0
Sevgili vBulletin üstadları, benim sorunum şu;

Mesela forumda _musti_ diye bir üye vardı ve sonrasında üye ismini Mustafa olarak değiştirdi. Bu sayda eski forum mesajlarında, alıntılarda vs.. _musti_ olarak kaldı. Bunu ben nasıl bir sql koduyla tüm mesajlarda olan _musti_ yazılarını Mustafa olarak değiştirebilirim?

Daha önce phpBB de yapardım ama vBulletin de yapamadım, ilginiz için şimdiden teşekkür ederim..
 
1
Onaylı Üye
Üye
Katılım
24 Ocak 2005
Mesajlar
7,131
Tepki puanı
86
Tam olarak emin değilim ama VB de üye birleştirme diye bir özellik vardı. O bu işe yaramıyor mu ?

Eğer yaramıyorsa bu konuda birşeyler deneyebilirim...
 
0
Onaylı Üye
Üye
Katılım
10 Mayıs 2007
Mesajlar
20
Tepki puanı
0
üye birleştirme değil kastettiğim, ben forumda ki bir mesajı başka bir mesajla değiştirmek istiyorum. Daha önce phpBB sistemde basit bir Sql koduyla hallediliyordu ama vBulletin de yapamadım.
 
1
Onaylı Üye
Üye
Katılım
24 Ocak 2005
Mesajlar
7,131
Tepki puanı
86
Önceden _musti_ olarak geçen mesaj sahibi isimleri Mustafa olarak değiştirmek mi isityorsunuz.
 
0
Onaylı Üye
Üye
Katılım
10 Mayıs 2007
Mesajlar
20
Tepki puanı
0
Evet postların içinde ne kadar _musti_ geçiyorsa tümünü Mustafa olarak değiştirmek istiyorum.
 
1
Onaylı Üye
Üye
Katılım
24 Ocak 2005
Mesajlar
7,131
Tepki puanı
86
Bu iki kullanıcını id numaraları aynı mı ? Birde VB versiyonu db yapısı nedir ?

Bir inceleyeyim, yapılabilir mi. Birde bana öm ile bu iki mesajı içeren sayfaların adresini bildirebilir misiniz ?
 
0
Onaylı Üye
Üye
Katılım
10 Mayıs 2007
Mesajlar
20
Tepki puanı
0
Sanırım anlatamadım. :(

Mesela sizin az önceki mesajınız;

"Bu iki kullanıcını id numaraları aynı mı ? Birde VB versiyonu db yapısı nedir ?

Bir inceleyeyim, yapılabilir mi. Birde bana öm ile bu iki mesajı içeren sayfaların adresini bildirebilir misiniz ?
"

bu yazıyı mesela;

Örnek yazı, test, deneme

ile değişmek istiyorum. Sizin bu yazınızın birçok konuda, postta olduğunu düşünün, bunları tek tek değilde bir sql koduyla değişmek istiyorum..
 
1
Onaylı Üye
Üye
Katılım
24 Ocak 2005
Mesajlar
7,131
Tepki puanı
86
Eğer siz bana sayfa üzerinden örnek vererek gösterirseniz bende incelerim ve net bir çözüm üretebilirim dedim.

O yüzden sizden link rica ettim.
 
1
Onaylı Üye
Üye
Katılım
24 Ocak 2005
Mesajlar
7,131
Tepki puanı
86
Local'de deneme yaptım ve bir sorunla karşılaşmadım.

AncaK uygulamadan önce LÜTFEN BURAYI OKUYUN:
Her ihtimale karşı forumunuzun yedeğini almayı unutmayın. Aksi hallerde sorumluluk kabul etmeyeceğimi söylemek isterim. Local'e kurarak deneme yapabilir ve entegre edebilirsiniz.

Konuda dediğiniz gibi yazdım ve değiştirmeniz gereken kısımları aşağıya yazıyorum.

3,4 ve 5. satırlara veritabanı bilgilerinizi girin.
13 ve 18. satırda yazan "musti" kelimesi değiştirelecek olan var olan kelimedir. İsteğinize göre düzenleyiniz.
14. satırda ise yerine gelmesini istediğiniz isim. Onuda düzenleyiniz.

PHP:
<?
$db_host = "localhost"; 
$db_name = "forum";
$db_user = "root";
$db_pw = ""; 

mysql_connect($db_host, $db_user, $db_pw)
OR die ("Cannot connect to your database");
mysql_select_db($db_name) OR die("Cannot connect to your database");

function duzelt($link)
{
$find= array('musti');
$link = str_replace ($find, 'mustafa', $link);
return $link; 
} 

$aranacak = "musti";
$qqz = mysql_query("select pagetext,postid from post where pagetext LIKE '%".$aranacak."%' order by postid DESC");
$say = mysql_num_rows($qqz);
echo "Düzenlenecek Konu Sayısı: ".$say."<br>";
while ( $qqw = mysql_fetch_array($qqz) ) {
$mesaj = $qqw['pagetext'];
$postid = $qqw['postid'];
$duzeltilmis = duzelt($mesaj);


$islem = mysql_query("update post set pagetext = '$duzeltilmis' where postid = '$postid' ");
echo substr($mesaj,0,30);
if ($islem) {echo "<b>Değiştirildi...</b><br>";}
else {echo "<b>Sorun Oluştu...</b><br>";}
}
?>

Kodu çalıştırdıktan sonra aktif olabilmesi için admin panelinizden cache güncellemesi yapmanız gerekebilir.

Kodlar 3.8.3'e göre yapıldı ve diğer sürümlerde de bir fark edeceğini sanmıyorum. Umarım sorunsuz bir şekilde çalıştırabilirsiniz. Sonucuda buradan yazarsanız iyi olur tabi.
 
0
Onaylı Üye
Üye
Katılım
15 Nisan 2005
Mesajlar
1,741
Tepki puanı
29
Konum
Live in .NET
yagmayok'un PHP çözümüne ek olarak MySQL'e direkt ulaşabiliyorsanız ve yagmayok'un kodunu referans alırsak;

Kod:
UPDATE post SET pagetext=REPLACE(pagetext,'musti,'mustafa') WHERE pagetext LIKE '%musti%'

TSQL'i çalıştırırsanız aynı sonucu sağlayacaktır.

NOT : İşlemden önce olası hata durumunda geri dönebilmek için MUTLAKA AMA MUTLAKA yedek alınız.
 
1
Onaylı Üye
Üye
Katılım
24 Ocak 2005
Mesajlar
7,131
Tepki puanı
86
DincerAydogdu peki mesaj içinde başka kelimelerde varsa bu olur mu ? Mantığım olmaz diyor ama siz yazınca merak ettim.
 
0
Onaylı Üye
Üye
Katılım
15 Nisan 2005
Mesajlar
1,741
Tepki puanı
29
Konum
Live in .NET
DincerAydogdu peki mesaj içinde başka kelimelerde varsa bu olur mu ? Mantığım olmaz diyor ama siz yazınca merak ettim.

Az önceki tamamen yanlıştı. Hemen farkettim ve düzelttim. Kusura bakmayın. Az önceki içinde musti geçenlerin tamamını sadece mustafa olarak değiştirirdi.

Şu anki ise kodun yaptığını yapar. PHP'de yaptığınız replace işlemini SQL'e yükleyip zamandan kazanırsınız. İçinde musti geçmeyenleri kendisi ile update eder ki bu da hiç bir şey değişmemesi demektir. Sona eklenen koşulun tek amacı kayıt sayısı abartılıysa gereksiz kayıtları güncellememesidir. Olmasa da olur.
 
1
Onaylı Üye
Üye
Katılım
24 Ocak 2005
Mesajlar
7,131
Tepki puanı
86
:D şimdi oldu. Şunu anlamadım ben.

TSQL nedir tam olarak. "SQL sorgusu" üzerinden mi demek oluyor bu ?
 
0
Onaylı Üye
Üye
Katılım
15 Nisan 2005
Mesajlar
1,741
Tepki puanı
29
Konum
Live in .NET
TSQL = Transact SQL

Ben Microsoft'cu olduğum için MS SQL Server'dan kalma bir ağız alışkanlığı. SQL sorgusu olarak da algılanabilir :)
 
0
Onaylı Üye
Üye
Katılım
10 Mayıs 2007
Mesajlar
20
Tepki puanı
0
Çok teşekkürler arkadaşlar, Allah razı olsun. Hemen deneyip sonucu ileticeğim..
 
0
Onaylı Üye
Üye
Katılım
11 Ekim 2007
Mesajlar
1,553
Tepki puanı
1
Konum
bilecen (:
UPDATE `post` SET `user` = '_musti' WHERE `post`.`userid` =Mustafa;
UPDATE `posthash` SET `user` = '_musti_' WHERE `posthash`.`user` =Mustafa;

Şeklinde devam ederek tabloları güncelleyebilirsin sanırım. Emin olmasamda yedek aldıktan sonra deneyebilirsin. Ayrıca önceden değişim yaptıysan Güncelleme sayaçları ile tüm postları güncelleyebilirsin
 
1
Onaylı Üye
Üye
Katılım
24 Ocak 2005
Mesajlar
7,131
Tepki puanı
86
3fsane aslında bu verdiğiniz arkadaşın çözümü değil. Çünkü arkadaş post içine atılan mesajların sahiplerini değilde mesajlar içinde geçen kelimelerde değişiklik yapmak istiyordu.

Yani post içindeki ki pagetext alanlarına yazılan içeriklerde belli kelimeleri değiştirmemiz gerekiyordu. Sizin verdiğiniz kod ile de galiba sadece konu sahiplerini değiştiriyoruz. Hangi versiyon için yazdınız bilmiyorum ama 3.8.3 için uygun değil. Düzenlenmesi gerekiyor.
 
Geri
Üst