АРМАДА
php, недо-дорген, как ему вытащить текстовую переменную
На страницу Пред.  1, 2
Новая тема Написать ответ Advanced Hosters - профессиональный хостинг
Пн Май 11, 2009 9:49 pm Start Post: php, недо-дорген, как ему вытащить текстовую переменную 

Yabuti
V.I.P.
Зарегистрирован: 28.11.2008
Сообщений: 16263
Contest (Сумма: 2)
Обратиться по нику
# Добавлено:Вт Май 12, 2009 12:49 amОтветить с цитатой
Точно, я подумал сначала, что мы здесь вдвоем обсуждаем, а тут Creator пришел и решил проблему!
Ребята, огромное Вам обоим спасибо, не знаю, что бы я делал без Вашей поддержки, да и без Армады вообще.. :smk:
Ксен ВПС и выделенные серверы от PQCService.net с бесплатным администрированием в 7 локациях, icq: 87244588
--

creator123
Гуру
Зарегистрирован: 25.07.2007
Сообщений: 1145
Обратиться по нику
# Добавлено:Вт Май 12, 2009 12:50 amОтветить с цитатой
Yabuti, код конечно ужасный, но пофиг. работает и ладно.
<----- если понравился пост, жмакай сюды <-----

Yabuti
V.I.P.
Зарегистрирован: 28.11.2008
Сообщений: 16263
Contest (Сумма: 2)
Обратиться по нику
# Добавлено:Вт Май 12, 2009 12:55 amОтветить с цитатой
Да, там сам черт ногу сломит =) Но работает! Это вообще мое первое программирование под реальные задачи, до этого только в универе два года назад кодили под теорию, вроде получается, конечно, с Вашей помощью =))
Ксен ВПС и выделенные серверы от PQCService.net с бесплатным администрированием в 7 локациях, icq: 87244588
--

kaptmeh +
Опытный
Зарегистрирован: 27.02.2009
Сообщений: 102
Обратиться по нику
# Добавлено:Вт Май 12, 2009 1:06 amОтветить с цитатой
Ну ты все таки найди функцию которая читайет определенное кол-во значений из файла, т.к. если ты будеш реализовывать свой сплоггер, и он у тебя скушает авишку в формате txt то мало тебе не покажеться.

