|
|
|
| Скрипт показа баннера!
Он выводит рандомайзом 1 ID (т.е. один беннер или текст)!!!
А нужно, что бы выводил 2 или 3 или 5 - сколько я захочу вообщем!
от 0 до 10 например!
Вот прошу Вашей помощи т.к. сам не могу. Понимаю, что нужно в массив взять - но не выходит :(
ВОТ КОД скрипта, который выводит баннер на экран!
<?php
include("config.php");
dbconnect();
if(!isset($action)){
$query = "select * from $banners where status = 1";
$result = doquery($query);
$num = mysql_num_rows($result);
if($num > 1){
$num = $num - 1;
$val = rand(0,$num);
mysql_data_seek($result, $val);
}
$row = mysql_fetch_array($result);
$id = $row['id'];
$adtype = $row['adtype'];
$image = $row['image'];
$alt = $row['alt'];
$link = $row['link'];
$adtext = $row['adtext'];
$target = $row['target'];
$today = date("d m Y");
$query = "select * from $stats where DATE_FORMAT(amdate, '%d %m %Y') = '$today' and id = $id";
$result = doquery($query);
$num_results = mysql_num_rows($result);
$today = date("Y-m-d");
if($num_results == 0){
$query = "INSERT INTO $stats (id, amdate, displays, clicks) VALUES ($id, '$today', 1, 0)";
}else{
$query = "UPDATE $stats SET displays = displays + 1 WHERE id = $id AND amdate = '$today'";
}
$result = doquery($query);
if($target == 0)
$target_text = "_blank";
else
$target_text = "_top";
if($adtype == 1){
echo "<a href='?id=".$id."&action=show' target='$target_text'><img border='0' src='$image' alt='$alt'></a>";
}else{
echo "<a href='?id=".$id."&action=show' target='$target_text'>$adtext</a>";
}
}
if($action == "show"){
$query = "select * from $banners where id = $id";
$result = doquery($query);
$row = mysql_fetch_array($result);
$link = $row['link'];
if(strtolower(substr($link,0,5)) != "http:")
$link = "http://" . $link;
$today = date("d m Y");
$query = "select * from $stats where DATE_FORMAT(amdate, '%d %m %Y') = '$today' and id = $id";
$result = doquery($query);
$num_results = mysql_num_rows($result);
$today = date("Y-m-d");
$query = "UPDATE $stats SET clicks = clicks + 1 WHERE id = $id AND amdate = '$today'";
$result = doquery($query);
header("Location: ".$link);
}
?>
СПАСИТЕ ПОЖАЛУЙСТА! | |
|
|
|
|
|
|
|
для: virtus
(06.09.2005 в 14:55)
| | Я так понимаю за отображение несёт ответственность только последний блок
<?php
if($action == "show")
{
$query = "select * from $banners where id = $id";
$result = doquery($query);
$row = mysql_fetch_array($result);
$link = $row['link'];
if(strtolower(substr($link,0,5)) != "http:")
$link = "http://" . $link;
$today = date("d m Y");
$query = "select * from $stats where DATE_FORMAT(amdate, '%d %m %Y') = '$today' and id = $id";
$result = doquery($query);
$num_results = mysql_num_rows($result);
$today = date("Y-m-d");
$query = "UPDATE $stats SET clicks = clicks + 1 WHERE id = $id AND amdate = '$today'";
$result = doquery($query);
header("Location: ".$link);
}
?>
|
А где происходит сам вывод баннера? | |
|
|
|
|
|
|
|
для: cheops
(06.09.2005 в 15:11)
| | нет!
этот блок считает количесвто показов и кликов!
я пометил # решеткой!
<?php
include("config.php");
dbconnect();
if(!isset($action)){
$query = "select * from $banners where status = 1";
$result = doquery($query);
$num = mysql_num_rows($result);
if($num > 1){
# ВОТ ОН ВЫБИРАЕТСЯ РАНДОМОМ
$num = $num - 1;
$val = rand(0,$num);
mysql_data_seek($result, $val);
}
$row = mysql_fetch_array($result);
$id = $row['id'];
$adtype = $row['adtype'];
$image = $row['image'];
$alt = $row['alt'];
$link = $row['link'];
$adtext = $row['adtext'];
$target = $row['target'];
$today = date("d m Y");
$query = "select * from $stats where DATE_FORMAT(amdate, '%d %m %Y') = '$today' and id = $id";
$result = doquery($query);
$num_results = mysql_num_rows($result);
$today = date("Y-m-d");
if($num_results == 0){
$query = "INSERT INTO $stats (id, amdate, displays, clicks) VALUES ($id, '$today', 1, 0)";
}else{
$query = "UPDATE $stats SET displays = displays + 1 WHERE id = $id AND amdate = '$today'";
}
$result = doquery($query);
if($target == 0)
$target_text = "_blank";
else
$target_text = "_top";
if($adtype == 1){
# ВОТ ОН ОТОБРАЖАЕТСЯ
echo "<a href='?id=".$id."&action=show' target='$target_text'><img border='0' src='$image' alt='$alt'></a>";
}else{
echo "<a href='?id=".$id."&action=show' target='$target_text'>$adtext</a>";
}
}
if($action == "show"){
$query = "select * from $banners where id = $id";
$result = doquery($query);
$row = mysql_fetch_array($result);
$link = $row['link'];
if(strtolower(substr($link,0,5)) != "http:")
$link = "http://" . $link;
$today = date("d m Y");
$query = "select * from $stats where DATE_FORMAT(amdate, '%d %m %Y') = '$today' and id = $id";
$result = doquery($query);
$num_results = mysql_num_rows($result);
$today = date("Y-m-d");
$query = "UPDATE $stats SET clicks = clicks + 1 WHERE id = $id AND amdate = '$today'";
$result = doquery($query);
header("Location: ".$link);
}
?>
|
| |
|
|
|
|
|
|
|
для: virtus
(06.09.2005 в 15:47)
| | А нет тогда гораздо проще воспользоваться случайным выводом из MySQL при помощи инструкции ORDER BY RAND(). Т.е. блок
<?php
$query = "select * from $banners where status = 1";
$result = doquery($query);
$num = mysql_num_rows($result);
if($num > 1)
{
# ВОТ ОН ВЫБИРАЕТСЯ РАНДОМОМ
$num = $num - 1;
$val = rand(0,$num);
mysql_data_seek($result, $val);
}
$row = mysql_fetch_array($result);
?>
|
Переписать следующим образом
<?php
$query = "select * from $banners where status = 1 ORDER BY RAND() LIMIT 5";
$result = doquery($query);
$num = mysql_num_rows($result);
if($num > 0)
{
while($row = mysql_fetch_array($result))
{
// Всё остальное
}
}
?>
|
Цифра 5 в LIMIT определяет число записей, которые будут возврщаены. | |
|
|
|
|
|
|
|
для: cheops
(06.09.2005 в 17:49)
| | Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in cbann.php on line 19
выдает один баннер и вот что пишет!!! | |
|
|
|
|
|
|
|
для: virtus
(07.09.2005 в 10:30)
| | Попробуйте поставить после строки
<?php
$result = doquery($query);
?>
|
проверку
<?php
if(!$result) exit(mysql_error());
?>
|
Кстати, что делает функция doquery()? | |
|
|
|
|
|
|
|
для: cheops
(07.09.2005 в 13:46)
| | ВОТ функция
function doquery($query) {
$result = mysql_query($query) or die(mysql_error());
return $result;
}
|
поэтому проверку смысла нет делать - она и так делается!!!!
ВОТ КАК жеж вывести - вот задачка-то... | |
|
|
|
|
|
|
|
для: virtus
(07.09.2005 в 13:50)
| | Конструкция
<?php
$result = mysql_query($query) or die(mysql_error());
?>
|
не будет срабатывать, так как операция = всегда возвращает true, даже если mysql_query() возвращает ошибку. Сработает только
<?php
mysql_query($query) or die(mysql_error())
?>
|
Эти Perl-овые штучки лишком не очевидны их лучше избегать. Попробуйте переписать код функции следующим образом
<?php
function doquery($query) {
$result = mysql_query($query);
if(!$result) die(mysql_error());
return $result;
}
?>
|
| |
|
|
|