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

Форум PHP

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

 

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

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

тема: Страницы
 
 автор: midav   (19.01.2006 в 20:36)   письмо автору
 
 

Столкнулся с такой проблемой! у меня есть файл, в нем такие строчки

muzik|12.01.06|
muzik|11.01.06|
devuwki|14.01.06|
muzik|11.01.06|
devuwki|14.01.06|
devuwki|14.01.06|
muzik|11.01.06|


Ну вот я хочу сделать разбиение на страницы по 10 на каждую! Только мне не нужны все строчки, а только те где девушки! Надо подчитать их количество и уже по ним сделать разбиение! как это сделать? Помогите плиз, для сайта надо http://midav.ilva.lv/?boyanketi

   
 
 автор: cheops   (20.01.2006 в 01:06)   письмо автору
 
   для: midav   (19.01.2006 в 20:36)
 

Для начала следует получить массив в котором будут только девушки (хм... половая дискриминация). Что-то похожее можно посмотреть в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=11708: читаем содержимое файла при помощи функции file() в массив $arr, каждый элемент которого соответствует отдельной строке. Затем строку разбиваем при помощи функции explode() и формируем массив
<?php 
  $arr 
file("guest.txt"); 
  
$i 0;
  foreach(
$arr as $line
  { 
    list(
$sex$date) = explode("|"$line); 
    if(
$sex == 'devuwki')
    {
      
$temp[$i]['devuwki'] = $sex;
      
$temp[$i]['date'] = $date;
      
$i++
    }
  }
?>

Посмотреть пример постраничной навигации, в основе которой лежит массив можно в примере по ссылке http://www.softtime.ru/scripts/pager.php

   
 
 автор: midav   (20.01.2006 в 01:32)   письмо автору
 
   для: cheops   (20.01.2006 в 01:06)
 

ну как подчитать общее количество девушек я знал, а вот как именно сделать разбиение на страницы вот тут у меня трудности

   
 
 автор: Panker   (20.01.2006 в 01:35)   письмо автору
 
   для: midav   (20.01.2006 в 01:32)
 

простите за флуд! midav ты случайно на wr.kovostok не сидиш ??

   
 
 автор: midav   (20.01.2006 в 01:37)   письмо автору
 
   для: Panker   (20.01.2006 в 01:35)
 

да сижу, но там бывает фиг дождешься

   
 
 автор: cheops   (20.01.2006 в 14:38)   письмо автору
 
   для: midav   (20.01.2006 в 01:32)
 

Пример в http://www.softtime.ru/scripts/pager.php не понравился?

   
 
 автор: Евгений Петров   (20.01.2006 в 02:07)   письмо автору
 
   для: cheops   (20.01.2006 в 01:06)
 

Опять же возвращаясь к проблеме больших файлов предлагаю такой вариант. Написал на скорую руку, но вроде работает нормально и главное быстро.
<?
  
function GetCount($filename)
  {
    
$f fopen($filename,"r");
    
$count 0;
    while(!
feof($f))
    {
      
$buf fgets($f);
      if(
substr($buf,0,7) == "devuwki")
        
$count++;
    }
    
fclose($f);
    return 
$count;
  }

  function 
GetRecords($filename,$from,$num)
  {
    
$f fopen($filename,"r");
    
$i $j 0;
    unset(
$retar);
    while(!
feof($f) && $i != $num)
    {
      
$buf fgets($f);
      if(
substr($buf,0,7) == "devuwki")
      {
        if(
$j >= $from)
        {
          
$retar[] = trim($buf);
          
$i++;
        }
        
$j++;
      }
    }
    return 
$retar;
  }

  
$num 4;
  
$filename "file.txt";

  if(
$ar GetRecords($filename,$page,$num))
  foreach(
$ar as $value)
  {
    echo 
$value."<br>";
  }

  
$count GetCount($filename);
  for(
$i=0;$i<$count;$i+=$num)
    echo 
"<a href=file.php?page=$i>$i</a>&nbsp;&nbsp;";
?>


Функция GetRecords возвращает из файла $filename $num строк начиная с $from.
Функция GetCount считает кол-во девушек

   
 
 автор: Panker   (20.01.2006 в 02:48)   письмо автору
 
   для: Евгений Петров   (20.01.2006 в 02:07)
 

я тоже там сижу )) но там не подскаживаю! тут подсказывают! кстати ты случайно не с того форума об этом узнал а?? а то я там его так рекламирвоал =)))))))))

   
 
 автор: midav   (20.01.2006 в 12:41)   письмо автору
 
   для: Евгений Петров   (20.01.2006 в 02:07)
 

