PDA

Просмотр полной версии : народ помогите плиззз с php


RUSik
04.09.2006, 21:30
помоги народ проблема у меня есть такая со скриптом одним вобщих чертах короче есть скрипт который выводит из файла excel с расширением csv
информацию на страницу но вот незадача не знаю как сделать так чтоб он на страницы разбивал ну если в файле прайс большой например 30 старниц формата А4 как это сделать разбиение сейчас только получается весь прайс вывести на одну веб страницу а это сами понимаете не катит ни в какие ворота

короче есть три файла один в котором всё содержиться и ещё два вот код файла под названием

excelexit.php


<?php
$data = File("modules/Prise/data.csv");

echo "<b><h2><center>Прайс-лист СПб-Электро</b></h2></center>";

echo "<left><table border=1><tr>";

$dat_arr = explode(";", $data[0]);

for ($p=0;$p<count($dat_arr);$p++) {
echo "<td bgcolor=#9cbee6><center><b>$dat_arr[$p]";
}

echo "</tr>";

for ($i=1;$i<count($data);$i++) {

$data_array = explode(";", $data[$i]);
echo "<tr>";

for ($f=0;$f<count($data_array);$f++) {

echo "<td bgcolor=#ffffff><left>$data_array[$f]";

}

echo "</tr>";
}

echo "</table></left></form>";

?>



вот второй под названием index.php


<?php

defined('SPAIZ_CODE') or die('Direct Access to this location is not allowed.');

$module_name = basename(dirname(__FILE__));

$r_blocks = 1;


include("header.php");
OpenTable();
include("modules/$module_name/excelexit.php");
CloseTable();
include("footer.php");
?>


это всё дело написано под движок спайза (spaiz-nuke)

ana
05.09.2006, 10:54
Привет RUSik!

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

А точнее задать переменные допустим>
$start - с какой линии начинаем, по умолчанию с 1-ой,
так как в 0 линии у нас заголовок
$show - сколько надо показать линий начиная с линии старт

Вот что у меня на скорую руку вышло>



<?php
//$data = File("modules/Prise/data.csv");

$start = 1; // start line
$show = 15; // showed lines


// make csv array ONLY FOR TEST ;-)
$data = array("Name;Price");
$line = 100; // 100 lines in tht cvs file
for($i=1;$i<=100;$i++){
array_push($data, "item;$i EUR");
}
//~


// get count of line (also count of <tr>)
$count_tr = count($data);
// explode firsr line (also header) to array
$dat_arr = explode(";", $data[0]);
// get count of header (also count of <td>)
$count_td = count($dat_arr);

// print title
echo "<b><h2><center>Прайс-лист СПб-Электро</b></h2></center>";

// start table
echo "<left><table border=1><tr>";

// print table header
for ($i=0;$i<$count_td;$i++)
echo "<td bgcolor=#9cbee6><center><b>$dat_arr[$i]";
// end header
echo "</tr>";


// set stop
$stop = (($start + $show) > $count_tr)?$count_tr:($start + $show);

// print table content
for ($i=$start;$i<$stop;$i++)
{
$data_array = explode(";", $data[$i]);
echo "<tr>";

for ($j=0;$j<$count_td;$j++)
echo "<td bgcolor=#ffffff><left>$data_array[$j]";

echo "</tr>";
}

// end table content
echo "</table></left></form>";

?>



Выводится аккурат заголовок и 15 первых строчек :xe
из массива в 100 елментов

Теперь осталось только передавать значения для
переменных $stop и $show. Как? Moжно произвольно,
ну например "А покажите мне плизз 20 линий начиная с 50-ой"
или разделить фиксированно по 20 строк на страницу ...
Это уже дело вкуса

Надеюсь всё понятно? Ну как работает то сейчас скриптик то?
:гуляем

Я дописал комментарии и немного оптимизировал :дразню

PS. Красота принадлежит народу!
Отдохнуть после трудов праведных, в смысле глаза должны отдыхать! >

<?php
$link ='http://visualweb.youngsunday.com/otome/files/034/';
for($i=1;$i<=23;$i++){
$img = '000'.$i;
$img = substr($img, -3, 3);
$a = $link.$img.'.jpg';
echo "<a href=$a>$a</a><br>";

}

:cool: ничаго так...

RUSik
05.09.2006, 21:28
ana это то мне было понятно что надо задать переменные которые будут считать строки и ограничивать по числу строк отображение но загвоздка заключается в том что я не знаю как написать или дописать скрипт чтобы он оставшиеся по 15 строк делил и отображалд на других страницах ??? как это сделать вопрос ну с этим ты мне тоже помог спасибо огромное жду ответа .

ana
06.09.2006, 11:06
ana это то мне было понятно что надо задать переменные которые будут считать строки и ограничивать по числу строк отображение.
Да? Тогда я не понял вопроса наверное :54:


но загвоздка заключается в том что я не знаю как написать или дописать скрипт чтобы он оставшиеся по 15 строк делил и отображалд на других страницах ???.

----
Надо количество всех строк поделить на число строчек которые мы
хотим видеть, тогда получим количество страниц,
вот что я дописал в конце кода>


// set links
// get count of links
$count_ln = intval($count_tr/$show) + 1;
$j = 1;
for($i=1;$i<=$count_ln;$i++){
echo ("&nbsp;<a href=\"#\">$j</a>&nbsp;");
$j++;
}


Маленькая хитрость, надо количество строк округлять
до целого числа и прибавлять единицу, что бы не
потерять последние строки в таблице

