Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: цикл
 
 автор: afms   (28.07.2007 в 15:03)   письмо автору
 
 

Здравствуйте!!!
Простите за такой глупый и простейший вопрос.

пока $переменная = 0 - отнять от текущей даты один день.
и так до тех пор пока $переменная не примет какое-то значение.

пишу:

<?
        
while ($переменная == 0)
        {
                
$date=date("d/m/Y"time() - 24*60*60);
                break; 
// вот здесь и проблема. Не знаю куда правильно записать break.
        
}
?>

Т.е. когда $переменная стала = 1, то break. А так получается, что отсчитывает дату только один раз и всё!!!
помогите, пожалуйста, вопрос елементарнейший :))))
спасибо!!!!!!!

   
 
 автор: SHAman   (28.07.2007 в 15:09)   письмо автору
 
   для: afms   (28.07.2007 в 15:03)
 

дык
while ($переменная == 0)
{
$date=date("d/m/Y", time() - 24*60*60);
if ($переменная == 1) break;
}

   
 
 автор: Trianon   (28.07.2007 в 15:20)   письмо автору
 
   для: afms   (28.07.2007 в 15:03)
 

под влиянием каких небесных сил $переменная изменит свое значение?

   
 
 автор: ddhvvn   (28.07.2007 в 15:28)   письмо автору
 
   для: Trianon   (28.07.2007 в 15:20)
 

afms, Трианон имеет ввиду, что$переменная должна изменяться внутри цикла, иначе Ваш скрипт зависнет! :)

   
 
 автор: afms   (28.07.2007 в 15:36)   письмо автору
 
   для: Trianon   (28.07.2007 в 15:20)
 

а так я уже пробовал: :(((

if ($переменная == 1) break; 


только я писал так:

if (!$переменная == 0) break; 

и так:

if ($переменная !== 0) break; 

и чё-то не работало!!! просто эта переменная может принимать любое произвольное числовое значение, а не только 0 или 1......

Для трианона:
> под влиянием каких небесных сил $переменная изменит свое значение?
ну не знаю......:)))
просто, по идее, эта переменная может принимать любое числовое значение............

   
 
 автор: ddhvvn   (28.07.2007 в 15:39)   письмо автору
 
   для: afms   (28.07.2007 в 15:36)
 

-

   
 
 автор: Trianon   (28.07.2007 в 15:42)   письмо автору
 
   для: afms   (28.07.2007 в 15:36)
 

> под влиянием каких небесных сил $переменная изменит свое значение?
ну не знаю......:)))

Тогда Вы не можете опираться на эту переменную. В том числе и применять её для управления выходом из цикла. Более того, вообще никак не може е применять её, раз Вы не знаете, что в ней сохранено в каждый момент времени.

   
 
 автор: Unkind   (28.07.2007 в 16:53)   письмо автору
 
   для: afms   (28.07.2007 в 15:03)
 

А так получается, что отсчитывает дату только один раз и всё!!!
А сколько надо? Один раз, два или пока дата не равна 2 января 2001 года?

пока $переменная = 0 - отнять от текущей даты один день.
То есть Вы хотите Вы вести несколько раз вчерашнюю дату?

и так до тех пор пока $переменная не примет какое-то значение.
С какой стати она примет другое значение?

   
 
 автор: testdriver   (28.07.2007 в 17:08)   письмо автору
 
   для: afms   (28.07.2007 в 15:03)
 

Во-первых зачем тут вообще break; если используеться while,
Во вторых у тебя судя по твоей логике вместо $переменная долежна как раз и быть $date
:) Т.е. что то вот такое :

<?
while ($date >= 0) // пока дата больше нуля
{
$date=date("d/m/Y", time() - 24*60*60); // отнимаем по суткам
}
?>

Но этот скрипт тоже не когда не остановиться, так как дата не когда к нулю не придет, следовательно, всё изночально не верно. Давай лучше объясни что ты в итоге хочешь этим циклом добиться?!
P.S.
У тебя дата все время и будет получаться одна и также потому что ты все время сутки отнимаешь от time(); и поэтому разницы не замечаешь, разница будет в секундах а не в сутках, помести значение ей возвращаемое в переменную от нее сутки и отнимай.

   
 
 автор: Unkind   (28.07.2007 в 17:21)   письмо автору
 
   для: testdriver   (28.07.2007 в 17:08)
 

testdriver, Вы считаете, что дата в формате "d/m/Y" когда-то будет < 0?

   
 
 автор: testdriver   (28.07.2007 в 17:31)   письмо автору
 
   для: Unkind   (28.07.2007 в 17:21)
 

Unkind нет конечно, собственно я выше это и написал:
>Но этот скрипт тоже не когда не остановиться, так как дата не когда к нулю не придет
Наверное вы не дочитали ...
P.S.
Я там просто пытался понять чего он хочет этим циклом :) а не написал готовое решение.

   
 
 автор: afms   (28.07.2007 в 18:06)   письмо автору
 
   для: testdriver   (28.07.2007 в 17:08)
 

вот.......
да я уже честно и сам не знаю, получится ли что-нибудь из этого:
ладно, рассказываю как всё должно быть:
вообще этот скрипт должен получать курс драгоценных металлов по ЦБ, но проблема в том, что в выходные и по праздникам курсы не обновляются, поэтому необходимо использовать последний курс:
т.е. допустим затра воскресенье и скрипт выведет 0, а с помощью цикла я хотел "прокрутить дату назад", и таким образом получить последний (в данном случае, пятничный) курс......
вот........просто не хочется записывать в значения курсов в базу...... вот хотел попробовать таким способом........
а цикл должен быть примерно таким:
пока $курс_золота == 0
{
    отнять от даты 1
     а если переменная $курс_золота приняла какое-то значение, отличное от 0, то останавливаем цикл........
}

т.е. завтра берется текущая дата - воскресенье, значение переменной - 0, "отматываем" от даты до субботы - опять 0, ещё раз - 541,1700. всё!!! :)))))))) ура-ура!!!!!!!!!
ЗЫ извините, что так длинннннно, зато подробно.........
что думаете??? каким должен быть цикл???
Заранее ОГРОМНОЕ спасибо!!! :))))))))))

   
 
 автор: Unkind   (28.07.2007 в 19:46)   письмо автору
 
   для: afms   (28.07.2007 в 18:06)
 

Не нужны тут никакие циклы.
<?php
if(date("w") == || date("w") == 6$ts strtotime("last Friday");
else 
$ts time();

$date date("d/m/Y"$ts);
?>

   
 
 автор: afms   (28.07.2007 в 20:15)   письмо автору
 
   для: Unkind   (28.07.2007 в 19:46)
 

спасибо!!!! :))))
>Не нужны тут никакие циклы.
а как же новогодние праздники 10 дней??? ;))))))

   
 
 автор: Unkind   (28.07.2007 в 21:56)   письмо автору
 
   для: afms   (28.07.2007 в 20:15)
 

Тем более. Еще больше лишних запросов. Вообще в таком случае лучше сохранять последний курс.
Если сегодня 0, то не надо сохранять этот 0, а выводить ранее сохраненный курс. Если не 0, то сохранять текущий курс и выводить.

   
 
 автор: afms   (28.07.2007 в 22:08)   письмо автору
 
   для: Unkind   (28.07.2007 в 21:56)
 

думаете так будет лучше???
просто думал обойтись без базы........ ну ладно, наверное, действительно придется сделать по вашей схеме..... спасибо!!!! :))))))

   
 
 автор: testdriver   (28.07.2007 в 22:22)   письмо автору
 
   для: afms   (28.07.2007 в 22:08)
 

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

   
 
 автор: afms   (28.07.2007 в 22:26)   письмо автору
 
   для: testdriver   (28.07.2007 в 22:22)
 

точно.........
вот только как это всё осуществить.......может есть небольшой примерчик......:))))))

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования