<?
session_start();
$dir=opendir("data/$nomer")or die ("error");
chdir("data/$nomer");
$i=0;
$sms=0;
while ($d=readdir($dir))
{
if (is_dir($d)) {$papka[$i]=$d;$i++;}
}
closedir($dir);
$j=2;
while ($j<=$i);
{
if (file_exists("data/$nomer/$papka[$j]/inbox.ktk")) {echo "файл существует<br>";$sms++;}
$j++;
}
echo "у вас coобщений ".$sms."<br>$nomer<br>";
?>
Спустя 16 минут, 35 секунд (19.03.2009 - 09:00) Sylex написал(а):
код надо красивей оформлять, массивы заранее определять:
PHP |
<? |
но вообще мутно, конечно....
если массив используете внутри кавычек - лучше делать конкатенацию, или брать в фигурные скобки {}
Спустя 58 секунд (19.03.2009 - 09:01) kirik написал(а):
Пиши аккуратнее, чтобы не путаться.
PHP |
session_start(); |
Ошибка тут $papka[$j]. Если в запрашиваешь индекс массива переменной, то нужно пользоваться конкатенацией. Заменил на ".$papka[$j].".
Спустя 1 минута, 58 секунд (19.03.2009 - 09:03) kirik написал(а):
Нада какой-нибудь плагин к форуму, чтобы отвечающий нажимал кнопку, и все видели что кто-то уже на этот топик отвечает.
Спустя 1 минута, 17 секунд (19.03.2009 - 09:04) Sylex написал(а):
kirik
жесть
жесть
Спустя 21 минута, 56 секунд (19.03.2009 - 09:26) maxsim1982i написал(а):
Все равно не работает
задача скрипта проста, не обходимо в паке data проверить все папки на существования файла inbox.ktk и вывести количество найденых файлов
задача скрипта проста, не обходимо в паке data проверить все папки на существования файла inbox.ktk и вывести количество найденых файлов
Спустя 5 часов, 4 секунды (19.03.2009 - 14:26) maxsim1982i написал(а):
Все больше нет шарющих? Кто подскажет как сделать?
Спустя 1 час, 54 минуты, 18 секунд (19.03.2009 - 16:20) waldicom написал(а):
читать тут и комменты там же
Спустя 11 минут, 42 секунды (19.03.2009 - 16:32) Viking написал(а):
Цитата |
Все больше нет шарющих? Кто подскажет как сделать? |
а что толку подсказывать, если у тебя там "Все равно не работает" и неизвестно что именно неработает, может у тебя пхп неправильно настроено
сообщения об ошибках есть?
Спустя 18 минут, 48 секунд (19.03.2009 - 16:51) sergeiss написал(а):
Цитата (maxsim1982i @ 19.03.2009 - 14:26) |
Все больше нет шарющих? Кто подскажет как сделать? |
Ну, я "шАрющий", я подскажу Алгоритм такой.
1. Надо сделать простое действие - подумать самому.
2. Сделать контрольные распечатки внутри цикла, посмотреть, что там происходит.
3. Опять подумать.
4. Если не помогает, прийти опять сюда, но уже с кодом, и спросить: почему вот этот вот измененный код не работает.
5. А учитывая, что тут, как и на любом другом форуме, отвечать никто никому не обязан, то можно бы и повежливее вопросы такие задавать. Не типа того, что я процитировал, а намного вежливее.
6. Приведенный пример можно укоротить существенно, проводя проверку сразу в одном цикле: если найденный элемент является каталогом, то не записывать его имя в массив, а сразу же тут же анализировать наличие файла.
7. И как правильно заметил Viking, если есть ошибки, то покажи, что именно пишется.
Спустя 23 часа, 17 минут, 36 секунд (20.03.2009 - 16:09) maxsim1982i написал(а):
вот все сделал в одном цикле но теперь условие с функцией file_exists всегда верно даже если файла не существует. в чем может быть дело подскажите
<?
session_start();
$dir = opendir("data/$nomer") or die ("error");
chdir("data/$nomer");
$i = 0;
$sms = 0;
while($d = readdir($dir))
{
if(is_dir($d))
{
if (file_exists("data/$nomer/$d/inbox.ktk")) ;{ echo "файл существует ".$d."<br>";$sms++;}
}
}
echo "у вас coобщений ".$sms."<br>$nomer<br>";
?>
<?
session_start();
$dir = opendir("data/$nomer") or die ("error");
chdir("data/$nomer");
$i = 0;
$sms = 0;
while($d = readdir($dir))
{
if(is_dir($d))
{
if (file_exists("data/$nomer/$d/inbox.ktk")) ;{ echo "файл существует ".$d."<br>";$sms++;}
}
}
echo "у вас coобщений ".$sms."<br>$nomer<br>";
?>
Спустя 16 минут, 45 секунд (20.03.2009 - 16:25) Viking написал(а):
Цитата |
if (file_exists("data/$nomer/$d/inbox.ktk")) ;{ echo "файл существует ".$d."<br>";$sms++;} |
Спустя 37 минут, 33 секунды (20.03.2009 - 17:03) maxsim1982i написал(а):
Точно в этом тоже была ошибка её исправил теперь функция не работает даже если файл сущесвует она все равно его не видит
Спустя 20 минут, 34 секунды (20.03.2009 - 17:23) Viking написал(а):
дык chdir("data/$nomer"); убери
Спустя 8 минут, 57 секунд (20.03.2009 - 17:32) maxsim1982i написал(а):
убрал, но изменений ни каких.
Спустя 5 минут, 13 секунд (20.03.2009 - 17:38) Viking написал(а):
а $nomer у тебя откуда берется?
Спустя 7 минут, 24 секунды (20.03.2009 - 17:45) maxsim1982i написал(а):
это сесионная переменная
Спустя 16 минут, 49 секунд (20.03.2009 - 18:02) Viking написал(а):
т.е. у тебя register_globals = On ??? фуу....
PHP |
<? |
такой код рабочий 100%, хотя за счет того, что readdir() считывает "." в качестве директории, количество сообщений получается на единицу больше
есть еще вариант что у тебя доступ неправильно настроен
Спустя 10 минут, 23 секунды (20.03.2009 - 18:12) maxsim1982i написал(а):
register_globals включена $nomer получает значения все вроде правильно, но что-то не работает. Причем если просто написать: без цикла и открытия каталога функция file_exists работает правильно
Спустя 35 минут, 41 секунда (20.03.2009 - 18:48) maxsim1982i написал(а):
все всем спасибо кто не остался равнодушным к проблеме. решение найдено
<?
session_start();
$dir = opendir("data/$nomer") or die ("error");
chdir("data/$nomer");
$i = 0;
$sms = 0;
while($d = readdir($dir))
{
if(is_dir($d))
{
$d=trim($d);
if (file_exists("$d/inbox.ktk")) { echo "файл существует ".$d."<br>";$sms++;}
} echo $d."<br>";
}
echo "у вас coобщений ".$sms."<br>$nomer<br>".$name;
?>
<?
session_start();
$dir = opendir("data/$nomer") or die ("error");
chdir("data/$nomer");
$i = 0;
$sms = 0;
while($d = readdir($dir))
{
if(is_dir($d))
{
$d=trim($d);
if (file_exists("$d/inbox.ktk")) { echo "файл существует ".$d."<br>";$sms++;}
} echo $d."<br>";
}
echo "у вас coобщений ".$sms."<br>$nomer<br>".$name;
?>
Спустя 1 минута, 41 секунда (20.03.2009 - 18:50) sergeiss написал(а):
Цитата (Viking @ 20.03.2009 - 18:02) |
if (file_exists("data/$nomer/$d/inbox.ktk")) ;{ echo "файл существует ".$d."<br>";$sms++;} |
Я тут сидел над этим кодом, медитировал, медитировал... Викингу - два с минусом
Вопрос: что делает точка с запятой перед открывающей фигурной скобкой в процитированном мной коде???
PS. Пока писал, автор темы уже не столько нашел проблему, сколько (по-моему) случайно удалил проблемный знак во время преобразования текста скрипта.
Спустя 1 час, 42 минуты, 11 секунд (20.03.2009 - 20:32) Viking написал(а):
sergeiss
видимо плохо медитируешь я как раз имел ввиду, что ее там не должно быть, вроде вполен очевидно, или я тебя не так понял?
видимо плохо медитируешь я как раз имел ввиду, что ее там не должно быть, вроде вполен очевидно, или я тебя не так понял?
Спустя 6 минут, 33 секунды (20.03.2009 - 20:38) sergeiss написал(а):
Я не хочу "наезжать", а так, чисто приколу ради Но этот код снабжен у тебя комментарием "такой код рабочий на 100%" - это в сообщении в 18:02, часть которого у меня была процитирована.
...На всякий случай потребую с тебя пЫво
PS. Эй, нечестно редактировать!!!
Всё, я обиделся и пошел дегустировать коньяк. Мелкими дозами.
...На всякий случай потребую с тебя пЫво
PS. Эй, нечестно редактировать!!!
Всё, я обиделся и пошел дегустировать коньяк. Мелкими дозами.
Спустя 4 минуты, 3 секунды (20.03.2009 - 20:42) Viking написал(а):
Цитата |
Я не хочу "наезжать", а так, чисто приколу радиНо этот код снабжен у тебя комментарием "такой код рабочий на 100%"- это в сообщении в 18:02, часть которого у меня была процитирована. ...На всякий случай потребую с тебя пЫво |
да, действительно, случайно туда попала, исправил, теперь код рабочий.
молодец, хорошо медитируешь, с меня пиво
Спустя 3 часа, 45 минут, 33 секунды (21.03.2009 - 00:28) Viking написал(а):
Цитата |
PS. Эй, нечестно редактировать!!! Всё, я обиделся и пошел дегустировать коньяк. Мелкими дозами. |
опечатка есть опечатка, я прямо честно и сказал, что исправил,(а ты как-то втихую отредактировал, я чисто случайно заметил), а вообще если бы прочитал предыдущие посты, то не надо было бы вообще медитировать, сразу было бы понятно что это просто опечатка, но раз пива не хочешь - ок, я не настаиваю, пей коньяк
Спустя 6 часов, 30 минут, 31 секунда (21.03.2009 - 06:58) modobaks написал(а):
while($d = readdir($dir))
{
if(is_dir($d))
{
$sms = count( glob( $d . "inbox.ktk" ) );
}
}
это точно должно помочь
{
if(is_dir($d))
{
$sms = count( glob( $d . "inbox.ktk" ) );
}
}
это точно должно помочь
Спустя 16 дней, 3 часа, 6 минут, 7 секунд (7.04.2009 - 09:04) glock18 написал(а):
Еще интересно?
Вообще исходя из того что я помню еще, я бы посоветовал следующее:
1. file_exists("$d/inbox.ktk") - убрать data/$nomer
или
2. file_exists("с://.../data/$nomer$d/inbox.ktk") - указать полный путь
или
3. если и здесь работать не будет, то может какая-то байда с правами доступа на файл (я где-то читал, что в этом случае file_exists возвращает false).
В этом случае можно попробовать использовать заменители типа (is_executable и т.п.)
ЗЫ: так же еще есть несколько вариантов решения вовсе без file_exists.
Вообще исходя из того что я помню еще, я бы посоветовал следующее:
1. file_exists("$d/inbox.ktk") - убрать data/$nomer
или
2. file_exists("с://.../data/$nomer$d/inbox.ktk") - указать полный путь
или
3. если и здесь работать не будет, то может какая-то байда с правами доступа на файл (я где-то читал, что в этом случае file_exists возвращает false).
В этом случае можно попробовать использовать заменители типа (is_executable и т.п.)
ЗЫ: так же еще есть несколько вариантов решения вовсе без file_exists.
Спустя 3 месяца, 23 дня, 4 часа, 49 минут, 35 секунд (30.07.2009 - 13:54) Алекс написал(а):
<?php
session_start();
$dir = opendir("data/".$nomer) or die ("error");
chdir("data/".$nomer);
$i = "0";
$sms = "0";
while($d = readdir($dir))
{
if(is_dir($d))
{
if (file_exists("data/".$nomer."/".$d."/inbox.ktk"))
{
echo "файл существует ".$d."<br>";
$sms++;
}
}
}
echo "у вас coобщений ".$sms."<br>".$nomer."<br>";
?>
А вообще нафига переменная i, не понятно... ты ж её нигде здесь не используешь?
session_start();
$dir = opendir("data/".$nomer) or die ("error");
chdir("data/".$nomer);
$i = "0";
$sms = "0";
while($d = readdir($dir))
{
if(is_dir($d))
{
if (file_exists("data/".$nomer."/".$d."/inbox.ktk"))
{
echo "файл существует ".$d."<br>";
$sms++;
}
}
}
echo "у вас coобщений ".$sms."<br>".$nomer."<br>";
?>
А вообще нафига переменная i, не понятно... ты ж её нигде здесь не используешь?
_____________