Чтение текстовой базы
Добавлено: 18 июн 2004, 09:08
Здравствуйте !
есть маленький вопросик/задача
-Схема такая
скрипт поиска) есть форма с двумя полями "Country" и "City" ,
пользователь заполняет эти поля нажимает submit, всё это передётся в скрипт (search.php),
скрипт открывает файл базы(base.txt) и ищет внём все записи с совпадшими значениями "Country" и "City",
и выводит рёзультат на несколько страниц к примеру по 5 результатов на страницу, также должны присутствовать
ссылки типа "next-previous".
-Что есть: есть файл базы "base.txt" формат записей такой :
userid1;number1;country1;city1
userid2;number2;country2;city2
...
userid15;number15;country15;city15
-Проблема: когда скрипт начинает искать он перебирает каждую строку и сравнивает её c передонным значением из
поля "Country" и "City"
тоесть
$h= fopen("base.txt","r");
$data = fgetcsv($h,2000,";");
if ($data[2] == $country and $data[3] == $city)
{
echo "userid:".$data[0];
echo "number:".$data[1];
}
и так по 5 результата на страницу!
примерный скрипт :
//*************cut********
$h = fopen("base.txt","r");
if( isset($_GET['ln']) ) $line = intval($_GET['ln']); // $line - номер линии с которой надо читать
else $line = 0;
for($c=0; $c < $line; $c++)
fgetcsv($h,2000,";");
$number=5; //** Пропускаем 5
for(; $c < $line+$number; $c++)
{
$data = fgetcsv($h,2000,";");
if ($data[2] == $country and $data[3] == $city)
{
echo "userid:".$data[0];
echo "number:".$data[1];
}
}
fclose($h);
$bc=$line-$number; //** Для ссылки previous
echo "
} // находится параметры поиска (&city=magadan&country=russia)
//*************cut********
проблема в том что он читает 5 строк и если он не находит там точто надо он выводит пустую страничку
и ты должен нажимать next дотех пор пока не дойдёшь до нужной строки с нужним результатом.
как сделать чтобы он читал пока не найдёт .
дополнительно : как лучше сделать чтобы он читал файл с конца а не с начала ?
пожулуй это и есть весь маленикий вопрос
Буду очень рад каким либо вариациям рабочих примеров .
есть маленький вопросик/задача

-Схема такая

пользователь заполняет эти поля нажимает submit, всё это передётся в скрипт (search.php),
скрипт открывает файл базы(base.txt) и ищет внём все записи с совпадшими значениями "Country" и "City",
и выводит рёзультат на несколько страниц к примеру по 5 результатов на страницу, также должны присутствовать
ссылки типа "next-previous".
-Что есть: есть файл базы "base.txt" формат записей такой :
userid1;number1;country1;city1
userid2;number2;country2;city2
...
userid15;number15;country15;city15
-Проблема: когда скрипт начинает искать он перебирает каждую строку и сравнивает её c передонным значением из
поля "Country" и "City"
тоесть
$h= fopen("base.txt","r");
$data = fgetcsv($h,2000,";");
if ($data[2] == $country and $data[3] == $city)
{
echo "userid:".$data[0];
echo "number:".$data[1];
}
и так по 5 результата на страницу!
примерный скрипт :
//*************cut********
$h = fopen("base.txt","r");
if( isset($_GET['ln']) ) $line = intval($_GET['ln']); // $line - номер линии с которой надо читать
else $line = 0;
for($c=0; $c < $line; $c++)
fgetcsv($h,2000,";");
$number=5; //** Пропускаем 5
for(; $c < $line+$number; $c++)
{
$data = fgetcsv($h,2000,";");
if ($data[2] == $country and $data[3] == $city)
{
echo "userid:".$data[0];
echo "number:".$data[1];
}
}
fclose($h);
$bc=$line-$number; //** Для ссылки previous
echo "
";
echo "results pages: [$res] [$stranica]"; //должно показывать количество найденых результатов и текущую страницу.
if ($line-$number>=0)
{
echo "<a href=testz.php?ln=$bc>previous </a>";
}
if ($res >=$line+1)
{ //$c - это номер линии с которой надо читать дальше.
echo "<a href=testz.php?ln=$c>next </a>
"; // также если мы будем переходить на следующую страницу тут могут echo "results pages: [$res] [$stranica]"; //должно показывать количество найденых результатов и текущую страницу.
if ($line-$number>=0)
{
echo "<a href=testz.php?ln=$bc>previous </a>";
}
if ($res >=$line+1)
{ //$c - это номер линии с которой надо читать дальше.
echo "<a href=testz.php?ln=$c>next </a>
} // находится параметры поиска (&city=magadan&country=russia)
//*************cut********
проблема в том что он читает 5 строк и если он не находит там точто надо он выводит пустую страничку
и ты должен нажимать next дотех пор пока не дойдёшь до нужной строки с нужним результатом.
как сделать чтобы он читал пока не найдёт .
дополнительно : как лучше сделать чтобы он читал файл с конца а не с начала ?
пожулуй это и есть весь маленикий вопрос

Буду очень рад каким либо вариациям рабочих примеров .