ЗЫ Ещё на всякий случай комментируй свой код, самому понятнее будет, и выполняй одну операцию на одной строке (тобиш конструкций вида if(a>b)a=bWink не было.
Code monkey Razz

Yabuti
V.I.P.
Зарегистрирован: 28.11.2008
Сообщений: 16263
Contest (Сумма: 2)
Обратиться по нику
# Добавлено:Вт Май 12, 2009 1:17 amОтветить с цитатой
kaptmeh, хорошо, спасибо, что напомнил. Вроде та функция, которой заменил участок индийского кода, у нее есть доп. параметры - смещение и объем того, сколько брать - в сплог-бандит добавлю обязательно.

kaptmeh, ты случайно не знаешь, как можно разбить TXT-файл на куски с заданным количеством строк? Не попадалась на С такая программа?
Ксен ВПС и выделенные серверы от PQCService.net с бесплатным администрированием в 7 локациях, icq: 87244588
--

Yabuti
V.I.P.
Зарегистрирован: 28.11.2008
Сообщений: 16263
Contest (Сумма: 2)
Обратиться по нику
# Добавлено:Вт Май 12, 2009 2:44 amОтветить с цитатой
Нашел хорошую программу, может кому пригодится тоже:
http://fileshare156.depositfiles.com/auth-124208468156ba45dedd6fa3c7737a44-195.47.255.231-281023942-5694555/FS156-1/fcutsew.rar
Размер:: 1,4 MБ (1 429 320 байт)
Только после разрезания файлов их группой в Тотал Коммандере переименовать из *.cue в *.txt.

Сам скрипт как доделаю до человеческого вида - тоже выложу.
Ксен ВПС и выделенные серверы от PQCService.net с бесплатным администрированием в 7 локациях, icq: 87244588
--

Puika
Свой
Зарегистрирован: 03.04.2008
Сообщений: 49
Обратиться по нику
# Добавлено:Вт Май 12, 2009 3:12 amОтветить с цитатой
<?php

// Создаем функцию с 2-мя обязательными
// и одним новым необязательным параметром
// с уже указанным значением по умолчанию
function separator($file, $notes, $limit=0){

// Загоняем всю инфу из файла в массив
$file = file($file);
// Получаем количество строк в файле
$q = sizeof($file);
// Делим кол-во строк на кол-во записей - получаем кол-во страниц
// ! Если число не делится ровно, оно округлится по верхней границе (с избытком)
// Для этого существует функция ceil()
// В дальнейшем нам не нужно ставить (int) перед переменной
$np = ceil($q/$notes);

// Если в адресной строке есть $page, значит
//нужно показать блок, соответсвующий значению $page
if(isset($_GET['page']))
{
// Для удобства переименуем $_GET['page'] в $page
$page = $_GET['page'];

// Если $page больше, чем кол-во страниц, показываем последний блок
if($page > $np) $page = $np;
// Если вдруг значение $page отрицательно - выводим первый блок
if($page <= 0) $page = 1;
// Формулы начальной и конечной строки блока, вычислены опытнам путем
$begin = $notes*($page-1);
$end = $notes*$page-1;

// Вывод данных
for($i=$begin; $i<=$end; $i++)
{
if(isset($file[$i])) echo $file[$i].'<br>';
}
}

// Если $page в адресной строке нет, то показываем 1-й блок
else
{
// Если количество строк в файле меньше или равно допустимому
// количеству, то просто выводим их и не паримся с постраничным
// выводом, ибо нефига...
if($q <= $notes)
{
for($i=0; $i<$q; $i++) {
echo $file[$i].'<br>';
}

// Дальнейшее выполнение функции бессмыслено (все возможное выведено), поэтому выходим
exit;
}

// А если больше, то выводим первый блок
else
{
for($i=0; $i<$notes; $i++)
{
echo $file[$i].'<br>';
}
}
}

// Вывод навигации

// Делаем пробел между выводимой информацией
// и навигацией Smile
echo '<br>';

// Если страница не первая (иначе нет смысла выводить
// стрелки), то выводим стрелки "В начало" и "Предыдущая"
if(isset($_GET['page']) && $_GET['page'] > 1){
// Будет вернее писать $_SERVER['SCRIPT_NAME'], а не index.php, как было раньше
echo '<a href='.$_SERVER['SCRIPT_NAME'].'?page=1>&lt;&lt;</a> ';
$prev = $_GET['page']-1;
echo '<a href='.$_SERVER['SCRIPT_NAME'].'?page='.$prev.'>&lt;</a> ';
}

// Если параметр, ограничивающий длину выводимой
// навигации не установлен или равен нулю, то выводим
// навигацию как обычно
if($limit == '0'){
for($i=0; $i<$np; $i++){
if(isset($_GET['page']) && $_GET['page'] == $i+1) echo '['.($i+1).'/'.$np.']';
else echo '<a href='.$_SERVER['SCRIPT_NAME'].'?page='.($i+1).'>['.($i+1).']</a> ';
}

}else{
// Самое интересное: ограничение выводимой навгиации
if(!isset($_GET['page'])) $page=1;
// Форумла начала "обрезанной" навигации (НОН)
$begin = $page-$limit;
// Формула конца "обрезанной" навигации (КОН)
$end = $page+$limit;
// Если НОН выходит за ноль, то можно не "обрезать" навигацию слева
if($begin <= 0) $begin = 1;
// Если КОН выходит за последнюю страницу, то можно не "орбезать" навигацию справа
if($end > $np) $end = $np;
// Если между 1-й страницей и НОН есть какие-то страницы, заменяем их на "..."
if($begin > 1) echo "...";

//Ну и сам вывод...

for($i=$begin; $i<=$end; $i++){
if(isset($_GET['page']) && $_GET['page'] == $i) echo '['.$i.'/'.$np.']';
else echo '<a href='.$_SERVER['SCRIPT_NAME'].'?page='.$i.'>['.$i.']</a> ';
}

// Если между КОН и последней страницей есть какие-то страницы, заменяем их на "..."
if($end < $np) echo "...";

}
// Вывод стрелок "Следующая" и "В конец"
if(@$_GET['page'] < $np){
$next = @$_GET['page']+1;
echo '<a href='.$_SERVER['SCRIPT_NAME'].'?page='.$next.'>&gt;</a> ';
echo '<a href='.$_SERVER['SCRIPT_NAME'].'?page='.$np.'>&gt;&gt;</a> ';
}
}

// Ну и вызов функции
separator('file.txt', '10');
?>

Настройки скрипта внизу кода:

file.txt - неопсредственно текстовый файл для обработки.
тут '10' - число строк на странице.

Скрипт не мой, по случаю нашел

Yabuti
V.I.P.
Зарегистрирован: 28.11.2008
Сообщений: 16263
Contest (Сумма: 2)
Обратиться по нику
# Добавлено:Вт Май 12, 2009 5:21 amОтветить с цитатой
Офигительный скрипт!
Прикрутил его к шаблону странички - красота!
Огромное спасибо!

PS: Подметил, что его можно чуть-чуть улучшить - если вместо статичного имени файла 'file.txt' задать переменную, а в строке запроса, параметр в виде имени нужного нам файла, то можно ведь вообще один тот скрипт в папке держать и много TXT-книг!
Вот так будет выглядеть строка: http://site/script.php?knizhka=Voina_i_Mir - книжка "Война и Мир",
http://site/script.php?knizhka=encyclopedia_veshestv - книжка "Энциклопедия веществ".
Ксен ВПС и выделенные серверы от PQCService.net с бесплатным администрированием в 7 локациях, icq: 87244588
--

Puika
Свой
Зарегистрирован: 03.04.2008
Сообщений: 49
Обратиться по нику
# Добавлено:Вт Май 12, 2009 12:27 pmОтветить с цитатой
Yabuti писал(а):

Сам скрипт как доделаю до человеческого вида - тоже выложу.



Как скоро...

Yabuti
V.I.P.
Зарегистрирован: 28.11.2008
Сообщений: 16263
Contest (Сумма: 2)
Обратиться по нику
# Добавлено:Вт Май 12, 2009 2:17 pmОтветить с цитатой
Puika писал(а):
Yabuti писал(а):

Сам скрипт как доделаю до человеческого вида - тоже выложу.



Как скоро...


Ориентировочное время - сегодня, Ночь, полнолуние r5
Значит, такая сборка:
1) Простой дорген, переделанный в генератор страниц - можно задать кейворд(ы), тайтл, в папку положить нужную страницу с текстом - создасться оптимизированная под ваш кей страничка, которую не стыдно дать читать юзерам =);
2) Программа для резки больших файлов на равные части (главы книг, например).
А скрипт, который Вы выложили - уже работает - здесь:
Как стать успешным пикапером Drinks or Beer
Ксен ВПС и выделенные серверы от PQCService.net с бесплатным администрированием в 7 локациях, icq: 87244588
--

