Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

array(PHP)

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
Гость
Гость





СообщениеДобавлено: Сб Авг 21 2004 23:05    Заголовок сообщения: array(PHP) Ответить с цитатой

Может кто знает как сделать чтобы в этой строке: $pics=array($table_full,$table_full,$table_full); $table_full было столько же сколько и строк в файле test.txt ?
Вернуться к началу
Almaz



Зарегистрирован: 13.08.2004
Сообщения: 45

СообщениеДобавлено: Вс Авг 22 2004 09:35    Заголовок сообщения: Ответить с цитатой

Во первых надо узнать сколько строк в test.txt.
Это можно сделать открыв файл функцией fopen, и потом прочитать его функцией fread.
Но есть способ проще.
array file (string filename [, int use_include_path]);
Функция file открывает файл и сразу зачитывает его, возвращает массив, каждый элемент которого это строка из файла.
Для твоего случая:
$pics=file("test.txt");
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Гость
Гость





СообщениеДобавлено: Вс Авг 22 2004 09:56    Заголовок сообщения: Ответить с цитатой

Нет это не то, если читать $pics=file("test.txt");, то он будет выводить $table_full как текст, а мне то нужно чтобы он выводил переменую или как это называеться, в $table_full у меня прописана таблица, а таким образом он выведет это как обычный текст.
Вернуться к началу
Spencer



Зарегистрирован: 08.08.2004
Сообщения: 54
Откуда: Moscow

СообщениеДобавлено: Вс Авг 22 2004 23:14    Заголовок сообщения: Ответить с цитатой

Если я правильно тебя понял - тебе нужно не содержимое массива, а его величина. Для этих целей в PHP есть функция count(). Т.е.,
Код:
.......
$f = fopen("file.txt","rt") or die ("error!");
while(!feof($f))
{
$File[] = fgets($f,50);
}
fclose($f);
$table_full = count($File);
.........


тебе нужно что-то подобное.

Рад, если натолкнул на правильное решение.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Almaz



Зарегистрирован: 13.08.2004
Сообщения: 45

СообщениеДобавлено: Пн Авг 23 2004 01:18    Заголовок сообщения: Ответить с цитатой

Хм, а зачем цикл то тут я не понял.
Пишем тогда уж:
Код:

$ttt=file("test.txt");
$table_full=count($ttt);

Хотя вместо count, я использую sizeof, по причине того, что даже если массив ($ttt) пустой, то count все равно возвратит единицу.
Да и таким образом, в любом случае мы переписываем переменную $table_full, а уважаемый Гость говорит что у него там уже прописана таблица...

2Гость: объясни нормально что ты хочешь сделать?
А то фразы: "нужно чтобы он выводил переменую или как это называеться" и в "$table_full у меня прописана таблица", лично мне не очень понятны.
И не пойму зачем в массиве хранить кучу одинаковых значений?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Гость
Гость





СообщениеДобавлено: Пн Авг 23 2004 04:54    Заголовок сообщения: Ответить с цитатой

Напишу свою проблему полностью, я её тут не стал писать т.к спрашивал уже на других форумах, но не кто так и не сказал как сделать а говорили гони деньги, новерно прошу много, вот решил спросить хоть часть Smile

Вобщем написал я скрипт который сохраняет текст в файле затем это все выводит в таблицу, все было нормально пока я не добавил большое количество таблиц, дело в том что все они встали в 1 ряд, а мне нужно чтобы в 1 ряду было 5 таблиц. Вот и мучиюсь уже неделю, не как не могу сделать и не кто не может помочь. Дали мне ссылку, а там в форуме человек просил чтобы у него было по 3 картинки в ряду. Ну там картинки, а мне нужно чтобы вставлял таблицу, причем в этой таблицы вставляеться текст из файла. Ну вобщем мучию уже 3 день этот скрипт так и не могу сделать как мне надо Smile

Ну вот в array я вставляю переменую только потому что всю таблицу в array я вставить не могу т.к она большая.

Может на этом форуме найдуться добрые люди и помогут мне Smile

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

Код:
<?
function get_rows()
//тут функция которая считает строки в файле не как не относиться к разбиению таблиц на ряды
}

echo "главная таблица в которой небольшие таблицы с информацией с файла";

$fp = fopen ("base/test.txt", "r+");
while (!feof($fp))
{
$read = fgets($fp, 1000);
list($text,$ffile,$ppic,$ffile_size_b) = split('#',$read);

$table_full = "тут сама таблица которая содержит в себе информацию с файла";

$tables=array($table_full,$table_full,$table_full);
$col = 5;
$all = count($tables);
echo "<table border='1' align='center'><tr>";
for ($i=0;$i<$all;$i++) {
if (($i % $col)==0 and $i!=0)
echo "</tr>\n<tr>\n";
echo "<td>".$tables[$i]."</td>\r\n";
}
}

