Как сделать так чтобы скрипт находил в базе строкую первое значение которой совподало

Фанат

oncle terrible
Команда форума
как это разные?
если разные, то что же ты тогда ищешь?
 

Fynjy

Guest
Автор оригинала: Фанат
как это разные?
если разные, то что же ты тогда ищешь? [/QUOT]
А вот так. Файл test.txt выглядит так
-----------------------------
08:30 "Значение 1"::
09:00 "Значение 2"::
09:25 "Значение 3"::
09:45 "Значение 4"::
09:50 "Значение 5"::
10:00 "Значение 6"::
10:30 "Значение 7"::
и т.д.
-----------------------------
$date=date("H:i"); определяет текущее время, к примеру 8:30.
$string=file_get_contents($file);читает файл.
$pos1 = strpos($string, "$date"); находит строку с равным значением $date.
$rest = substr($string, $pos1+6); читает всю строку с 6 символа.
$pos2 = strpos($rest, "::"); находит конец строки.
$left = substr($rest, 0, $pos2); читает строку с 6 символа до конца строки, и является результатом.
Но если $left равен "Значение 1", а $date "08:30", как они могут быть равны.
Так или я чего - нить не понимаю. И если можно, объясняйте пожалуйста с комментариями что и зачем (повторюсь я только учусь).

-~{}~ 09.07.04 06:32:

Ну так что, кто нибуть мне поможет...
 

Фанат

oncle terrible
Команда форума
Пардон. с точным совпадением яошибся.
с неточным так.
date=date("H:i");
$file="data/test.txt";
if(is_readable($file)) {
$massiv=file($file);

вместо строики получаем файл в массив, гед каждый элемент - строка из файла.
дальше, если время в файле идет по порядку, то перебираем в цикле этот массив, вырезаем из него время и сравниваем с заданным.
foreach($massiv as $stroka) {
$time=substr($stroka,0,5) ;
if ($time >= $date) break;
}
echo $stroka;

цикл остановится после того, как время в файле станет больше или равно твоей дате.
так тебя устроит?
 

Fynjy

Guest
Да конечно пойдет.
Огромное спасибо...

-~{}~ 12.07.04 07:00:

И сразу ворос, почему в меньшую сторону не работает.

-~{}~ 13.07.04 12:17:

Как сделать в перебор меньшую сторону
 

Fynjy

Guest
Для того чтобы скрит выводил значение равное "меньше" чем текущая дата, другими словами выдавал информацию за вчера. А в этом варианте олучается что выдает за завтра.
Так как?
 

Фанат

oncle terrible
Команда форума
пред foreach сделать Array_reverse и условие сменить с "больше либо равно" на "меньше либо равно"
 

Fynjy

Guest
Вот так:
Array_reverse($massiv);
foreach($massiv as $stroka)
{
$time=substr($stroka,0,14) ;
if ($time <= $date) break;
}

-~{}~ 13.07.04 12:49:

Понял:
$result = Array_reverse($massiv);
foreach($result as $stroka)
{
$time=substr($stroka,0,14) ;
if ($time <= $date) break;
}

-~{}~ 13.07.04 12:50:

Правельно или нет.
 
Сверху