Puika
Свой
Зарегистрирован: 03.04.2008
Сообщений: 49
Обратиться по нику
# Добавлено:Вт Май 12, 2009 6:53 pmОтветить с цитатой
Drinks or Beer

kaptmeh +
Опытный
Зарегистрирован: 27.02.2009
Сообщений: 102
Обратиться по нику
# Добавлено:Вт Май 12, 2009 9:18 pmОтветить с цитатой
Yabuti, Мне много всяких задач встречалась, даже компилятор писал (ну это был курсач но все таки) так что если нужно совет то обращайся, если хочеш стучи в личуку асю дам
Code monkey Razz

Yabuti
V.I.P.
Зарегистрирован: 28.11.2008
Сообщений: 16263
Contest (Сумма: 2)
Обратиться по нику
# Добавлено:Ср Май 13, 2009 4:13 amОтветить с цитатой
kaptmeh, спасибо! Drinks or Beer


Залил генератор страничек и резалку, архив 411 Кб:
http://depositfiles.com/files/vwxpcbh44
Ксен ВПС и выделенные серверы от PQCService.net с бесплатным администрированием в 7 локациях, icq: 87244588
--
Новая тема Написать ответ    ГЛАВНАЯ ~ ТЕХНИЧЕСКИЕ ВОПРОСЫ

Перейти:  





Генеральный спонсор



Партнеры