Выборка из БД и чтение текстового файла

Статус
Закрыто для дальнейших ответов.

FiRеFоX

V.I.P.
Регистрация
07.08.2010
Сообщения
744
Имеется таблица в которой содержится id логин и дата (datetime), в столбце даты содержится дата рождения пользователей. Подскажите, как сделать что бы человек мог ввести в формах годы, например От [17] до [20] и выведит всех пользователей у кого дата рождения от 17 до 20 лет... Это вообще можно как то сделать? Сперва думал, что это просто, но потом голова начала пухнуть - ничего не выходит :dry:

И второй вопрос:
Есть форма <textarea>, которая будет обрезаться до 10000 символов (включая пробелы и тд).
Как лучше это организовать? У меня пока есть только два варианта:
1. Сделать отдельную папку и создавать новые текстовые документы, в них вставлять текст из формы, а их адрес (путь к файлу) вставлять в бд, и открывать потом файлы по id.
2. Сделать без папки и текстовых документов (просто записывать текст в бд) и так же выводить текст по ид, но я не помню на сколько органичено поле TEXT в бд((( Вдруг не влезет 10 тыс символов?

НО главный вопрос в том, что я не знаю как вывести этот текст постранично, что в первом варианте, что во втором, потом как отмерять надо не по строкам а по числу символов:(
Помогите кто чем может ;) Хотя бы советом или ссылочкой!
 

BaNru

Пацифизжу
Команда форума
Регистрация
13.11.2010
Сообщения
4 138
Ну по первому вопросу
Наверное проще всего переводить в unixdate и дальше просто вычитать даты.
Код:
WHERE a < $date1 AND a > $date2
Второй вопрос. ИМХО
Лучше хранить в файлах.
Постраничный вывод - вариантов много, например вот поиск выдал
Был где то скрипт на 5 строчек всего, который сам делил на страницы, но что то не найду. Помню что скрипт был под WAP заточен.
 

FiRеFоX

V.I.P.
Регистрация
07.08.2010
Сообщения
744
Ну по первому вопросу
Наверное проще всего переводить в unixdate и дальше просто вычитать даты.
Код:
WHERE a < $date1 AND a > $date2
Второй вопрос. ИМХО
Лучше хранить в файлах.
Постраничный вывод - вариантов много, например вот поиск выдал
Был где то скрипт на 5 строчек всего, который сам делил на страницы, но что то не найду. Помню что скрипт был под WAP заточен.
Это понятно, спасибо! Плюсанул за подсказку про униксдату, так и сделал)
Но нужно немного другое, по строкам выводить я и сам умею :biggrin: Потому как поле textarea можно написать все 10000 симолов одной строкой и весь текст выйдет на страницу, а это ни есть хорошо:( Особенно для тех, кто с телефонов :mad:
В тексте возможно и будут строки, но их будет немного, поэтому мне нужно вывести определенное колличество слов/символов на страницу и сделать постраничную навигацию.
Это возможно сделать?
 

BaNru

Пацифизжу
Команда форума
Регистрация
13.11.2010
Сообщения
4 138

ArhAngel

Well-Known Member
Регистрация
07.05.2011
Сообщения
378
Код:
<?php
$fp = fopen("counter.txt", "r"); // Открываем файл в режиме чтения
if ($fp)
{
while (!feof($fp))
{
$mytext = fgets($fp, 999);
echo $mytext."<br />";
}
}
else echo "Ошибка при открытии файла";
fclose($fp);
?>

Тут просто читаем по 999 символов из файла, можно любое другое число

Взято от сюда
 

FiRеFоX

V.I.P.
Регистрация
07.08.2010
Сообщения
744
Спасибо, погуглил! Нашел пример навигации:
Код:
<?
$page=$_GET['page'];
$f=fopen ('1.txt','r');
while (!feof($f))
$read []=fgets ($f, 100);
$perpage=15;
for ($i=$page*$perpage; $i<($page+1)*$perpage; $i++)
{
echo $read [$i];
}
if ( $page - 1 > 0 ) {$str1left = ' <a href="'.$_SERVER['PHP_SELF'].'?page='.($page - 1).'">Назад</a> --- ';}
else $str1left = ''; 
echo ''.$str1left.'<a href="?page=1">Обновить</a>';
?>
Как сделать что бы навигация начиналась не с 0 страницы а с первой? И как сделать ссылку вперед?
У меня при постраничной навигации через бд было так:
Код:
if ( $page + 1 <= $cnt_strs ) {$str1right = ' --- <a href="'.$_SERVER['PHP_SELF'].'?str='.($str + 1).'">Вперед</a>';} else $str1right = '';
Где $cnt_strs - максимальное число страниц, которое получится при выводе. И если номеру страницы прибавить 1 и это будет меньше или равно общему колличеству страниц, тогда выводим ссылку вперед, иначе не выводим...
Как сделать тоже самое?
 

ArhAngel

Well-Known Member
Регистрация
07.05.2011
Сообщения
378
Код:
<?
if(isset($_GET['page'])) $cur_page=$_GET['page']; else $cur_page = 1;
$f=fopen ('1.txt','r');
$i = 1;
while (!feof($f)){
   $page[$i] = fgets($f,100);
   $i++;
}
echo $page[$cur_page];
$count_page = $i;
if ( $count_page > 1 ){
   for($i = 1; $i <= $count_page; $i++) echo '< a href = "?page='.$i.'">страница - '.$i.'</a>';
}
//Если нужно вперед назад
if($count_page > 1){
   if($cur_page > 1) echo '< a href = "?page='.($cur_page-1).'">Назад</a>';
   if($cur_page < $count_page) echo '< a href = "?page='.($cur_page+1).'">Вперед</a>';
}
?>
Наверное гдето так
 

BaNru

Пацифизжу
Команда форума
Регистрация
13.11.2010
Сообщения
4 138
вот кажется нашел скрипт, про который упоминал выше.
Правда у меня был именно файлом, так сказать оригинал от автора.
Посмотри, там есть и постраничная навигация.

UPD 1
И вот вроде он же

UPD 2
А вот и сам скрипт нашел.
Посмотреть вложение wap_book_v_1.2.zip
 

FiRеFоX

V.I.P.
Регистрация
07.08.2010
Сообщения
744
вот кажется нашел скрипт, про который упоминал выше.
Правда у меня был именно файлом, так сказать оригинал от автора.
Посмотри, там есть и постраничная навигация.

UPD 1
И вот вроде он же

UPD 2
А вот и сам скрипт нашел.
Посмотреть вложение 1564
То что надо)) Там оказывается всё просто: надо было разделить имплодом и всё)

Вот выкладываю постраничную навигацию из файла, может кому пригодиться.
Код:
<?
$adres='http://site.ru/papka/file.txt'; // Заменить на нужный
$five = 300;  // число символов на странице
if (is_numeric($_GET['str'])) {$str = $_GET['str']; if ( $str < 1) {$str = 1;}} else {$str = 1;}
$file= implode('',file($adres));
//Меняем перенос строки
$file= str_replace("\n", '<br>', $file);
$obsum = $str * $five;
$nasum = $obsum - $five;
$end=(ceil(strlen($file)/$five));
if($str>$end){$str=$end; $obsum = $str * $five; $nasum = $obsum - $five;}
if($str<1){$str=1; $obsum = $str * $five; $nasum = $obsum - $five;}
$ret .='<div>';
for($i=$nasum; $i<$obsum; $i++) {$ret .= $file[$i];}
$ret .='</div><center>';
if($str >1)  $ret .= '<a href="'.$_SERVER['PHP_SELF'].'?str='.($str-1).'">Назад</a> --- '; else {$ret .= '';}
$ret .='<a href="'.$_SERVER['PHP_SELF'].'?str=1">Обновить</a>';
if($str <$end)  $ret .= '---  <a href="'.$_SERVER['PHP_SELF'].'?id='.$_GET['id'].'&str='.($str+1).'">Вперед</a>';  else {$ret .= '';}
$ret .='</center>';
//Выводим
echo $ret;
?>
Буду рад, если кто то это улучшит)
 
Статус
Закрыто для дальнейших ответов.
Верх Низ