Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Помогите! Не могу найти баг!


Автор: Onis 11.2.2006, 19:48
Собственно:

http://onis.jino-net.ru/?show=amrod

И так со всем галереями. Скрипт "хз по какому принципу" выбирает картинку и сует ее привьюхи вместо других фот.
Через фтп смотрел, все фоты на месте а показывает только одну smile((

Но фишка в том что скрипт туп как "система ниппель". Просто читает директорию, заносит данные картинок в массив, сортирует его по дате и выводит их в виде привьюх.

конечно срипт со временем усложнился (открытие первой картинки при входе в галерею, подсветка выбранной фоты и т.д.)

А самое главное локально всё пашет!!!

Код

<?php
    function read_photo_dir()
    {
        global $dir_folder;
        global $show;
        global $image;
        $main_page="index.php";
        class dir_folder
        {
            var $time;
            var $name;
        }
        if($dir=dir("photo/".$show))
        {
            $i=0;
            include("connectToDBR.inc");
            $obj = mysql_query( "SELECT * FROM `onis_gallery` WHERE `link` = '$show' LIMIT 1" );
            $row=mysql_fetch_object($obj);
            print("<span class='zag'><center>$row->name</center></span>");
            echo("<hr width='400'><table align='center'><tr>");
            while (false!==($file=$dir->read()))
            { 
                if($file!="." && $file!="..")
                {
                    $f->time=filemtime("photo/".$show."/".$file);
                    $f->name=$file;
                    $dir_folder[$i]=$f;
                }
                $i++;
            }
            if(isset($dir_folder))
            {
            sort($dir_folder);
                reset($dir_folder);
            $d=1;
            foreach ($dir_folder as $key)
            {
                if($d%10==0)
                        echo("<tr>");
                        echo("<td><a href='$main_page?show=$show&image=$key->name'><img ");
                        if(isset($image))
                        {
                            if($image==$key->name)
                                echo("border='1'");
                            if($image!=$key->name)
                                echo("border='0'");
                        }
                        else
                        {
                            if($dir_folder[0]->name==$key->name)
                                echo("border='1'");
                            if($dir_folder[0]->name!=$key->name)
                                echo("border='0'");
                        }
                            echo("height='40px' title='");
                
                        global $show;
                        include("connectToDBR.inc");
                        $name="../photo/$show/$key->name";
                        $obj=mysql_query("SELECT * FROM onis_comment WHERE `name` = '".mysql_escape_string($name)."' ORDER BY `id` DESC LIMIT 1");
                        $row=mysql_fetch_object($obj);
                            print("№$d: $row->text  |Автор:$row->author [$row->date]");
                        mysql_close($link);
                        echo("' alt='$d' src='scripts/thumb2.php?id=../photo/$show/$key->name'></a></td>");
                    
                        $d++;
            }
            echo("</tr></table>");
            }
        }
    }
    read_photo_dir();
    if(isset($image))
    {
        $size=getimagesize("photo/$show/$image");
        $width=$size[0];
        if($size[0]>428)
            $width=428;
    
        
        $main_page="index.php";
        
        if(isset($image))
        {
            echo("<center><a href='photo/$show/$image' target='_blank'><img width='$width' src='scripts/thumb.php?id=../photo/$show/$image' border='0'></a></center>");
            include("connectToDBR.inc");
            $name="../photo/$show/$image";
            $obj = mysql_query( "SELECT * FROM `onis_description` WHERE `name` = '$name' LIMIT 1" );
            $row=mysql_fetch_object($obj);
            echo("<hr width='400'>");
            echo("$row->text");
            echo("<hr width='400'>");
            show_coments($name);
                include("comments.php");
                write_comments_form();
        }
    }
    if(!isset($image))
    {
        
        global $new;
        $new=$dir_folder[0]->name;
        $size=getimagesize("photo/$show/$new");
        $width=$size[0];
        if($size[0]>428)
            $width=428;
        if(isset($new))
            {
                echo("<center><a href='photo/$show/$new' target='_blank'><img width='$width' src='scripts/thumb.php?id=../photo/$show/$new' border='0'></a></center>");
                include("connectToDBR.inc");
            $name="../photo/$show/$new";
            $obj = mysql_query( "SELECT * FROM `onis_description` WHERE `name` = '$name' LIMIT 1" );
            $row=mysql_fetch_object($obj);
                echo("<hr width='400'>");
                    echo("$row->text");
            }
                echo("<hr width='400'>");
                show_coments($name);
                include("comments.php");
                write_comments_form();
    }
    include("connectToDBR.inc");
            $obj = mysql_query( "SELECT * FROM `onis_gallery` WHERE `link` = '$show' LIMIT 1" );
            $row=mysql_fetch_object($obj);
    print("<table border='0' align='center'><tr><td><span class='style26 style8'>$row->sol</span></td></tr></table>");
    echo("<hr width='400'>");
    
?>


В общем мне нужен вывод, это у меня проблемы или у хоста (просто все работало до поры до времени а потом БАЦ и не работает).

Если у меня проблемы то очень прошу показать направление в котором нужно их искать.

Автор: sergejzr 11.2.2006, 20:11
Модератор: Название темы должно отражать ее суть!

Автор: Kefir 11.2.2006, 20:53
Гм... если ты думаешь что твой скрипт поймут все желающие и без твоей помощи - ошибаешься. Уважь нас, хотя бы общие комментарии проставь, а то разбираться в коде твоём не просто.

Автор: Kefir 11.2.2006, 21:09
Цитата

просто все работало до поры до времени а потом БАЦ и не работает

"Так не бывает..." (с) Трус
А вообще, очень хочется верить, что код будет к тому же и отформатирован нормально (я имею в виду табуляцию).
По теме - ты уверен, что global $var получает значение $_GET['var']? Я вот не очень (= не знаю). Попробуй все POST/GET переменные получать именно из $_GET/$_POST.
Добавлено @ 21:13
Цитата

ты уверен, что global $var получает значение $_GET['var']? Я вот не очень (= не знаю)

Только что проверил скриптом
Код
<?php
    global $a;
    echo $a;
?>

Не работает при register_globals = Off. Так я и думал. Пользуйся superglobals - $_GET/$_POST (причём всегда!). На мой взгляд именно в этом и есть проблема.

Автор: Onis 11.2.2006, 21:51
Kefir,
Цитата(Kefir @ 11.2.2006, 20:53 Найти цитируемый пост)
Гм... если ты думаешь что твой скрипт поймут все желающие и без твоей помощи - ошибаешься. Уважь нас, хотя бы общие комментарии проставь, а то разбираться в коде твоём не просто


ну... чего вы хотите от провинциального школьника выучившего php по "php за 24 часа". smile

Цитата(Kefir @ 11.2.2006, 21:09 Найти цитируемый пост)
Не работает при register_globals = Off. Так я и думал. Пользуйся superglobals - $_GET/$_POST (причём всегда!). На мой взгляд именно в этом и есть проблема.

Можно пояснить?
для такого способа мне нужно по другому объявлять переменные? или просто теже переменные только вызывать таким методом?
Добавлено @ 21:52
sergej.z,
Цитата(sergej.z @ 11.2.2006, 20:11 Найти цитируемый пост)
Модератор: Название темы должно отражать ее суть!

извините, но я дейстивтельно не могу найти баг.
Добавлено @ 21:54
Цитата(Kefir @ 11.2.2006, 21:09 Найти цитируемый пост)
"Так не бывает..." (с) Трус

но это действительно так. Я несколько дней не посещал сайт и вот те раз... smile
хотя локально все пашет.

Автор: Kefir 11.2.2006, 22:05
По поводу register?globals было очень много написано на этом форуме - ищи поиском. Доки смотри http://www.php.net/register_globals.
В кратце это так - если у тебя есть скрипт x.php и к нему обращаются так: x.php?name=Vasja - то Vasja бедут в переменной $_GET['name']. Причём всегда. Если в ПХП.ини написано register_globals = On, то Vasja будет ещё и в $name. На подавляющем большинстве хостингов эта опция отключена.

Автор: sergejzr 11.2.2006, 22:17
Цитата(Onis @ 11.2.2006, 19:51 Найти цитируемый пост)
извините, но я дейстивтельно не могу найти баг.

Это не мешает описать суть в заголовке. То что не можете найти баг - это ваша проблема, а не её суть.

Назвать можно было например "не считываются файлы из директории".

Таковы правила форума!
Добавлено @ 22:22
Вот ваши темы:
http://forum.vingrad.ru/index.php?showtopic=82875&st=0&#entry639237
http://forum.vingrad.ru/index.php?showtopic=81532&st=0&#entry630479
http://forum.vingrad.ru/index.php?showtopic=72265&st=0&#entry573688
http://forum.vingrad.ru/index.php?showtopic=55998&st=0&#entry445592

А теперь поставьте себя на место модератора, который должен просматривать десятки тем и ориентируется по заголовкам. Затем попытайтесь определить, какой вопрос о чём.

Вынужден вынести устное предупреждение.

Автор: Onis 11.2.2006, 23:01
sergej.z,
извините, больше не повторится.


На счет моей проблемы.

рабоать так-же перестала админка.

http://onis.jino-net.ru/scripts/admin.php

файл qwe.php этот скрипт я взял с вашего форума, он для регистрации и авторизации юзеров.

вот строка на которую ругается.

Код

 function hash( $user , $user_agent , $user_ip , $tm )
  {  return md5( $user ) . md5( $user_agent ) . md5( $user_ip ) . md5( $tm );  } //больная строка

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

Автор: Kefir 11.2.2006, 23:16
1. Для каждого вопроса надо создавать новые темы (правила читай). Прошу прощения у модераторов за то что делаю такие замечания smile
2. Функция hash сушествует в PHP - http://ee.php.net/manual/en/function.hash.php. И хоть сами ПХП-шники нга ПХП.нет не знают о версии, есть предположение что админы твоего хостинга апгрейдят сервер (предположение такое - раньше ПХП был какой-нить 4й версии и ф-ции hash там не было - админы поставили новую версию пхп (например скомпилили из cvs как предполагают разработчики пхп smile) -> появилась ф-ция hash -> у тебя в скриптах она повторно определятся. Посмотри в phpinfo чтобы понять какая версия ПХП на хостинге и function_exists для проверки существования ф-ции.

Решение простое - переименуй свою ф-цию hash, например, в my_hash и используй её.

Автор: Onis 11.2.2006, 23:44
Kefir,

Цитата(Kefir @ 11.2.2006, 23:16 Найти цитируемый пост)
2. Функция hash сушествует в PHP - hash. И хоть сами ПХП-шники нга ПХП.нет не знают о версии, есть предположение что админы твоего хостинга апгрейдят сервер (предположение такое - раньше ПХП был какой-нить 4й версии и ф-ции hash там не было - админы поставили новую версию пхп (например скомпилили из cvs как предполагают разработчики пхп ) -> появилась ф-ция hash -> у тебя в скриптах она повторно определятся. Посмотри в phpinfo чтобы понять какая версия ПХП на хостинге и function_exists для проверки существования ф-ции.


хм... админка уже пашет, я переименовал.

Скорей всего так и есть, просто сервак проапгрейдили. Вот только я же не спец я вообще в этих функциях ноль. Мож поможете в приведенном мной скрипте выше найти подобные ф-ии ? Хотя бы в блокноте с помощью search.

Я конечно понимаю что я просто сажусь на шею, но мне кроме вас некуда идти smile

Автор: Kefir 11.2.2006, 23:59
Onis, ошибка первого скрипта не в использовании уже определённых ф-ций, а в том, что ты используешь переменные типа global show; Я уже говорил как исправить эти ошибки - использовать суперглобальные переменные. Скрипта я досканально не знаю и не буду заниматся его редактированием. Когда-то всем приходится читать доки - для тебя это время настало сейчас smile

Автор: Onis 12.2.2006, 00:26
register_globals = On
все равно переписал скрипт, но глюк остался... smile
самый прикол что ошибок сервак не выводит. smile(

Автор: Kefir 12.2.2006, 00:29
последи за переменными в скрипте - посмотри что содержится в $image, $dir_folder и т.д. пользуйся var_dump / print_r

Автор: sergejzr 12.2.2006, 00:33
первым делом добавь строку

error_reporting(E_ALL);

в начало файла(сразу после <?), а затем, если не разберёшься сам, выложишь здесь распечатку.

Автор: Onis 12.2.2006, 00:52
sergej.z,
Notice: Trying to get property of non-object in /home/users/o/onis/docs/scripts/show_last_comment.php on line 13
Но это к основной проблеме не относиться. Вообще другой скрипт, я это сам исправлю. smile(

А вот на счет show_photo.php ноль ошибок.

http://onis.jino-net.ru/?show=amrod



Автор: sergejzr 12.2.2006, 00:57
Распечатывай на каждой строке
echo "value=".$show; "value=".$image;
и так для всех переменных, чтобы понять, что в проге творится. Может директории такой не существуе, может условие не выполняется. Всё так увидишь.

Автор: Onis 12.2.2006, 01:13
Ух... товарищи я вроде нашел ошибку.
Заполнение $dir_folder проходит нормально. (20-30 строки)

а вот ее чтение проходит глухо как-то... (36-68 строки)

На сайте сейчас я сделал вывод значения элементов $dir_folder, правда там все слитно smile но всеже видно начала чтения... это когда она начинает повторяться...

осталось допереть в чем там проблема и испарвить ее smile
Добавлено @ 01:19
Может ф-ю foreach я не правильно юзаю... smile

Автор: Mal Hack 12.2.2006, 01:19
Цитата(Kefir @ 11.2.2006, 23:16 Найти цитируемый пост)
2. Функция hash сушествует в PHP - hash. И хоть сами ПХП-шники нга ПХП.нет не знают о версии, есть предположение что админы твоего хостинга апгрейдят сервер (предположение такое - раньше ПХП был какой-нить 4й версии и ф-ции hash там не было - админы поставили новую версию пхп (например скомпилили из cvs как предполагают разработчики пхп smile) -> появилась ф-ция hash -> у тебя в скриптах она повторно определятся. Посмотри в phpinfo чтобы понять какая версия ПХП на хостинге и function_exists для проверки существования ф-ции.

Знаешь что такое CSV версия? Это версия для разработки, НИКОГДА она на хостинги не поставится.

Onis, переписываешь скрипт под register_globals = Off, убираешь использование всех объектов нафиг и тогда решаем вопрос, иначе гадать что и как мы тут будем вечно.

Автор: Kefir 12.2.2006, 01:41
Mal Hack,
1. Я знаю что такое CVS (а не CSV smile ). Не надо на меня кричать.
2. Говоря о CVS я основывался на этом (взято с php.net):
Цитата
hash
(no version information, might be only in CVS)

3. Раз в скрипт не вносились изменения - значит изменение произошли снаружи - значит проапгрейдили ПХП (что по-моему является правдой - хотя на сайте этой конторы не очень конкретно написано). Раз с этого момента ПХП стал ругаться на hash - значит в ПХП появилась такая встроенная ф-ция. На сайте ПХП пишут, что эта ф-ция скорее всего только в CVS, вот я и сделал предположение. Неужели я не логично рассуждаю?

ЗЫ Люди разные бывают, на хостинги сейчас ставят всё что попало. И админют как попало. И CVS может быть.

Автор: Mal Hack 12.2.2006, 01:44
Цитата(Kefir @ 12.2.2006, 01:41 Найти цитируемый пост)
ЗЫ Люди разные бывают, на хостинги сейчас ставят всё что попало. И админют как попало. И CVS может быть.

Не может такого быть.

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

Автор: Kefir 12.2.2006, 01:54
Mal Hack, я присутствовал лично при ошибке - такую не перепутаешь:
Fatal error: Cannot redeclare phpinfo() in /var/www/hash.php on line 4
(ошибка была 100% такой же - я просто с другой ф-цией делаю, т.к. в моём ПХП нету встроенной hash)
Добавлено @ 01:55
ЗЫ А почему не может? Ничего ведь не мешает!

Автор: Onis 12.2.2006, 01:59
Mal Hack,
Цитата(Mal Hack @ 12.2.2006, 01:44 Найти цитируемый пост)
Я бы автора попросил сказать, как интерпретатор ругается на содержимое функции...

да вроде никак не ругаеться....

я выше написал в чем проблема... проблема в массиве объектов $dir_folder, вроде...
вот функция (вырезал всё лишнее)
Код

    function read_photo_dir()
    {
        global $dir_folder;
        $main_page="index.php";
        class dir_folder
        {
            var $time;
            var $name;
        }
        if($dir=dir("photo/". $_GET['show']))
        {
            $i=0;
            include("connectToDBR.inc");
            $obj = mysql_query( "SELECT * FROM `onis_gallery` WHERE `link` = '" . mysql_escape_string( $_GET['show'] ) . "' LIMIT 1" );
            $row=mysql_fetch_object($obj);
            print("<span class='zag'><center>$row->name</center></span>");
            echo("<hr width='400'><table align='center'><tr>");
            while (false!==($file=$dir->read()))
            { 
                if($file!="." && $file!="..")
                {
                    $f->time=filemtime("photo/".$_GET['show']."/".$file);
                    $f->name=$file;
                    $dir_folder[$i]=$f;
                }
                $i++;
            }
            if(isset($dir_folder))
            {
            sort($dir_folder);
                reset($dir_folder);
            $d=1;
            for($c=0;$c<count($dir_folder);$c++)
            {
                if($d%10==0)
                    echo("<tr>");
                        
                        echo("<td><a href='$main_page?show=$_GET[show]&image=".$dir_folder[$c]->name."'><img ");
                            echo("height='40px' title='");
                        echo(" alt='$d' src='scripts/thumb2.php?id=../photo/$_GET[show]/".$dir_folder[$c]->name."'></a></td>");
                        $d++;
            }
            echo("</tr></table>");
            }
        }

Фишка в том что в $dir_folder все заносится, вроде корректно, но вот читаеться ммм... только один элемент.

Автор: Kefir 12.2.2006, 02:00
Onis, попробуй сделать не foreach а for.
Код

for($i = 0; $i < count($dir_folder); $i++) {
  // обрашение к элементам такое: $dir_folder[$i]->name;
}

Автор: Onis 12.2.2006, 02:02
Kefir,
Цитата(Kefir @ 12.2.2006, 02:00 Найти цитируемый пост)
попробуй сделать не foreach а for.

smile ^^^


Вот результаты из галереи с 2 фотами

array(2) { [0]=> object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } [1]=> object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } }

Автор: Kefir 12.2.2006, 02:03
прямо перед циклом for сделай var_dump($dir_folder) и запости сюда результаты

Автор: Onis 12.2.2006, 02:13
Очень интересный момент.
вывод, строки:26 и 37
Код

function read_photo_dir()
    {
        global $dir_folder;
        $main_page="index.php";
        class dir_folder
        {
            var $time;
            var $name;
        }
        if($dir=dir("photo/". $_GET['show']))
        {
            $i=0;
            include("connectToDBR.inc");
            $obj = mysql_query( "SELECT * FROM `onis_gallery` WHERE `link` = '" . mysql_escape_string( $_GET['show'] ) . "' LIMIT 1" );
            $row=mysql_fetch_object($obj);
            print("<span class='zag'><center>$row->name</center></span>");
            echo("<hr width='400'><table align='center'><tr>");
            while (false!==($file=$dir->read()))
            { 
                if($file!="." && $file!="..")
                {
                    $f->time=filemtime("photo/".$_GET['show']."/".$file);
                    $f->name=$file;
                    $dir_folder[$i]=$f;
                    print("<br>");
                    print($dir_folder[$i]->name);
                    print("<br>");
                }
                $i++;
            }
            if(isset($dir_folder))
            {
            sort($dir_folder);
                reset($dir_folder);
            $d=1;
                print("<br>");
                    var_dump($dir_folder);
                print("<br>");
            for($c=0;$c<count($dir_folder);$c++)
            {
                if($d%10==0)
                    echo("<tr>");
                        
                        echo("<td><a href='$main_page?show=$_GET[show]&image=".$dir_folder[$c]->name."'><img ");
                            echo("height='40px' title='");
                        echo(" alt='$d' src='scripts/thumb2.php?id=../photo/$_GET[show]/".$dir_folder[$c]->name."'></a></td>");
                        $d++;
            }
            echo("</tr></table>");
            }
        }
    }




denis2.jpg

denis1.jpg

array(2) { [0]=> object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } [1]=> object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } }


где массив грохается? smile
Добавлено @ 02:16
парадокс какойто блин. smile

Автор: sergejzr 12.2.2006, 02:24
распечатывай индекс $i тоже

Автор: Onis 12.2.2006, 02:24
http://www.php.net/ChangeLog-5.php - события которые мне все запороли smile
Добавлено @ 02:29
0 denis2.jpg 1130625299

2 denis1.jpg 1130625297

array(2) { [0]=> object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } [1]=> object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } }

Автор: sergejzr 12.2.2006, 02:39
значит индекс 0, а потом сразу 2. Как это должно работать? smile

Замени-ка $dir_folder[$i]=$f;
на
array_push($dir_folder[$i],$f);

вот так:
Код

          while (false!==($file=$dir->read()))
            { 
                if($file!="." && $file!="..")
                {
                    $f->time=filemtime("photo/".$_GET['show']."/".$file);
                    $f->name=$file;
                    array_push($dir_folder[$i],$f);
                    print("<br>");
                    print($dir_folder[$i]->name);
                    print("<br>");
                }
                $i++;
            }

Автор: Onis 12.2.2006, 02:46
Warning: array_push(): First argument should be an array in z:\home\php\www\site2.6\scripts\show_photo.php on line 25

smile

Я не знаком с этой ф-ей так что исправить сам не смог smile

Автор: sergejzr 12.2.2006, 02:49
перед циклом поставь $dir_folder=array()
Добавлено @ 02:51
Вообще пхп даёт справку так6

www.php.net/имя_функции_с_которой_не_знаком
например

www.php.net/array_push

Автор: Onis 12.2.2006, 02:58

0 denis2.jpg 1130625299

1 denis1.jpg 1130625297

array(2) { [0]=> object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } [1]=> object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } }

