İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

MySql koduyla post değişme?

Leo

0
İyinet Üyesi
Katılım
11 Mayıs 2007
Mesajlar
20
Reaction score
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..
 

yagmayok

1
İyinet Üyesi
Katılım
25 Ocak 2005
Mesajlar
7,131
Reaction score
89
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...
 

Leo

0
İyinet Üyesi
Katılım
11 Mayıs 2007
Mesajlar
20
Reaction score
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.
 

yagmayok

1
İyinet Üyesi
Katılım
25 Ocak 2005
Mesajlar
7,131
Reaction score
89
Önceden _musti_ olarak geçen mesaj sahibi isimleri Mustafa olarak değiştirmek mi isityorsunuz.
 

Leo

0
İyinet Üyesi
Katılım
11 Mayıs 2007
Mesajlar
20
Reaction score
0
Evet postların içinde ne kadar _musti_ geçiyorsa tümünü Mustafa olarak değiştirmek istiyorum.
 

yagmayok

1
İyinet Üyesi
Katılım
25 Ocak 2005
Mesajlar
7,131
Reaction score
89
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 ?
 

Leo

0
İyinet Üyesi
Katılım
11 Mayıs 2007
Mesajlar
20
Reaction score
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..
 

yagmayok

1
İyinet Üyesi
Katılım
25 Ocak 2005
Mesajlar
7,131
Reaction score
89
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.
 

yagmayok

1
İyinet Üyesi
Katılım
25 Ocak 2005
Mesajlar
7,131
Reaction score
89
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.
 

DincerAydogdu

0
İyinet Üyesi
Onaylı Üye
Katılım
15 Nisan 2005
Mesajlar
1,741
Reaction score
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.
 

yagmayok

1
İyinet Üyesi
Katılım
25 Ocak 2005
Mesajlar
7,131
Reaction score
89
DincerAydogdu peki mesaj içinde başka kelimelerde varsa bu olur mu ? Mantığım olmaz diyor ama siz yazınca merak ettim.
 

DincerAydogdu

0
İyinet Üyesi
Onaylı Üye
Katılım
15 Nisan 2005
Mesajlar
1,741
Reaction score
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.
 

yagmayok

1
İyinet Üyesi
Katılım
25 Ocak 2005
Mesajlar
7,131
Reaction score
89
:D şimdi oldu. Şunu anlamadım ben.

TSQL nedir tam olarak. "SQL sorgusu" üzerinden mi demek oluyor bu ?
 

DincerAydogdu

0
İyinet Üyesi
Onaylı Üye
Katılım
15 Nisan 2005
Mesajlar
1,741
Reaction score
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 :)
 

Leo

0
İyinet Üyesi
Katılım
11 Mayıs 2007
Mesajlar
20
Reaction score
0
Çok teşekkürler arkadaşlar, Allah razı olsun. Hemen deneyip sonucu ileticeğim..
 

Efsane

0
İyinet Üyesi
Katılım
12 Ekim 2007
Mesajlar
1,553
Reaction score
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
 

yagmayok

1
İyinet Üyesi
Katılım
25 Ocak 2005
Mesajlar
7,131
Reaction score
89
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.
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Backlink ve Tanıtım Yazısı için iletişime geçmek için Skype Adresimiz: .cid.1580508955483fe5

Üst