Евгений Петров первый раз вижу такой вариант решения моем проблемы! Надо будет протестить что и как! Вот токо опять же не работал никогда с функцией foreach(), всегда использовал что то другое
Panker да именно там узнал об этом месте :)

   
 
 автор: midav   (20.01.2006 в 13:21)   письмо автору
 
   для: midav   (20.01.2006 в 12:41)
 

Нифига не получается! Если честно та файл у меня выглядит так


||||||||||||||||||||||||||
Vadim|Janusev|midav|pass|pass|midav20@mail.ru|1|01|14|1984|Учусь в  

LLU|24.10.2005|20:33:55|ip|moja.jpg|Jelgava|1|2|admin|
Pavel|Mozalev|Quanty|pass|pass|julijs-cesars@inbox.lv|1|09|07|1984|Salo Sila Sport Mogila 

!!!=]]|12.01.2006|22:09:44|ip|account.gif|Jelgava|1|2||
Женюта|Рогова|Женюта|pass|pass|ariella-evro@mail.ru|2|21|04|1987|даже не знаю,судите 

сами|13.01.2006|21:40:12|||Зеленоград|1|1||
Julja|K|valencia|pass|pass|jullly@inbox.lv|2|03|07|1984|http://www.sexlib.ru 

/goroskop/main/?rak|15.01.2006|20:38:53|ip|Picture_029_edited.jpg|Jelgava|1|1|moder|
Inga|zverjok|Inga|pass|pass|inga182@inbox.lv|2|14|06|1985|vrednaja malenjkaja 

devo4ka|14.01.2006|21:32:27|||Jelgava|2|1||


После емайла у меня есть 1 и 2! Если цифра 2 то это девушки! Ну вот по ним и надо мне!

   
 
 автор: cheops   (20.01.2006 в 14:40)   письмо автору
 
   для: midav   (20.01.2006 в 13:21)
 

Согласитесь, что это несколько отличается от :)))
muzik|12.01.06| 
muzik|11.01.06| 
devuwki|14.01.06| 
muzik|11.01.06| 
devuwki|14.01.06| 
devuwki|14.01.06| 
muzik|11.01.06|

Прикрепите файл (или его чать) к сообщению, чтобы форум не нарушал его естественное форматирование

   
 
 автор: Panker   (20.01.2006 в 15:42)   письмо автору
 
   для: cheops   (20.01.2006 в 14:40)
 

простите за флуд )))
Хи ))) Мидав, а именно ты говори или вр что форум как форум и нечего тут делать =)) я уже привел 1 чела и помог 4рём людям )) я герой =))когданибуть я покарю этот форум =)))))))

   
 
 автор: midav   (20.01.2006 в 22:29)   письмо автору
731 байт
 
   для: cheops   (20.01.2006 в 14:40)
 

Ну вот такой файл! То что после емайла 1 или 2 так это если 1 - мужщина, если 2 - девушки! Ну вот по цифре 2 мне и надо подчитывать и потом разбить на страницы

   
 
 автор: Евгений Петров   (20.01.2006 в 23:32)   письмо автору
 
   для: midav   (20.01.2006 в 22:29)
 

<?
  
function GetCount($filename)
  {
    
$f fopen($filename,"r");
    
$count 0;
    while(!
feof($f))
    {
      
$buf fgets($f);
      
$buf explode("|",$buf);
      if(
$buf[6] == "2")
        
$count++;
    }
    
fclose($f);
    return 
$count;
  }

  function 
GetRecords($filename,$from,$num)
  {
    
$f fopen($filename,"r");
    
$i $j 0;
    unset(
$retar);
    while(!
feof($f) && $i != $num)
    {
      
$buf fgets($f);
      
$buf explode("|",$buf);
      if(
$buf[6] == "2")
      {
        if(
$j >= $from)
        {
          
$retar[] = trim($buf[0]);
          
$i++;
        }
        
$j++;
      }
    }
    return 
$retar;
  }

  
$num 4;
  
$filename "file.txt";

  if(
$ar GetRecords($filename,$page,$num))
  foreach(
$ar as $value)
  {
    echo 
$value."<br>";
  }

  
$count GetCount($filename);
  for(
$i=0;$i<$count;$i+=$num)
    echo 
"<a href=file.php?page=$i>$i</a>&nbsp;&nbsp;";
?>

   
 
 автор: midav   (21.01.2006 в 00:49)   письмо автору
 
   для: Евгений Петров   (20.01.2006 в 23:32)
 

так ничего но он мне выводит первые 4 , а потом при переходе дальше остаются те самые имена http://midav.ilva.lv/girlfotos.php

   
 
 автор: Евгений Петров   (21.01.2006 в 00:56)   письмо автору
 
   для: midav   (21.01.2006 в 00:49)
 

Ну потому что если вы 4 раза продублировали тот файл, то ничего удивительного. У вас там 4 девушки, на каждой странице по 4 девушке, вот и получается что они везде одинаковые вы поменяйте $num = 4 на $num = 5 и вам все станет понятно

   
 
 автор: midav   (21.01.2006 в 01:00)   письмо автору
 
   для: Евгений Петров   (21.01.2006 в 00:56)
 

дело втом что в файле у меня уже 13 девушек, я вам не полный файл давал для скачки! А выводяться только первые 4

   
 
 автор: Евгений Петров   (21.01.2006 в 01:18)   письмо автору
 
   для: midav   (21.01.2006 в 01:00)
 

Дайте полный

   
 
 автор: midav   (21.01.2006 в 01:34)   письмо автору
 
   для: Евгений Петров   (21.01.2006 в 01:18)
 

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

   
 
 автор: Евгений Петров   (21.01.2006 в 12:57)   письмо автору
 
   для: midav   (21.01.2006 в 01:34)
 

Я кажется понял. Попробуйте заменить
if($ar = GetRecords($filename,$page,$num))

на
if($ar = GetRecords($filename,$_GET['page'],$num))

   
 
 автор: midav   (21.01.2006 в 13:01)   письмо автору
 
   для: Евгений Петров   (21.01.2006 в 12:57)
 

Евгений Петров спасибо большое!:) заработало! Хоть я и не совсем понял код скрипта, но главное что работает :) ещё раз спасибо! Ещё может вы будете добры помочь в этой теме
http://www.softtime.ru/forum/read.php?id_forum=4&id_theme=11839

   
 
 автор: midav   (21.01.2006 в 13:19)   письмо автору
 
   для: midav   (21.01.2006 в 13:01)
 

Вот ток со всем этим опять проблема! По вашему скрипту у меня только показывает имя девушки! А мне ещё надо вывести её фото, ник, фамилию, дату рождения, емайл :(

   
 
 автор: Евгений Петров   (22.01.2006 в 01:06)   письмо автору
 
   для: midav   (21.01.2006 в 13:19)
 

Это легко переделать, изменив 30 строку с
$retar[] = trim($buf[0]);

на
$retar[] = $buf;

и тогда на выходе
обращайтесь к элементам массива:
45 строка, вместо:
echo $value."<br>";

нужный элемент, например $value[2]
echo $value[2]."<br>";

   
 
 автор: midav   (22.01.2006 в 01:33)   письмо автору
 
   для: Евгений Петров   (22.01.2006 в 01:06)
 

Спасибо я уже был разобравшись! я чуть по другому сделал

   
 
 автор: midav   (23.01.2006 в 22:06)   письмо автору
 
   для: Евгений Петров   (22.01.2006 в 01:06)
 

Евгений Петров не могли бы вы сделать вывод ссылки на следующую страницу вот так 1|2|3| и т.д? А то по вашему примеру страницы выводяться в зависимости переменной $num 0|4|8 и т.д

   
 
 автор: Евгений Петров   (23.01.2006 в 22:16)   письмо автору
1000 байт
 
   для: midav   (23.01.2006 в 22:06)
 

->

   
 
 автор: midav   (23.01.2006 в 22:31)   письмо автору
 
   для: Евгений Петров   (23.01.2006 в 22:16)
 

Спасибо попробую

   
 
 автор: midav   (24.01.2006 в 02:17)   письмо автору
 
   для: midav   (23.01.2006 в 22:31)
 

Как то не работает правильно! на вторую страницу выводиться все то что было на первой кроме первой строчки :(

   
 
 автор: midav   (24.01.2006 в 02:19)   письмо автору
 
   для: midav   (24.01.2006 в 02:17)
 

Извиняюсь не был поменявши эту строчку
if($ar = GetRecords($filename,$_GET['page'],$num))
Всё хорошо работает, спасибо

   
 
 автор: Boss   (24.01.2006 в 02:46)   письмо автору
 
   для: cheops   (20.01.2006 в 01:06)
 

Cheops, а что такое "половая дискриминация"?

   
 
 автор: Loki   (24.01.2006 в 09:36)   письмо автору
 
   для: Boss   (24.01.2006 в 02:46)
 

Это когда предпочтение, по традиции, отдается паркету, в то време как другие напольные покрытия уже сделали качественный скачок:)

   
Rambler's Top100
вверх

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