красивее но эфекта ноль...



Цитата(sergej.z @ 12.2.2006, 02:49 Найти цитируемый пост)
www.php.net/имя_функции_с_которой_не_знаком
например

www.php.net/array_push

спасибо, действительно полезный совет.

Автор: sergejzr 12.2.2006, 03:07
reset($dir_folder);по моему не надо

Вообще фигня какая то.. Попробуй чтоли прогони параллельно array
Код

$arr=array();
  while (false!==($file=$dir->read()))
            { 
                if($file!="." && $file!="..")
                {
                    $f->time=filemtime("photo/".$_GET['show']."/".$file);
                    $f->name=$file;
                    array_push($arr,$file);

                    array_push($dir_folder,$f);
                    print("<br>");
                    print($dir_folder[$i]->name);
                    print("<br>");
                }
                $i++;
            }
print_r($arr);



что будет?
Добавлено @ 03:07
Цитата(Onis @ 12.2.2006, 00:58 Найти цитируемый пост)
спасибо, действительно полезный совет.

Ну дык smile бесполезных не даём smile)

Автор: Onis 12.2.2006, 03:17
0 denis2.jpg 1130625299

1 denis1.jpg 1130625297

Array ( [0] => denis2.jpg [1] => denis1.jpg )
array(2) { [0]=> object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } [1]=> object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } }


удивительно, и где он там успевает измениться!?
Добавлено @ 03:21
может ошибка в том как я вывожу? а именно в цыкле for ?
Код

for($c=0;$c<count($dir_folder);$c++)
            {
                if($d%10==0)
                    echo("<tr>");
                        
                        echo("<td><a href='$main_page?show=$_GET[show]&image=".$dir_folder[$c]->name."'><img ");
                            echo("height='40px' title='");
                        echo(" alt='$d' src='scripts/thumb2.php?id=../photo/$_GET[show]/".$dir_folder[$c]->name."'></a></td>");
                        $d++;
            }

Автор: sergejzr 12.2.2006, 03:31
Цитата(Onis @ 12.2.2006, 01:17 Найти цитируемый пост)
может ошибка в том как я вывожу? а именно в цыкле for ?

вряд ли.

reset($dir_folder); убрал? Кстати, можешь убрать global $dir_folder; это тебе не нужно судя по коду

Автор: Onis 12.2.2006, 03:49
эх... похоже ничего не выходит smile(

Автор: Kefir 12.2.2006, 10:17
Onis, пойдём драконовскими тупыми методами, - делай
Код

echo "<br>Var dump: ";
var_dump($dir_folder);
echo "<br>";

в цикле заполнения + дальше делай этот же самый код до тех пор, когда $dir_folder становится пустым (после КАЖДОЙ команды - будь то sort или reset). Так мы хотя бы узнаем после какого места в скрипте переменная грохается.

Автор: Onis 12.2.2006, 13:58
Var dump(cразу после заполнения):
array(2) { [0]=> object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } [1]=> object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } }

Var dump: до sort
array(2) { [0]=> object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } [1]=> object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } }

Var dump: после sort
array(2) { [0]=> object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } [1]=> object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } }

Var dump: после for
array(2) { [0]=> object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } [1]=> object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" }


Явно грохается массив сразу после заполнения:
Код

$dir_folder=array();
            while (false!==($file=$dir->read()))
            { 
                if($file!="." && $file!="..")
                {
                    $f->time=filemtime("photo/".$_GET['show']."/".$file);
                    $f->name=$file;
                    array_push($dir_folder,$f);
                }
                $i++;
            }
    echo "<br>Var dump(cразу после заполнения):<Br> ";
    var_dump($dir_folder);
    echo "<br>";

Автор: Kefir 12.2.2006, 14:06
вместо
Код

            while (false!==($file=$dir->read()))
            { 
                if($file!="." && $file!="..")
                {
                    $f->time=filemtime("photo/".$_GET['show']."/".$file);
                    $f->name=$file;
                    array_push($dir_folder,$f);
                }
                $i++;
            }

поставь
Код

            while (false!==($file=$dir->read()))
            { 
                if($file!="." && $file!="..")
                {
                    $f->time=filemtime("photo/".$_GET['show']."/".$file);
                    $f->name=$file;
                    echo "<br>Var_dump 'f':<br>"; $var_dump($f); echo "<br>";
                    array_push($dir_folder,$f);
                }
                $i++;
                var_dump($dir_folder);
            }

