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

Fynjy

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

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

Гюльчатай

Guest
обыкновенно. средствами mysql, так же как ищут и любое другое значение, например

SELECT * FROM table WHERE Date=now()

если нужно только время или только дату, см. мануал Фукции даты и времени.
 

Fynjy

Guest
а если необходимо чтобы база была в *.txt скажем, но не в sql, тогда как
 

Yaguan

пилот
Для начала рассказать, в каком формате хранятся данные.
 

Fynjy

Guest
1::::2::::3::::

-~{}~ 17.06.04 09:30:

в обычном текстовом виде, разделяются ::::
 

lucas

Guest
Yaguan -- неправильно.

Fynjy -- [m]file_get_contents[/m], [m]strpos[/m], [m]substr[/m]
 

Fynjy

Guest
Нечего не пойму. Мне надо открыть файл, извлечь из него строку, первое значение которого равно текущей дате или времяни. Может подскажите сам код подобного примера.
 

lucas

Guest
Fynjy, смотри:

Мне надо открыть файл
Читаешь весь в строку -- [m]file_get_contents[/m].

извлечь из него строку, первое значение которого равно текущей дате или времяни
Такая строка -- это перевод строки, затем текущая дата в формате, наример, mktime(0,0,0,date('m'),date('d'),date('Y')), и, наконец, разделитель ":::".
Чтобы узнать есть ли в прочитанном файле эта строка -- [m]strpos[/m].
Чтобы узнать конец строки -- [m]strpos[/m] с третьям параметром.
Чтобы извлечь строку -- [m]substr[/m].

Теперь ты сам можешь написать код.
Что непонятно -- спрашивай.
 

Fynjy

Guest
немного получается, открываю, читаю, нахожу, но выводит всю строку, а надо только до конца найденой.
 

BigHarry

Guest
Имхо - надо не через через file_get_contents, а через file - получится массив строк - файл-то у него текстовый, строки наверняка разделяются как обычно - через CR(+LF), вот и получится массив - ну а в нем уже искать перебором или есчо какой функцией...
 

lucas

Guest
BigHarry

в нем уже искать перебором
От этого тормозного варианта и уходим.
Просьба таких советов больше не давать.


Fynjy

немного получается, открываю, читаю, нахожу
Отлично. :)

но выводит всю строку, а надо только до конца найденой.
Смотри:
1. Нашли начало нужной строки (перевод строки + дата + :::) -- strpos вернула позицию начала.
2. Теперь ищем конец строки -- строка кончатся переводом строки. Поэтому используем strpos с третьим параметром, равным позиции начала строки, т. к. конец строки никак не может быть раньше ее начала.
3. Нашли длину строки -- это позиция конца минус позиция начала. Воспользовались substr для извлечения.

Попробуй еще раз и покажи код, который получился.
 

Fynjy

Guest
Вот получившийся код

lucas
Попробуй еще раз и покажи код, который получился.
Вот получившийся код:
<?php
$date=date("H:i");
if(@file_get_contents("data/test.txt"))
{
$string=file_get_contents("data/test.txt");
$pos1 = strpos($string, "$date");
$rest = substr($string, $pos1+6);
$pos2 = strpos($rest, "::");
$left = substr($rest, 0, $pos2);
echo $left;
}
else{print"no";}
?>

Но возникает проблема, если нет равного значения $date, в файле test.txt, скрипт выводит первый найденый результат.
Как сделать так чтобы если нет значение равного $date, скрипт выдавал наиболее близкое значение (в большую или меньшую сторону) от $date

-~{}~ 07.07.04 06:32:

Как сделать так чтобы если нет значение равного $date, скрипт выдавал наиболее близкое значение (в большую или меньшую сторону) от $date
 

Фанат

oncle terrible
Команда форума
Кошмар!
начало скрипта должно выглядеть ТАК:
PHP:
$date=date("H:i");
$file="data/test.txt";
if(is_readable($file)) {
$string=file_get_contents($file);
и ЗАБУДЬ про оператор @

к твоей проблеме.
Вообще-то, твой код неправильный в любом случае - есть в файле нужные данные, или нет.
Ты, как бы, ЗАБЫЛ сравнить полученный $left с $datе
она у тебя просто так, для бутафории висит?

Как сделать так чтобы если нет значение равного $date, скрипт выдавал наиболее близкое значение (в большую или меньшую сторону)
хо-хо!
какие у нас уже запросы пошли!
Боюсь, тебе этого не осилить.
Толькео просить, чтобя за тебя кто-то код написал.
Ты бы хотя бы хоть с точным совпадением сделал бы, а?
 

Fynjy

Guest
Фанат

Ладно, ладно...
Я только учусь. А при учебе ошибки неизбежны.
Что надо сделать и как чтобы скрипт заработал.
И пусть он выдает значение "если нет равного значения" только в одну из сторон.
 

Фанат

oncle terrible
Команда форума
так я ж написал?
ты вообще, читал мой ответ?
Я могу и повторить - мне не жалко:
Ты, как бы, ЗАБЫЛ сравнить полученный $left с $datе
она у тебя просто так, для бутафории висит?
 

Фанат

oncle terrible
Команда форума
охохонюшки хохо...

для сравнения существуют операторы сравнения.
их некоторые в школе проходют.
это знаки больше, меньше, равно.

выражение ($a==$b) вернет 1, если $a равно $b
использовать результат этого сравнения можно с помощью оператора if

if ($a==$b) echo чего-то

дальше сам скумекаешь, или тебе даже здесь за тебя надо готовый код писать?
 

Fynjy

Guest
Как $left может быть равно $datе, если это совершенно разные значения.
или надо так

if($datе==$left)
{}
else{echo чего-то}
 
Сверху