İyinet'e Hoşgeldiniz!

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

Kayıt Ol!

Yazdırmış olduğum php bot ta bi özelliği değiştirmek istiyorum

öğretmenkemal

0
İyinet Üyesi
Katılım
4 Mayıs 2013
Mesajlar
48
Reaction score
0
Yazdırmış olduğum bot forum, sayfa ve kişilerin gönderilerini rasgele seçip facebook benzeri duvarda rasgele şekilde yayınlamaktadır. Yalnız sürekli çok eski gönderileri satırlardan seçmekte ve yayınlamakta. Aşağıda gösterilen kodda nereyi nasıl değiştireyim ki forumda yayınlanan son 20 gönderiyi, sayfada ( guruplarda)) yayınlanan son 20 gönderiyi ve kişilerin (user) son 20 gönderiyi rasgele seçsin. Ek sik dosya varsa onları da yükleyebilirim. Yardımlarınız için şimdiden teşekkürler

<?php
$fl = fopen('hm.txt', 'r');
$str = fgets($fl);
fclose($fl);
preg_match('#<user>(.*?)</user>#s', $str, $getuser);
$user = $getuser[1];
preg_match('#<group>(.*?)</group>#s', $str, $getgroup);
$group = $getgroup[1];
preg_match('#<forum>(.*?)</forum>#s', $str, $getforum);
$forum = $getforum[1];
$user = htmlspecialchars($user);
$group = htmlspecialchars($group);
$forum = htmlspecialchars($forum);
$user = get_magic_quotes_gpc() ? stripslashes($user) : $user;
$group = get_magic_quotes_gpc() ? stripslashes($group) : $group;
$forum = get_magic_quotes_gpc() ? stripslashes($forum) : $forum;
include('connect.php');
$user = function_exists('mysql_real_escape_string') ? mysql_real_escape_string($user) : mysql_escape_string($user);
$group = function_exists('mysql_real_escape_string') ? mysql_real_escape_string($group) : mysql_escape_string($group);
$forum = function_exists('mysql_real_escape_string') ? mysql_real_escape_string($forum) : mysql_escape_string($forum);



$time = time();

mysql_query("update se_actions set action_date='$time' where action_object_owner='user' order by rand() limit $user ");
mysql_query("update se_actions set action_date='$time' where action_object_owner='group' order by rand() limit $group ");
mysql_query("update se_actions set action_date='$time' where action_object_owner='forum' order by rand() limit $forum ");






?>

Ek Olarak: Daha iyi anlaşılabilmesi için sitemiz www.hopboom.com yerlifacebook projesidir.

Ek Olarak: Bi arkadaş başka bir sitede şu şekilde cevap verdi ama istediğim olmadı

yapmanız gereken şey şu

mysql_query("update se_actions set action_date='$time' where action_object_owner='user' order by rand() limit $user ");
mysql_query("update se_actions set action_date='$time' where action_object_owner='group' order by rand() limit $group ");
mysql_query("update se_actions set action_date='$time' where action_object_owner='forum' order by rand() limit $forum ");


update yaparken random olarak alıyor verileri ancak bir şart koşmadan çekiyor. bu yüzden de id değeri ilk olanları çekiyor


mysql_query("update se_actions set action_date='$time' where action_object_owner='user' order by rand() DESC limit $user ");
mysql_query("update se_actions set action_date='$time' where action_object_owner='group' order by rand() DESC limit $group ");
mysql_query("update se_actions set action_date='$time' where action_object_owner='forum' order by rand() DESC limit $forum ");

DESC son dan başlamak anlamına geliyor. ayrıca limit olayını da belirtmemisiniz limit belirte bilirsiniz

$limit = "20";


mysql_query("update se_actions set action_date='$time' where action_object_owner='user' order by rand() DESC limit $limit ");
mysql_query("update se_actions set action_date='$time' where action_object_owner='group' order by rand() DESC limit $limit ");
mysql_query("update se_actions set action_date='$time' where action_object_owner='forum' order by rand() DESC limit $limit ");




Kolay Gelsin


Benim cevabım

Sizin verdiğiniz komutları denedim. Buradaki $limit = "20"; tanımlaması şu tetiklemeyi yaptı: user paylaşımından 20 adet, group paylaşımından 20 adet, forum paylaşımından 20 adet. Ben bunu istemedim aslında.

$user, $gorup, $forum değişkenlerine ben dışarıdan yazılı ufak bir program ile kaç adet olacağını ataya biliyorum. Örneğin user 5 adet group 10 adet ve forum 2 adet olsun diyebiliyorum.

Sizin düzenlemenizi yaptığımda son eklenenden itibaren yapmaya başladı. desc komutu bunu yaptı. ancak $limit ataması istediğimi yapmadı.

Benim istediğim random komutu için sadece son 50 kullanıcı gönderimi, son 50 group gönderimi, son 50 forum gönderimi içinde random yani rasgele getirmesi.


Sistemde kullanıcı gönderimi, sayfa gönderimi, forum gönderimi, itiraf, fıkra, oyun, müzik vb 300 binden fazla gönderi mevcut. Ben hepsi içinde değil yukarıda belirtiğim gibi son 50 gönderiler içinde rasgele çekilmesini istiyorum.

malesef $limit ataması gönderi adedini beliyor. Gönderi adedine ben dışarıdan hakimim ve değiştirebiliyorum.

Yardım ederseniz çok sevinirim şimdiden teşekkürler.

Karşılığında gelen cevap

mysql_query("update se_actions set action_date='$time' where action_object_owner='user' order by rand() DESC limit $user ");
mysql_query("update se_actions set action_date='$time' where action_object_owner='group' order by rand() DESC limit $group ");
mysql_query("update se_actions set action_date='$time' where action_object_owner='forum' order by rand() DESC limit $forum ");

limiti zaten belirleyebiliyorsan $limit koymama gerek yok. istediğin şey tam olaraknedir anlamış değilim.

limiti 50 yap son 50 kaydı rastgele listele. bu yukarıdaki kod bu işlevi görüyor zaten.

Benim cevabım

evet limiti dışarıdan ayrı program yardımı ile belirleye biliyorum. Benim istediğim şöyle. Diyelim user tablosunda şu ana kadar 50 bin gönderi oluştu. son 50 gönderi içerisinden rasgele 5 yazıyı yazdırmak istiyorum. 5 yazıyı dışarıdan program ile seçebiliyorum. Rasgele seçimini user gönderileri içerisinden ve son 50 gönderiden yapıp 5 gönderiyi getirip duvara yazmalı.

Aynı durum forum ve sayfa adını verdiğim group içinden yapmalı.

dışarıdan limiti beliyebildiğim için buna müdahale etmemeli. Ben canımın istediği gibi bu programla bazen 2 gönderi user forumdan 4 group tan da 6 gönderi gönder şeklinde limitleyebiliyoru. ama tüm gönderiler içinden rasgele getiriyor. Ben son 50 gönderileri içerisinden çekmek istiyorum.

Ek Olarak: Daha iyi anlaşılabilmesi için sitemiz www.hopboom.com yerlifacebook projesidir.
 

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