чтобы было видно что и как в цикле

Автор: Onis 12.2.2006, 14:11

Var_dump 'f':
object(stdClass)#3 (2) { ["time"]=> int(1130625299) ["name"]=> string(10) "denis2.jpg" }
array(1) { [0]=> object(stdClass)#3 (2) { ["time"]=> int(1130625299) ["name"]=> string(10) "denis2.jpg" } } array(1) { [0]=> object(stdClass)#3 (2) { ["time"]=> int(1130625299) ["name"]=> string(10) "denis2.jpg" } }
Var_dump 'f':
object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" }
array(2) { [0]=> object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } [1]=> object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } } array(2) { [0]=> object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } [1]=> object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } }

Автор: Kefir 12.2.2006, 14:24
ясно, что уже при заполнении подставляются неправильные значения. идём дальше.
Код

$i = 0;
while (false!==($file=$dir->read()))
            {
                echo "<br>i = ".$i."<br>";
                if($file!="." && $file!="..")
                {
                    $f->time=filemtime("photo/".$_GET['show']."/".$file);
                    $f->name=$file;
                    echo "<br>Var_dump 'f':<br>"; $var_dump($f); echo "<br>";
                    $dir_folder[$i] = $f;
                    echo "<br>Var_dump 'dir_folder':<br>"; var_dump($dir_folder); echo "<br>";
                }
                $i++;
            }