Вот так это выглядит в натуре>
http://weber-grosshandel.eu/nowa/rusik/excelexit.php
а это исходник>
http://weber-grosshandel.eu/nowa/rusik/excelexit.html


:23: Пьём шампанское!

RUSik
14.09.2006, 19:23
блин ana что то я не пойму ни как всё сделал как ты сказал а оно мне кажет только первую страницу а по остальным тыкаешь они хоп и те же позиции как на первой фигня какая то выходит странно помоги чего можно сделать а??? :cry: :cry: :cry:

ana
14.09.2006, 21:32
блин ana что то я не пойму ни как всё сделал как ты сказал ....
Вы сделали ЭТО!

Я не верю своим глазам! И ЭТО работает?
Тогда не зря я здесь вроде как модератор&консультант...:4:

А то, что показывает только первую страницу, это правильно,
я специально так сделал и ждал этого вопроса...
Просьба не ругаться ... ... так надо!(c)"Бриллиантовая рука"

И так к скрипту>

вся страница показывается через index.php,
значит надо делать ссылку на index.php!

Дописываем скрипт>

// set links
// get count of links
$count_ln = intval($count_tr/$show) + 1;
$j = 1;
$start = 1;
for($i=1;$i<=$count_ln;$i++){
// %PATH_TO_%/index.php
echo ("&nbsp;<a href=\"index.php?start=$start&show=$show\">$j</a>&nbsp;");
$j++;
$start += $show;
}

Кроме ссылки на index.php мы ещё добавили,
переменные $start и $show , при чём переменную
$start в проходе каждого цикла увеличиваем на
величину $show

Теперь мы должны принять переменные $start & $show
в скрипте index.php

Добавляем пару строчек в index.php

// GLOBAL $start & $show
// start line
if(isset($_GET['start']) && 0 != $_GET['start'])$start = $_GET['start'];
else $start = 1;
// showed lines
if(isset($_GET['show']) && 0 != $_GET['show'])$show = $_GET['show'];
else $show = 15;

Разумеется определение переменных в скрипте excelexit.php
надо стереть! иначе они будут переопределяться!


По моему всё...

Код и работающий пример тут

Код: excelexit.php (http://weber-grosshandel.eu/nowa/rusik/source.excelexit.html) index.php (http://weber-grosshandel.eu/nowa/rusik/source.index.html)
Пример (http://weber-grosshandel.eu/nowa/rusik/index.php)

Спасибо за внимание!:гуляем

msa
12.11.2007, 15:06
народ, хелп! :sos:
Где взять код для on-line каталога мебели? Нужно чтоб в БД добавлялась мебля, а потом чтоб отбирало с БД и по страничкам разбивало

Ragimovich
12.11.2007, 15:49
Вообще-то, так, для общего развития, то, реализация чего здесь описывалась, называется импортным словом pagination (вольный русский перевод - листалка) и, при наличии небольших знаний английского, информация на эту тему находится на 1-2-3 в гугле.

Umar
06.01.2009, 20:33
Код и работающий пример тут

Код: excelexit.php index.php
Пример

Не совсем рабочий пример....

Umar
07.01.2009, 12:17
Народ помогите доделать код, у меня сейчас все страницы показывает так: 1 2 3 4 5 6...25

а нужно вот так: Начало 6 7 8 9 10 Последняя (Всего 25)
так чтобы показывались страницы две предыдущие(6 7) и две последующие(9 10) или что-то в этом плане.

Вот код:

<?php
$data = File("tyc.csv");

// GLOBAL $start & $show
// start line
if(isset($_GET['start']) && 0 != $_GET['start'])$start = $_GET['start'];
else $start = 1;

// showed lines
if(isset($_GET['show']) && 0 != $_GET['show'])$show = $_GET['show'];
else $show = 30;

// get count of line (also count of <tr>)
$count_tr = count($data);
// explode firsr line (also header) to array
$dat_arr = explode(";", $data[0]);
// get count of header (also count of <td>)
$count_td = count($dat_arr);

// заголовок
echo "<h2><center>Прайс-лист на оптику TYC</h2></center>";

// начало таблицы
echo "<center><table cellpadding=3 cellspacing=0 border=1 bordercolorlight=#333333><tr>";

// шапка таблицы
for ($i=0;$i<$count_td;$i++)
echo "<td bgcolor=white><center><b><p>$dat_arr[$i]";
// end header
echo "</tr>";

// set stop
$stop = (($start + $show) > $count_tr)?$count_tr:($start + $show);

// содержимое таблицы
for ($i=$start;$i<$stop;$i++)
{ $data_array = explode(";", $data[$i]);
echo "<tr>";

for ($j=0;$j<$count_td;$j++)
echo "<td><p>$data_array[$j]";

echo "</tr>"; }
echo "</table></form>";

// настройка ссылок
// get count of links

$count_ln = intval($count_tr/$show) + 1;
$j = 1;
$start = 1;
for($i=1;$i<=$count_ln;$i++){

// обращение к главной странице
echo ("&nbsp;<a href=\"katalog.php?start=$start&show=$show\">$j</a>&nbsp;");
$j++;
$start += $show;}
?>

Заранее, благодарю!

ligth_user
16.01.2009, 12:04
Возьмите любую СМС-ку, у каждой из них есть класс для постраничного вывода типа pagination.php или pager.php ...

reklamairk
22.06.2009, 06:59
Народ подскажите в чём разница между кодировками ср1251 и windows-1251?