fclose ($fp);
echo "
</td>
</tr>
</table>
<tr bgcolor='#525252' valign='middle'>
<td colspan='2'>
<div align='center'>";
if(file_exists("base/test.txt")) {
echo "
<span style='font-size: 10; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; color: #000000;'>
$array всего: <b>
".get_rows();};
echo "</div>
</td>
</tr>
</table>
</body>";
?>
Вернуться к началу
Гость
Гость





СообщениеДобавлено: Пн Авг 23 2004 04:58    Заголовок сообщения: Ответить с цитатой

Ах да забыл про $table_full и array. Вот смотри в array содержиться количество таблиц верно? у меня в файле например 7 строчек. 1 строка = 1 таблица, мне нужно чтобы в array вставлялось столько $table_full сколько строк в файле и тем самым получалось количество таблиц равное количеству строк в файле.
Вернуться к началу
Almaz



Зарегистрирован: 13.08.2004
Сообщения: 45

СообщениеДобавлено: Пн Авг 23 2004 07:11    Заголовок сообщения: Ответить с цитатой

2Гость: Не стал я глубоко вдаваться в подробности твоего скрипта. Главное я вроде понял что ты хочешь:
Понял я так: есть большая таблица (главная) в каждой ячейке этой таблица должна содержатся еще одна таблица, причем эта каждая таблица должна браться из файла в котором 1 строка это есть наша (вторая таблица). И в завершении тебе надо чтобывсе это выводилось в 5 столбцов.
Решил я написать быстренько с нуля, вот что получилось:
Код:

<?php
$col=5; //переменная которая определяет кол-во столбцов

//цикл верхушки главной таблицы
echo "<table width=80% border=1><tr>";
for ($j=1;$j<=$col;$j++)
{
 echo "<td>Таблица $j</td>\n";
}
echo "</tr>";

//главная часть
$all_file=file("test.txt");
for ($i=1;$i<=sizeof($all_file);$i++)
{
  if ($i==0) echo "<tr>\n";
  $table_info=explode("#",$all_file[$i-1]);
  echo "<td><table border=1><tr><td>$table_info[0]</td><td>$table_info[1]</td></tr><tr><td>$table_info[2]</td><td>$table_info[3]</td></tr></table></td>\n";
  if (((is_int($i/$col)) || ($i==sizeof($all_file))) && ($i!=0))
  {
    echo "</tr>\n<tr>\n";
  }
}
//финиш
echo "</table>";
?>


Был создан файл с содержимым (на нем все проверялось):
Код:

ggg#ggg#ggg#ggg
uuu#uuu#uuu#uuu
iii#iii#iii#iii
ooo#ooo#ooo#ooo
ppp#ppp#ppp#ppp
rrr#rrr#rrr#rrr
eee#eee#eee#eee
www#www#www#www
mmm#mmm#mmm#mmm
nnn#nnn#nnn#nnn
444#444#444#444


Скрипт естественно можно оптимизировать, но это уже твое дело Smile)
Если что не ясно пиши....


P.S.: скрипт рабочий, но я стустя минуту после поста мессаги заметил маленький глюк, это как домашнее задание - найти глюк Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
гость
Гость





СообщениеДобавлено: Пн Авг 23 2004 08:01    Заголовок сообщения: Ответить с цитатой

Спасибо. Я ещё не пробывал изменить его под себя, глянул его быстренько и кажеться опять не то.

таблица у меня береться не с файла, с файла у меня береться только текст который в неё вставляеться. Все косяки с предыдущим скриптом были в том что чтение файла идет с while, где закрыть его я не знаю, пробывал в разных местах и всегда получал не то что хотел. Под while у меня находиться таблица в которую вставляеться текст из файла, и ниже(тоже в while) находился скрипт который разбивал, и у меня получалось куча одинаковых таблиц.

Мне нужно этот скрипт вписать так чтобы у меня не получались одинаковые таблицы.

