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

Форум PHP

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

 

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

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

тема: Вывод двойной сложности
 
 автор: Nevi   (30.04.2007 в 19:08)   письмо автору
 
 

Здравствуйте!
Не могу победить следующую задачу.

есть txt файл mashina.txt в котором перечислены машины в алфавитом порядке по одной строке на каждую марку

Ауди. <Описание марки.........>
Альфа ромео. <Описание марки.........>
.
.
.
.
Харлей. <Описание марки.........>
Хорвет. <Описание марки.........>
Хюндай. <Описание марки.........>
Хонда. <Описание марки.........>
Черри. <Описание марки.........>
Шевроле. <Описание марки.........>
Ягуар. <Описание марки.........>

нужно при запросе конкретной буквы - выводить инфу только по этой буквы
например
test.php?model=Х выводить только Харлей. Хорвет . Хундай и Хонда

двойная сложность в том, что если на одну букву более N моделей , то нужно выводить постранично по N моделей.

например $N=2;
выводить на первой странице
Харлей и Хорвет
а на второй странице
Хундай и Хонда

нагромоздил огромный код с десятками проверок strpos после считывания $xfile = @file('mashina.txt'); но чуствую что это отстойное решение и есть элегантное решение в 3-4 строки я уверен в этом!!!
ПОМОГИТЕ пожалуйста, как решить двойную задачу элегантно....


PS : на самом деле задача тройной сложности, потому что в этом же скрипте подставляются различные txt файлы (mashina.txt samolet.txt итд ) - но я не стал уж тут спрашивать - иначе вообще никто не сможет решить =))))

   
 
 автор: Valick   (30.04.2007 в 19:25)   письмо автору
 
   для: Nevi   (30.04.2007 в 19:08)
 

иначе вообще никто не сможет решить =))))
Да я просто уверен в этом....

P.S. Хорвет, что за машина? Чья? Китай?

   
 
 автор: elenaki   (30.04.2007 в 20:09)   письмо автору
 
   для: Valick   (30.04.2007 в 19:25)
 

Хорвет - это хорватский Корвет :)

   
 
 автор: Киналь   (30.04.2007 в 19:31)   письмо автору
 
   для: Nevi   (30.04.2007 в 19:08)
 

Ну, три строки может и не три. но смысл в том. чтобы записать содержимое файла в массив с помощью file(), и с этим массивом уже работать. А вообще проще записать это всё в БД, тогда строчка будет вообще одна=)))

<?php
mysql_query
("SELECT * FROM machines WHERE SUBSTR(0, 1, name) = N"); // кажись, так
?>

   
 
 автор: Саня   (30.04.2007 в 20:31)   письмо автору
 
   для: Nevi   (30.04.2007 в 19:08)
 

В три строчки получится, если использовать какую-нибудь базу данных.
<?php
$n 
2// количество моделей на страницу

$mashina file("mashina.txt");
for ( 
$i 0$i count($mashina); $i++ )
  
$arr[$mashina[$i][0]][] = trim($mashina[$i]);

foreach( 
$arr as $key => $value ) {
  
sort($value);
  
$arr[$key] = $value;
}

if ( !empty(
$_GET['model']) ) {
  
$i = (!empty($_GET['page'])) ? $_GET['page'] * $n 0;
  print 
"<a href='index.php?model=".$_GET['model']."&page=".($i 1)."'>далее</a><br/>";

  
$j $i $n;
  for ( ; 
$i $j$i++ ) {
    list(
$mod$desc) = explode(". "$arr[$_GET['model']][$i], 2);
    print 
$mod."; ".$desc."<br/>";
  }
}

   
 
 автор: bronenos   (30.04.2007 в 20:35)   письмо автору
 
   для: Nevi   (30.04.2007 в 19:08)
 

<?php
$file 
file ('mashina.txt');
$model $_GET['model'];
if (
strlen($model) > 1$model $model[0]; // на всякий случай
$cars = array();

foreach (
$file as $f)
{
  list (
$m$d) = explode ('. 'trim($f));
  if (
$m[0] != $model) continue;
  
$cars[$m] = $d;
}

print 
'<pre>';
print_r ($cars);
print 
'</pre>';
?>


насчет постраничного - на форуме много таких тем я видел

   
 
 автор: Nevi   (01.05.2007 в 02:37)   письмо автору
 
   для: bronenos   (30.04.2007 в 20:35)
 

не .....
спасибо конечно всем, но видимо вы не поняли задачу.

по точке ориентироваться нельзя , так как в описании много предложение и все они заканчиваются на точку !!!

Тут прокатит ТОЛЬКО проверка на первую букву в начале строки

решения нет

   
 
 автор: mr Bin   (01.05.2007 в 03:33)   письмо автору
 
   для: Nevi   (01.05.2007 в 02:37)
 

Решение одно - использовать базу mysql. Быстро, удобно, безпроблемно.
Пора забывать про текстовые файлы..

   
 
 автор: Nemesis   (01.05.2007 в 19:03)   письмо автору
 
   для: Nevi   (01.05.2007 в 02:37)
 

Можно сделать просто фалы по буквам, то-есть Н.тхт, А.тхт тогда всё будет намного проще и удобнее в дальнейшем.

   
Rambler's Top100
вверх

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