|
|
|
| Внес изменения в топик: 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 - текстовый файл, ссылки расположены с новой строки. | |
|
|
|
|
|
|
|
для: 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"];
|
| |
|
|
|
|
|
|
|
для: SiM(R)
(17.06.2008 в 19:30)
| | > if (rand(20,100)<20)
У меня некоторые сомнения насчет того, что это условие когда-нибудь выполнится:) | |
|
|
|
|
|
|
|
для: BinLaden
(17.06.2008 в 19:48)
| | if (rand(20,100)<20)
Да точно, невыполниться... if (rand(0,100)<20) | |
|
|
|
|
|
|
|
для: dordoy
(17.06.2008 в 13:46)
| | У вас сначала берутся 100 картинок, затем могут очередные 100, и они должны располагаться на странице строго согласно order by id DESC или могут случайно? | |
|
|
|
|
|
|
|
для: 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% | |
|
|
|
|
|
|
|
для: dordoy
(18.06.2008 в 14:47)
| |
<?
$smlink=$file[rand(0, 100)];
?>
|
| |
|
|
|
|
|
|
|
для: 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>
|
| |
|
|
|
|
|
|
|
для: dordoy
(18.06.2008 в 14:57)
| |
<?
$resultat=mysql_query($zapl) or die(mysql_error());
for($i=0; $i<mysql_num_rows($resultat); $i++){
?>
|
| |
|
|
|
|
|
|
|
для: mihdan
(18.06.2008 в 15:02)
| | Исправил, не читает ... | |
|
|
|
|
|
|
|
для: dordoy
(18.06.2008 в 15:13)
| | null.txt есть и где он лежит(должен быть рядом со скриптом)
Покажите его формат | |
|
|
|
|
|
|
|
для: mihdan
(18.06.2008 в 15:17)
| | Сделал
$smlink=$file[rand(0,100)];
У меня в файле было три ссылки, прописал
$smlink=$file[rand(0,2)]; - заработало!
Большое спасибо!
Осталось реализовать реализовать вывод ссылок из файла null.php в процентном соотношении. | |
|
|
|
|
|
|
|
для: dordoy
(18.06.2008 в 15:22)
| | Сделал
$smlink=$file[rand(0,100)];
У меня в файле было три ссылки, прописал
$smlink=$file[rand(0,2)]; - заработало!
Да оно у вас и так работало, просто какова вероятность того, что при диапазоне от 0 до 100
Вы попадете в одну из первых трех строк (где ссылки написаны). Если бы у вас было бы 100 ссылок, тогда и использовался бы диапазон 0-100. | |
|
|
|
|
|
|
|
для: dordoy
(18.06.2008 в 15:13)
| | Скорее всего у Вас в файле null.txt нет 100 записей, здесь
$smlink=$file[rand(0,100)];
|
вместо 100 укажите количество реально существующих записей | |
|
|
|
|
|
|
|
для: dordoy
(18.06.2008 в 14:57)
| | Вы постепенно карты свои открываете, то взять двадцать ссылок, то одна ссылка но 20%... Выберите случайно (если конечно нужно случайно) одну ссылку из вашего файла со ссылками. От 100, 30% или иное, думаю, вы знаете сколько будет, вот и заменяйте первые 30 полученных из базы ссылок на эту ссылку, а потом перемешайте это массив и уже выведите эти картинки. Если брать и из базы случайно, а не как ASC или DSC, то случайности по более будет. | |
|
|
|
|
|
|
|
для: sim5
(18.06.2008 в 15:44)
| | Честно говоря, ничего не понял из Вашего ответа, простите...
Если можно ввиде кода напишите
Вообще хочу выразить огромную благодарность всем кто примает участие в работе форума, здесь можно найти решение практически любой задачи.
Большое спасибо! | |
|
|
|
|
|
|
|
для: 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);
//теперь в цикле вывести этот массив - картинки, ссылки...
?>
|
| |
|
|
|