За последние 24 часа нас посетили 17800 программистов и 1653 робота. Сейчас ищут 906 программистов ...

Баннерная сеть (Проблема с выводом ссылки и изображения)

Тема в разделе "Прочие вопросы по PHP", создана пользователем Oleg_php, 17 апр 2012.

  1. Oleg_php

    Oleg_php Активный пользователь

    С нами с:
    17 янв 2012
    Сообщения:
    80
    Симпатии:
    0
    Всем привет, проблема такая есть скрипт по выводу баннеров. Но к сожалению так как идёт случайная выборка ссылки на изображение и ссылка на ресурс получается разная. Есть какой-нибудь вариант решения это проблемы

    Код
    Код (PHP):
    1. $sth = $dbh->prepare("SELECT banner_id,bannername,filename,url,comment
    2.                       FROM banners
    3.                       WHERE banner_conn='".$_GET['member']."'
    4.                       ORDER BY RAND() LIMIT 1");
    5.     $sth->execute();
    6.     $result = $sth->fetch(PDO::FETCH_ASSOC);
    7.     if($result == true)
    8.     {
    9.         extract($result);
    10.         
    11.         if(isset($_GET['transmission'])) // Для ссылки
    12.         {
    13.             header("Location: ".$url);
    14.         }
    15.         else
    16.         {            
    17.             header("Location: http://".$_SERVER["SERVER_NAME"]."/img/".$filename.""); 
    18.         }
    19.     }
    20.     else
    21.     {
    22.         echo 'Ошибка';
    23.     }
    24.  
    Вид ссылки
    <a href="http://sait.ru/network.php?transmission=1&member=1" target="_blank">
    <img src="http://sait.ru/network.php?member=1" border="0" />
    </a>

    Добавлено спустя 50 минут 36 секунд:
    Подскажите решение. Как лучше передать сразу и ссылку и путь к баннеру?
     
  2. softrix

    softrix Активный пользователь

    С нами с:
    21 июл 2009
    Сообщения:
    17
    Симпатии:
    0
    Re: Баннерная сеть (Вывод ссылки отличается)

    У Вас адрес банера и адрес сайта, как хранятся ? В одной таблице или разных ?
     
  3. Oleg_php

    Oleg_php Активный пользователь

    С нами с:
    17 янв 2012
    Сообщения:
    80
    Симпатии:
    0
    Re: Баннерная сеть (Вывод ссылки отличается)

    В одной. Таблица banners.
    Поле filename - путь к картинке
    Поле url - Ссылка на сайт
    Поле banner_conn - Это поле по которому определяется количество баннеров для каждого сайта . Наприме для member = 1, имеется 6 баннеров; Для member = 2, три баннера и т.п.
     
  4. Oleg_php

    Oleg_php Активный пользователь

    С нами с:
    17 янв 2012
    Сообщения:
    80
    Симпатии:
    0
    Есть таблица banners. В ней находятся 5 полей

    Таб.Banners
    Код (Text):
    1. Айди        Айди юзера      Название баннера   Имя фаила      Куда ссылаться
    2. banner_id   banner_conn     bannername         filename       url
    3.  
    4. 1              1            Первый баннер      banner1.gif    http://1.ru
    5. 2              1            Второй баннер      banner2.gif    http://2.ru
    6. 3              1            Третий баннер      banner3.gif    http://3.ru
    7. 4              2            Четвёртый баннер   banner4.gif    http://4.ru
    8. 5              2            Пятый баннер       banner5.gif    http://5.ru
    Участник баннерной сети размещает у себя код:
    Код (Text):
    1. <a href="http://sait.ru/network.php?transmission=1&member=1" target="_blank">
    2. <img src="http://sait.ru/network.php?member=1" border="0" />
    3. </a>
    Где member это ID юзера, а transmission это переменная которая говорит отсносится этот запрос к ссылке или нет.

    Дальше в фаиле network.php идёт запрос к БД
    Код (Text):
    1. try
    2. {
    3.     $dbh = new PDO ( 'mysql:host=' . HOST . ';dbname=' . DB, USER, PASSWORD);
    4.     $dbh->query ( 'SET character_set_connection = '.SQLCHARSET );
    5.     $dbh->query ( 'SET character_set_client = '.SQLCHARSET );
    6.     $dbh->query ( 'SET character_set_results = '.SQLCHARSET );
    7. }
    8. catch(PDOException $e)
    9. {
    10.     die("Ошибка: ".$e->getMessage());
    11. }
    12.  
    13. $sth = $dbh->prepare("SELECT banner_id,bannername,filename,url,comment
    14.                       FROM banners
    15.                       WHERE banner_conn='".$_GET['member']."'
    16.                       ORDER BY RAND() LIMIT 1");
    17.     $sth->execute();
    18.     $result = $sth->fetch(PDO::FETCH_ASSOC);
    19.     if($result == true)
    20.     {
    21.         extract($result);
    22.          
    23.         if(isset($_GET['transmission']))
    24.         {
    25.             header("Location: ".$url);
    26.         }
    27.         else
    28.         {            
    29.             header("Location: http://".$_SERVER["SERVER_NAME"]."/img/".$filename."");  
    30.         }
    31.     }
    32.     else
    33.     {
    34.         echo 'Нет';
    35.     }
    Вот здесь и начинается сложность. При первом запросе (картинки) он случайно выбирает картинку из всех полей где banner_conn = $_GET['member'], а когда нажимаешь по ссылке он снова случанйно выбирает уже ссылку из всех полей где banner_conn = $_GET['member'].

    ВОПРОС:
    Как сделать по человеческий чтобы было вс одновременно) Заранее спасибо!
     
  5. softrix

    softrix Активный пользователь

    С нами с:
    21 июл 2009
    Сообщения:
    17
    Симпатии:
    0
    Здесь дело не в БД. Тут нужно пользователю еще в нагрузку давать файл с библиотекой, где метод будет обращяться к БД и рандомно выводить нормальный УРЛ и картинку банера ну или id банера и сайта к которому он отностися. Или тоже самой через JavaScript библиотеку делать.
     
  6. Oleg_php

    Oleg_php Активный пользователь

    С нами с:
    17 янв 2012
    Сообщения:
    80
    Симпатии:
    0
    Всем спасибо. Нашёл другое решение это проблемы.