Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Замена реальной ссылки на рекламную (с учетом замечаний)
 
 автор: dordoy   (17.06.2008 в 13:46)   письмо автору
 
 

Внес изменения в топик: http://softtime.ru/forum/read.php?id_forum=1&id_theme=54630&page=1

Есть страница с размещенными картинками у каждой картинки ($pic) прописана ссылка ($smlink), которая ведет на внешний сайт.


<?
$zapl
"SELECT * FROM $table order by id  DESC    limit 0,100 " ;

$resultat=mysql_query($zapl);   
for(
$i=0$i<mysql_numrows($resultat); $i++){
  
$fv=mysql_fetch_array($resultat);
  
$id=$fv["id"];
  
$name=$fv["name"];
  
$smlink=$fv["smlink"]; 
  
$pic=$fv["pic"];    

?>  
 
<a href="<? print "$smlink";?>" target="_blank"><img src="/img/<? print "$pic";?>" alt="<?=$name?>" ></a>


<? }?> 


Требуется скрипт, который заменит случайным образом часть (допустим 20%) реальных ссылок на рекламные ссылки из файла (null.php)


Структура файла null.php - текстовый файл, ссылки расположены с новой строки.

   
 
 автор: SiM(R)   (17.06.2008 в 19:30)   письмо автору
 
   для: dordoy   (17.06.2008 в 13:46)
 


<?php
//берем рандомное число, если меньше 20 (вероятность 20%), то открываем файл с ссылками
if (rand(20,100)<20)
{
    
$file=file('null.txt');
    
$smlink=$file[rand(0.100)]; // случайно выбираем ссылку
}  // если больше 20, то берем настоящие ссылки
else $smlink=$fv["smlink"];

   
 
 автор: BinLaden   (17.06.2008 в 19:48)   письмо автору
 
   для: SiM(R)   (17.06.2008 в 19:30)
 

> if (rand(20,100)<20)

У меня некоторые сомнения насчет того, что это условие когда-нибудь выполнится:)

   
 
 автор: SiM(R)   (18.06.2008 в 03:31)   письмо автору
 
   для: BinLaden   (17.06.2008 в 19:48)
 

if (rand(20,100)<20)

Да точно, невыполниться... if (rand(0,100)<20)

   
 
 автор: sim5   (17.06.2008 в 20:41)   письмо автору
 
   для: dordoy   (17.06.2008 в 13:46)
 

У вас сначала берутся 100 картинок, затем могут очередные 100, и они должны располагаться на странице строго согласно order by id DESC или могут случайно?

   
 
 автор: dordoy   (18.06.2008 в 14:47)   письмо автору
 
   для: sim5   (17.06.2008 в 20:41)
 

Вставил код:

<? 
$zapl
"SELECT * FROM $table order by id  DESC    limit 0,100 " 

