[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите дописать скрипт плз)
OrlenkoKN
Я начал писать себе скрипт по проверке бэклинков, а именно: я размещаю свои статьи на сайте товарища, и потом с помощью скрипта проверяю наличие моих ссылок на его сайте..
Объясню подробнее:

я создаю 2 таблицы в базе:
1. SITES:
id | link
1 | mail.ru
2 | ya.ru
где: link - урл сайта, который я должен искать в качестве бэклинка

2. LINKS
id | site_id | link | find
1 | 2 | mysite.ru/news/id5454454 | 1
где: site_id - связь м/у таблицами, то есть на странице mysite.ru/news/id5454454 мне нужно найти ссылку на сайт ya.ru
поле find, принимает значение 1 если ссылка найдена и 0 если не найдена

вот, дальше.. я создаю все формы для автоматизации - добавление/редактирование/удаление, остаётся дело только за проверкой..

по идее должно быть как: скрипт заходит на страницу mysite.ru/news/id5454454 и проверяет на ней наличие каждой из ссылок из таблицы SITES. у меня получается выполнить проверку всех ссылок из таблицы LINKS таким образом:

PHP
$site 'http://www.mail.ru';
    
$query "SELECT * FROM links WHERE 1"
    
$res mysql_query$query );  
    while( 
$lnk mysql_fetch_array$res ) ) {  
          
$page file_get_contents($lnk['slink']); 
          
$id $lnk['id'];
          if ( 
strpos $page$site ) === false 
        {
            echo 
'0'
            
$res0 mysql_query ("UPDATE links SET find='0' WHERE id='$id'");
        }
          else 
        {
              
$res1 mysql_query ("UPDATE links SET find='1' WHERE id='$id'");
            echo 
'1'
        }
    }

но здесь я проверяю только наличие одной ссылки: $site = 'http://www.mail.ru';

Что мне нужно дописать, чтобы проверялось наличие всех ссылок? Понимаю что здесь совсем немного осталось, но доделать не получается...

Пробовал ещё вот так:

PHP
$query1 "SELECT * FROM sites WHERE 1"
$reslt mysql_query$query1 );  
while( 
$st mysql_fetch_array$reslt ) )
{
    
$sites $st['link'];

    
$query "SELECT * FROM links WHERE 1"
    
$res mysql_query$query );  
    while( 
$lnk mysql_fetch_array$res ) )
    {  
          
$page file_get_contents($lnk['slink']); 
          
$id $lnk['id'];
          if ( 
strpos $sites$page ) === false 
        {
            echo 
'0'
            
$res0 mysql_query ("UPDATE links SET find='0' WHERE id='$id'");
        }
          else 
        {
            echo 
'1'
              
$res1 mysql_query ("UPDATE links SET find='1' WHERE id='$id'");
        }
    }
}


но это бяка какая-то... цикл в цикле и совсем не то выдаёт...

Поможите а?smile.gif



Спустя 2 часа, 20 минут, 17 секунд (28.09.2009 - 09:17) Oyeme написал(а):
SQL
SELECT l.id, l.site_id, l.links,l.find, s.id, s.links
FROM links l
JOIN site s ON l.site_id = s.id


Замени свой sql на этот.

Спустя 1 час, 6 минут, 5 секунд (28.09.2009 - 10:23) OrlenkoKN написал(а):
спасибо - попробую

Спустя 3 часа, 12 минут, 19 секунд (28.09.2009 - 13:36) Aleksander написал(а):
Извеняюсь если я не так понял,а что если не искать на странице ссылку,а просто выдавать время последнего показа ссылки?
Я такую штуку для баннера делал,такая идея:
1)Код баннера который кто то размещает у себя на сайте -
HTML
<a href="http://Dip/Banner/BannerCount+1.php">
<IMG SRC="http://Dip/Banner/Banner.php"
alt="Мой баннер" border="0"></a>

2)Если баннер весит на том сайте то работает скрипт Banner.php который у меня лежит по адресу http://Dip/Banner/.
3)Banner.php:
PHP
$Tim=date(' Y-m-d [H:i:s]');
          include (
'../Files/Config.php');
    
mysql_query("UPDATE mybanner SET TimeVisited='".$Tim."' WHERE Address='".$_SERVER['HTTP_REFERER']."'");
    
mysql_close($cnn);
        
header ("Location: banner.gif");

Ну тоесть каждый баннер хранится у меня в базе в виде инфе о его месте нахождения,и состоит из:Address - адрес сайта(на котором весит баннер), TimeVisited - время последнего срабатывания скрипта(показа баннера),Count - счётчик переходов по баннеру.

Всё это вручную заносится через админский скриптик.
Ну и потом инфа о всех баннерах выводится из базы.

Вот, как то так.

Конечно коряво, но для личного пользования вполне норм, правда масшатбных испытаний я не проводил,вполне возможно, что это всё один большой косяк.


Спустя 17 часов, 58 минут, 37 секунд (29.09.2009 - 07:34) OrlenkoKN написал(а):
Aleksander, в моём случае просто периодически нужно проверять наличие ссылки на дружественном сайте.. как-то так)

Спустя 2 минуты, 23 секунды (29.09.2009 - 07:37) OrlenkoKN написал(а):
Вот решение, кстати:
PHP
$query=mysql_query("SELECT * from links");
while (
$links=mysql_fetch_array($query)) {      
    
$query1=mysql_query("SELECT * from sites where id=".$links['site_id']);
    while (
$res=mysql_fetch_array($query1)) {
        
$page file_get_contents($links['slink']);  
        if ( 
strpos $page$res['link']) === false ) { 
        echo 
'0';  
        
$res0 mysql_query ("UPDATE links SET find='0' WHERE id='$links[id]'");
        } else { 
        
$res1 mysql_query ("UPDATE links SET find='1' WHERE id='$links[id]'"); 
        echo 
'1';  
        }          
    }
}
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.