$fp = fopen ("test.txt", "r+");
while (!feof($fp))
{
$read = fgets($fp, 1000);
list($text,$ffile,$ppic,$ffile_size_b) = split('#',$read);

echo "
<td>
<table width='147' border='1' cellspacing='0' cellpadding='0' bordercolor='#575757' align='center'>
<td width='150' background='frames/template/pictures/table_z_bg.gif' bgcolor='#2D2D2D'>
<div align='center'><span style='font-size: 9; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; color: #939393;'><b>$text</b></div>
</td>
</tr>

<tr>
<td colspan='2'>
<div align='center'><img src='upload/pictures/$ppic' align='center'></div>
</td>
</tr>
<tr bgcolor='#525252'>
<td colspan='2'>
<div align='center'><span style='font-size: 10; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; color: #000000;'>Размер:<b> $ffile_size_b</b> кб</div>
</td>
</tr>
<tr bgcolor='#666666'>
<td colspan='2'>
<div align='center'><span style='font-size: 10; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; color: #000000;'><a href='upload/files/$ffile'>Скачать</div>
</td>
</tr>
</table>
</td>
";
}
fclose($fp);
Вернуться к началу
Гость
Гость





СообщениеДобавлено: Пн Авг 23 2004 08:10    Заголовок сообщения: Ответить с цитатой

Все разобрался, слишком быстро посмотрел скрипт Smile все оказалось очень просто. Спасибо ещё раз, целую неделю по форумам хожу спрашиваю + мучию всякие скрипты часами и ты так быстро избавил меня от этого Very Happy
Вернуться к началу
Almaz



Зарегистрирован: 13.08.2004
Сообщения: 45

СообщениеДобавлено: Пн Авг 23 2004 09:17    Заголовок сообщения: Ответить с цитатой

2Гость: Был рад помочь. А миниглюк там в том что когда последняя ячейка главной таблицы заполняется другой таблицей, там появляется лишний "<tr>".
Это строка echo "</tr>\n<tr>\n";
Подправишь я надеюсь.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Гость
Гость





СообщениеДобавлено: Пн Авг 23 2004 09:29    Заголовок сообщения: Ответить с цитатой

Да я это уже убрал, спасибо ещё раз Very Happy
Вернуться к началу
Гость
Гость





СообщениеДобавлено: Пн Авг 23 2004 20:29    Заголовок сообщения: Ответить с цитатой

Сидел добавлял что мне нужно и появилась ещё 1 проблема Smile Как разбить на страницы? чтобы было например 5 рядов на 1 странице? А то у меня 80-100 таблиц, получаеться 16-20 рядов, это очень много.
Вернуться к началу
Slava_
Гость





СообщениеДобавлено: Пн Авг 23 2004 21:11    Заголовок сообщения: Ответить с цитатой

Хоть я и опоздал, т.к. оквет найден.
я все равно напишу как я решил эту проблему, осуществлялся вывод картинок.
выглядит это примерно так:

Код:
print "<table><tr>";
$array=//из выводимых таблиц
for ($i=0;$i<count($array);$i++){
$table=implode("разделитель",$array[i]);
print"<td>$table</td>";
   if($i%5==0){
   print"</tr><tr>";
   }
}
print"</tr></table>";


что касается постраничного выводаSmile, наверно надо и своей головой до этого доходить. Или купить готовый скрипт, тагда точно все работать будет как надо.
Вернуться к началу
Гость
Гость





СообщениеДобавлено: Пн Авг 23 2004 21:45    Заголовок сообщения: Ответить с цитатой

Своей головой можно до этого дайти если знать php, а я его знаю 2 едели и для меня это сложный скрипт. Платить денги за 10 строчек я не собираюсь.
Вернуться к началу
Almaz



Зарегистрирован: 13.08.2004
Сообщения: 45

СообщениеДобавлено: Вт Авг 24 2004 01:37    Заголовок сообщения: Ответить с цитатой

2Гость: фраза "я его знаю 2 недели" звучит... Smile

Теперь насчет постраничного вывода:
Весь код писать я тебе не буду - должен додумать. Smile
Во первых тебе понадобится переменная типа $page, которая будет передаватся этому скрипту.
Будет такой кусочек тоже: if (!isset($page)) $page=1;
то есть если переменная $page не задана значит она равно единице.
Далее нужно вывести ряд линков - для перемещения пользователя по страницам. Типа: [1] [2] [3] и т.д. Сколько таких будет определишь делением и округлением до большого целого.
И циклом от 1 до всего страниц выведешь.
Теперь о выводе:
Тебе нужно просто менять (я про свой скрипт) начальное и конечное значение переменной $i.
Допустим пользователь зашел просто на страницу, тогда $page равно единице.
Тогда код примет вид:
.........................
$i=$page*$col-($col-1); //1*5-(5-1)=1
$b=$page*$col; //1*5=5
for ($i;$i<=$b;$i++) {
.........................
В результате ты выводишь: с 1 по 5 влючительно.
Теперь пускай пользователь нажал на линк [2] (<a href="script.php?page=2">[2]</a>).
Переменная $page=2;
Считаем:
$i=2*5-(5-1)=6;
$b=2*5;
Выводим с 6 по 10 включительно.
Ну и т.д.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Гость
Гость





СообщениеДобавлено: Вт Авг 24 2004 08:53    Заголовок сообщения: Ответить с цитатой

Что-то я не понел как выводить, попробывал я этот скрипт например пробывл делать так, посмотреть что будет.

Код:
if (!isset($page)) $page=1;
$col = "7";
$i=$page*$col-($col-1); //1*5-(5-1)=1 ;
$b=$page*$col; //1*5=5 ;
for ($i;$i<=$b;$i++) {
echo "1";
}


Получил 1111111, это что? если я правельно понел, то там и должно быть то что выводиться на 1 странице, если я туда поставлю то что мне надо, то у меня поучиться 7 одинаковых главных таблиц+маленьких куча Smile Как это сделать? чему $col должен быть равен?
дальше ставлю <a href="script.php?page=2">[2]</a>, нажимаю на 2 поидеи он же должен показать хоть что-то? он нефига не показывает
Вернуться к началу
Slava_
Гость





СообщениеДобавлено: Вт Авг 24 2004 16:10    Заголовок сообщения: Ответить с цитатой

Насчет денег, это я не о себе. Это я в общем так подумал. Кстати, там гораздо более 10 строк кода.( это я с острил)
А для постраничного вывода, всегото, нужна переменная(тип integer) определяющая количество элементов массива выводимых на одной странице, и позицию начала чтения массива при выводе на следующей странице, и т.д.


Надеюсь что помог хоть чемто.
Вернуться к началу
Гость
Гость





СообщениеДобавлено: Вт Авг 24 2004 16:32    Заголовок сообщения: Ответить с цитатой

Слава если бы я просил целый сайт или сложный и большой скрипт, тогда уже можно было говорить о деньгах, а так я думаю это не сложный скрипт для знающих php.

Цитата:
А для постраничного вывода, всегото, нужна переменная(тип integer) определяющая количество элементов массива выводимых на одной странице, и позицию начала чтения массива при выводе на следующей странице, и т.д.


Если ты был внимателен, то мог прочитать в моём сообщении: я знаю php 2 недели. Если ты это прочитал, то мог бы догадаться что я не пойму нечего в таком объяснении. Если можеш, то поподробней.
Вернуться к началу
Almaz



Зарегистрирован: 13.08.2004
Сообщения: 45

СообщениеДобавлено: Ср Авг 25 2004 01:36    Заголовок сообщения: Ответить с цитатой

2Гость:

if (!isset($page)) $page=1;
$col = "7";
$i=$page*$col-($col-1); //1*5-(5-1)=1 ;
$b=$page*$col; //1*5=5 ;
for ($i;$i<=$b;$i++) {
echo "1";
}

И ты спрашиваешь что такое "1111111", идем по строчно:
1: если переменная $page не опеределена, она она равна 1
2: определили $col (хотя не пойму зачем ее писать в кавычках - это же число)
3: считаем перемменную $i=1*7-(7-1)=1;
4: считаем $b=1*7=7;
5: цикл for (1;1<=7;добавлять к числу 1)
6: вывести единицу

Логично - цикл прокрутился 7 раз и вывел семь единиц.

Теперь дальше.
Как этот цикл выведет тебе 7 главных таблиц, если главную таблицу ты уже создал выше. См. мой скрипт первый.

Теперь насчет script.php?page=2. Если переменная со строки взялась И имя твоего сприпта script.php. То переменная $page должна равнятся двум. Ну и дальше аналогия с первым случаем.

У тебя простой план:
рисуешь главную таблицу, потом читаешь массив с файла,
на основе переменной $page вычисляешь с какого элемента по какой выводить, крутишь цикл в котором по условиям рисуется 5 рядов или сколько там надо.... см. 1 скрипт

Поправка: $col в первом скрипте, это не та переменная $col которая во второй. Переименую $col, где нибудь в одном месте в другую.

P.S.: тебе не кажется что пора в руки книжку брать и читать основы создание цуиклов, условий и т.д.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Гость
Гость





СообщениеДобавлено: Ср Авг 25 2004 11:59    Заголовок сообщения: Ответить с цитатой

Спасибо алмаз Smile я все равно нечего не понел, это для меня ещё слишком сложно.
Нащет книг, они мне не нужны, мне надо только сайт доделать и все. Серьезно изучать php мне пока что не нужно Smile
Вернуться к началу
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...