$resultat=mysql_query($zapl);    
for(
$i=0$i<mysql_numrows($resultat); $i++){ 
  
$fv=mysql_fetch_array($resultat); 
  
$id=$fv["id"]; 
  
$name=$fv["name"];  
  
$pic=$fv["pic"]; 

if (
rand(0,100)<20

    
$file=file('null.txt'); 
    
$smlink=$file[rand(0.100)]; // случайно выбираем ссылку 
}  // если больше 20, то берем настоящие ссылки 
else $smlink=$fv["smlink"];     

?>   
  
<a href="<? print "$smlink";?>" target="_blank"><img src="/img/<? print "$pic";?>" alt="<?=$name?>" ></a> 


в 80% случаях подставляется реальная ссылка, в остальных случаях выдает <a href="" target="_blank">, т.е. из файла null.txt ссылки не читаются.

Дополнительно хотел спросить, допустим в файле null.txt прописано 3 ссылки:

http://www.yandex.ru
http://www.mail.ru
http://www.rambler.ru

как реализовать вывод ссылок в процентном соотношении:

http://www.yandex.ru 30%
http://www.mail.ru 60%
http://www.rambler.ru 10%

   
 
 автор: mihdan   (18.06.2008 в 14:49)   письмо автору
 
   для: dordoy   (18.06.2008 в 14:47)
 

<?
$smlink
=$file[rand(0100)];
?>

   
 
 автор: dordoy   (18.06.2008 в 14:57)   письмо автору
 
   для: mihdan   (18.06.2008 в 14:49)
 

Исправил, без изменений не читает null.txt
<?  
$zapl
"SELECT * FROM $table order by id  DESC    limit 0,100 " ;  

$resultat=mysql_query($zapl);     
for(
$i=0$i<mysql_numrows($resultat); $i++){  
  
$fv=mysql_fetch_array($resultat);  
  
$id=$fv["id"];  
  
$name=$fv["name"];   
  
$pic=$fv["pic"];  

if (
rand(0,100)<20)  
{  
    
$file=file('null.txt');  
    
$smlink=$file[rand(0,100)]; // случайно выбираем ссылку  
}  // если больше 20, то берем настоящие ссылки  
else $smlink=$fv["smlink"];      

?>    
   
<a href="<? print "$smlink";?>" target="_blank"><img src="/img/<? print "$pic";?>" alt="<?=$name?>" ></a>

   
 
 автор: mihdan   (18.06.2008 в 15:02)   письмо автору
 
   для: dordoy   (18.06.2008 в 14:57)
 

<?
$resultat
=mysql_query($zapl) or die(mysql_error());
for(
$i=0$i<mysql_num_rows($resultat); $i++){   
?>

   
 
 автор: dordoy   (18.06.2008 в 15:13)   письмо автору
 
   для: mihdan   (18.06.2008 в 15:02)
 

Исправил, не читает ...

   
 
 автор: mihdan   (18.06.2008 в 15:17)   письмо автору
 
   для: dordoy   (18.06.2008 в 15:13)
 

null.txt есть и где он лежит(должен быть рядом со скриптом)
Покажите его формат

   
 
 автор: dordoy   (18.06.2008 в 15:22)   письмо автору
 
   для: mihdan   (18.06.2008 в 15:17)
 

Сделал
$smlink=$file[rand(0,100)];

У меня в файле было три ссылки, прописал

$smlink=$file[rand(0,2)]; - заработало!

Большое спасибо!

Осталось реализовать реализовать вывод ссылок из файла null.php в процентном соотношении.

   
 
 автор: AcidTrash   (18.06.2008 в 15:29)   письмо автору
 
   для: dordoy   (18.06.2008 в 15:22)
 

Сделал
$smlink=$file[rand(0,100)];
У меня в файле было три ссылки, прописал
$smlink=$file[rand(0,2)]; - заработало!

Да оно у вас и так работало, просто какова вероятность того, что при диапазоне от 0 до 100
Вы попадете в одну из первых трех строк (где ссылки написаны). Если бы у вас было бы 100 ссылок, тогда и использовался бы диапазон 0-100.

   
 
 автор: SiM(R)   (18.06.2008 в 15:23)   письмо автору
 
   для: dordoy   (18.06.2008 в 15:13)
 

Скорее всего у Вас в файле null.txt нет 100 записей, здесь

$smlink=$file[rand(0,100)]; 


вместо 100 укажите количество реально существующих записей

   
 
 автор: sim5   (18.06.2008 в 15:44)   письмо автору
 
   для: dordoy   (18.06.2008 в 14:57)
 

Вы постепенно карты свои открываете, то взять двадцать ссылок, то одна ссылка но 20%... Выберите случайно (если конечно нужно случайно) одну ссылку из вашего файла со ссылками. От 100, 30% или иное, думаю, вы знаете сколько будет, вот и заменяйте первые 30 полученных из базы ссылок на эту ссылку, а потом перемешайте это массив и уже выведите эти картинки. Если брать и из базы случайно, а не как ASC или DSC, то случайности по более будет.

   
 
 автор: dordoy   (18.06.2008 в 16:00)   письмо автору
 
   для: sim5   (18.06.2008 в 15:44)
 

Честно говоря, ничего не понял из Вашего ответа, простите...
Если можно ввиде кода напишите

Вообще хочу выразить огромную благодарность всем кто примает участие в работе форума, здесь можно найти решение практически любой задачи.

Большое спасибо!

   
 
 автор: sim5   (18.06.2008 в 18:56)   письмо автору
 
   для: dordoy   (18.06.2008 в 16:00)
 

Можно поступить так. Выбираете в таблице данные не по порядку, а случайно ORDER BY RAND() LIMIT 1, 120. Далее:

<?
$links 
file("lnk.txt");
//берем из файла одну случайную ссылку
$links $links[rand(0,count($links)-1)];
//если в файле записи типа www.domain 10
$links explode(" ",$links);
//число замен, 
//$M равно числу выбираемых изображений из базы
$n = ($M $links[1]) / 100;
//это массив который будет содержать замену ссылок
$random = array();
//производим замену $n ссылок, начиная с первой  
while ($data mysql_fetch_assoc($result)) {
  
//если не последняя замена, меняем ссылку
  
if ($n 0$data['link'] = $links[0];
  
$random[] = $data;
  
$n--;
}
//говоря словами батьки Лукашенко, перетрахиваем массив
shuffle($random);
//теперь в цикле вывести этот массив - картинки, ссылки...
?>

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования