Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Php разделение на страницы с картинками

Ответить
Настройки темы
Php разделение на страницы с картинками

Аватара для Maloy clickonline

Новый участник


Сообщения: 26
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Изменения
Автор: Vlad Drakula
Дата: 13-01-2005
Вот значит код

PHP код: Выделить весь код

<?php

function img() 

    global 
$f$f1$f2
    static 
$nimg=0
    
$nimg++; 
    return 
'<a href="img'.$f.$f1.$f2.$nimg.'.png"><img src="img'.$f.$f1.$f2.$nimg.'.png"></a>'
}
function 
paginate_file($howmuch$filename)
{
    
$out = array();
    
$strings file($filename);
    
$page_num = @$_GET['page'];

    
$total_pages ceil(count($strings) / $howmuch);
    if(
$page_num<|| $page_num>$total_pages$page_num 1;
    
$offset = ($page_num-1) * $howmuch;
    for(
$i=$offset$i<($offset+$howmuch)&&isset($strings[$i]); $i++)
{
    if(
stristr($strings[$i],'#img') )
    {
        
$strings[$i] = str_replace('#','',$strings[$i]); # убираем декорации
        
$strings[$i] = eval($strings[$i].';'); # выполняем строку кода
    
}
        
$out[]=$strings[$i]; # добавляем в выходной массив
}
    
$pages range(1$total_pages);

            return array(
$out$pages);
}


list(
$items$pages) = paginate_file(20"$f$f1$f2.txt");
$npages count($pages);
if (
$npages 1)
{
echo 
'| ';
foreach(
$pages as $number) echo '<a href="'.$_SERVER["PHP_SELF"].'?page='.$number.'&f='.$f.'&f1='.$f1.'&f2='.$f2.'">'.$number.'</a> | ';
echo 
'<br>';
}
foreach(
$items as $item) print ($item."<br>\n");
?>

Необходимо чтобы страницы разделялись по 20 строк, брались из файла $f$f$f2.txt. В том файле может быть строчка #img()# на отдельной строке, при нахождении этой строки должна выполнятся функция img() и появляться картинка на 1 номер больше чем предидущая. Т.е. $f$f1$f2$nimg.png со ссылкой на нее же.Так вот при нахождении #img()# в файле функция не выполняется, она то может и выполняется, но по крайней мере вместо картинки выводится пустая строчка.

-------
Гудбай, маза фака


Отправлено: 22:01, 13-01-2005

 
mar mar вне форума

Аватара для mar

just mar


Moderator


Сообщения: 3904
Благодарности: 163

Профиль | Отправить PM | Цитировать


Maloy clickonline
Цитата:
при нахождении этой строки должна выполнятся функция img()
в упор не вижу в приведенном коде вызова функции img()

Отправлено: 22:38, 13-01-2005 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Maloy clickonline

Новый участник


Сообщения: 26
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


$strings[$i] = eval($strings[$i].';'); # выполняем строку кода

-------
Гудбай, маза фака


Отправлено: 22:46, 13-01-2005 | #3

mar mar вне форума

Аватара для mar

just mar


Moderator


Сообщения: 3904
Благодарности: 163

Профиль | Отправить PM | Цитировать


Maloy clickonline
пардон, проглядела. Но больно уж вычурно. А зачем так сложно?

Цитата:
A return statement will terminate the evaluation of the string immediately. In PHP 4, eval() returns NULL unless return is called in the evaluated code, in which case the value passed to return is returned. In PHP 3, eval() does not return a value.
Примените в вашей if - конструкции просто вызов img() и все отработает.

Последний раз редактировалось mar, 13-01-2005 в 23:15.


Отправлено: 22:59, 13-01-2005 | #4


Ночной странник


Contributor


Сообщения: 4050
Благодарности: 83

Профиль | Сайт | Отправить PM | Цитировать


Maloy clickonline
1) для вставок PHP кода есть спечиальный тег - [ php ]
2) а почему не сделать так:

PHP код: Выделить весь код

<?php

function paginate_file($howmuch$filename)
{
    global 
$f$f1$f2;
    
$nimg=0;
    
$strings file($filename);
    
$page_num = (int)@$_GET['page'];
    
$total_pages ceil(count($strings) / $howmuch);
    if(
$page_num <|| $page_num>$total_pages)
        
$page_num 1;
    
$offset = ($page_num-1) * $howmuch;
    for(
$i=$offset$j = ($offset+$howmuch)<=count($strings)?($offset+$howmuch):count($strings); $i<$j$i++)
      
$out[]=preg_replace('/#img#/ie'"'<a href=\"img\'.$f.$f1.$f2.$nimg.\'.png\"><img src=\"img\'.$f.$f1.$f2.($nimg++).\'.png\"></a>\'",$strings[$i]);

    return array(
$out$total_pages);
}

list(
$items$pages) = paginate_file(20"$f$f1$f2.txt");

if (
$pages 1)
{
for( 
$i 1$i <= $pages$i++)
  echo 
'| <a href="'.$_SERVER['PHP_SELF'].'?page='.$i.'&f='.$f.'&f1='.$f1.'&f2='.$f2.'">'.$i.'</a> ';
echo 
'|<br>';
}
foreach(
$items as $item) print ($item."<br>\n");
?>

помоему так на много понятнее и удобнее!

-------
можно практически все, но просто мы это еще не знаем.
главный враг програмиста это копипастинг
За хорошее сообщение не забываем нажимать ссылочку "Полезное сообщение"!


Отправлено: 00:18, 14-01-2005 | #5


Аватара для Maloy clickonline

Новый участник


Сообщения: 26
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


mar
А вот как бы ни фиг, применял уже но вот проблема - Никаких картинок не вылазит!
Если вам будет не сложно, предложите свой вариант кода, напишите.
Vlad Drakula
А спасиба!

-------
Гудбай, маза фака


Последний раз редактировалось Maloy clickonline, 14-01-2005 в 01:11.


Отправлено: 01:01, 14-01-2005 | #6


Ночной странник


Contributor


Сообщения: 4050
Благодарности: 83

Профиль | Сайт | Отправить PM | Цитировать


Maloy clickonline
а что тот ког который я написал сразу взял и заработал???

-------
можно практически все, но просто мы это еще не знаем.
главный враг програмиста это копипастинг
За хорошее сообщение не забываем нажимать ссылочку "Полезное сообщение"!


Отправлено: 01:16, 14-01-2005 | #7


Аватара для Maloy clickonline

Новый участник


Сообщения: 26
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Ну не совсем, страницы то он делит, а вот строки функции img() из текстового файла не читает! И соответственно никаких тебе картинок!

-------
Гудбай, маза фака


Отправлено: 01:37, 14-01-2005 | #8

mar mar вне форума

Аватара для mar

just mar


Moderator


Сообщения: 3904
Благодарности: 163

Профиль | Отправить PM | Цитировать


хорошо, с функцией:
меняем if(stristr($strings[$i],'#img') ) {bla-bla-bla;} на:
PHP код: Выделить весь код

if(stristr($strings[$i],'#img') )

        
$strings[$i] = img(); # выполняем строку кода 


Отправлено: 01:57, 14-01-2005 | #9


Аватара для Maloy clickonline

Новый участник


Сообщения: 26
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


mar
Все замечательно работает, почти. (Раньше вроди так пробовал, не получалось, мож после того что-то переработал)

Почти.... Картинки, при переходе начинают исчисляться заново, т.е.
1page: 121.png, 122.png, 123.png, 124.png
2page: 121.png, 122.png
3page: 121.png, 122.png, 123.png
и т.д.
Проблема я думаю ясна надо 9 картинок заставить располагаться по порядку т.е.
1page: 121.png, 122.png, 123.png, 124.png
2page: 125.png, 126.png
3page: 127.png, 128.png, 129.png

-------
Гудбай, маза фака


Отправлено: 12:02, 14-01-2005 | #10



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Php разделение на страницы с картинками

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] подставлять значения в зависимости от открытой страницы PhP binders Вебмастеру 11 05-10-2009 00:53
FreeBSD - nginx (аномалии с картинками) xolod. Общий по FreeBSD 0 29-08-2009 13:20
Перестали сохраняться веб-страницы с картинками. degens Хочу все знать 3 22-11-2008 00:05
Интернет - Internet Explorer 6.0 sp2. Как указать печать адреса страницы при печати страницы. GifuN Microsoft Windows 2000/XP 1 11-11-2008 08:29
php как запретить принимать post данные со страницы не находящейся на моем сайте? гы. E-mail Вебмастеру 1 03-04-2005 19:19




 
Переход