Автор: sergejzr 12.2.2006, 14:28
Блин, я фигею smile)) Ну конечно одно и тоже, $f ведь не меняется smile))
Чтото мы совсем в глубину забрались, а очевидного не замечаем.

smile попробуй добавить строку
Код

while (false!==($file=$dir->read()))
            {
                echo "<br>i = ".$i."<br>";
                if($file!="." && $file!="..")
                {

$f=new dir_folder;

                    $f->time=filemtime("photo/".$_GET['show']."/".$file);
                    $f->name=$file;
                    echo "<br>Var_dump 'f':<br>"; $var_dump($f); echo "<br>";
                    $dir_folder[$i] = $f;
                    echo "<br>Var_dump 'dir_folder':<br>"; var_dump($dir_folder); echo "<br>";
                }
                $i++;
            }

Автор: Onis 12.2.2006, 14:29
i = 0

Var_dump 'f':
object(stdClass)#3 (2) { ["time"]=> int(1130625299) ["name"]=> string(10) "denis2.jpg" }

Var_dump 'dir_folder':
array(1) { [0]=> object(stdClass)#3 (2) { ["time"]=> int(1130625299) ["name"]=> string(10) "denis2.jpg" } }

i = 1

i = 2

Var_dump 'f':
object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" }

Var_dump 'dir_folder':
array(2) { [0]=> object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } [2]=> object(stdClass)#3 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } }

i = 3

smile
Добавлено @ 14:37
Выходит оно как-то заменяет сразу все элементы массива на следующий, а не просто его добовляет... или я чето не понимаю smile

Автор: Kefir 12.2.2006, 14:39
sergej.z, да-да. правильно подмечено. А давайте попробуем так:
Код

$name = "";
$time = 0;
while (false!==($file=$dir->read()))
            {
                echo "<br>i = ".$i."<br>";
                if($file!="." && $file!="..")
                {
                    $time=filemtime("photo/".$_GET['show']."/".$file);
                    $name=$file;
                    echo "<br>Name: ".$name."<br>";
                    echo "<br>Time: ".$time."<br>";
                    $dir_folder[$i] = array("time" => $time, "name" => $name);
                    echo "<br>Var_dump 'dir_folder':<br>"; var_dump($dir_folder); echo "<br>";
                }
                $i++;
            }

Автор: Onis 12.2.2006, 14:48
sergej.z,
Урра!
Сделал как вы велели:
http://onis.jino-net.ru/?show=denis


i = 0

Var_dump 'f':
object(dir_folder)#3 (2) { ["time"]=> int(1130625299) ["name"]=> string(10) "denis2.jpg" }

Var_dump 'dir_folder':
array(1) { [0]=> object(dir_folder)#3 (2) { ["time"]=> int(1130625299) ["name"]=> string(10) "denis2.jpg" } }

i = 1

i = 2

Var_dump 'f':
object(dir_folder)#4 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" }

Var_dump 'dir_folder':
array(2) { [0]=> object(dir_folder)#3 (2) { ["time"]=> int(1130625299) ["name"]=> string(10) "denis2.jpg" } [2]=> object(dir_folder)#4 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } }

i = 3

Var dump: до sort
array(2) { [0]=> object(dir_folder)#3 (2) { ["time"]=> int(1130625299) ["name"]=> string(10) "denis2.jpg" } [2]=> object(dir_folder)#4 (2) { ["time"]=> int(1130625297) ["name"]=> string(10) "denis1.jpg" } }
Добавлено @ 14:52
smile smile s smile smile smile smile smile mile=72 smile


Всем респект smile !!!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)