Публикация файлов на странице

Myst

Новичок
Пример взят с мануала пхп немного подкоректированый

PHP:
<?
$dir = "./images/";
if (is_dir($dir))
 {
   if ($dh = opendir($dir))
	   {
while (($file = readdir($dh))!==false)
	{
  if($file != "." && $file != ".."){?>
  <tr>
  <td align="center" bgcolor="FFFFFF"><a href="<?= $file;?>"><?php echo $file?></a></strong></td>
  </tr>
  <?php
       }
    } 
  }
}
closedir($dh);
?>
У меня дополнение к етому вопросу , как отформатировать ети файлы в столбцы , я когда то видел что для етого применялся цикл for и foreach но пока не могу разобратса с етим.
 

Фанат

oncle terrible
Команда форума
ещё раз нарушишь правила - тему будет удалена.

-~{}~ 25.03.06 14:21:

как отформатировать ети файлы в столбцы
сначала ты должен представлять себе Html код, который хочешь получить
 

Myst

Новичок
Договорились больше не буду влезать в чужие топики со свими вопросами.

Да все же моя не внимательность говорит за себя , нада было всегото создать таблицу <table> и будет все в столбце , дальше я думаю уже разберусь , Фанат спасибо за то что направил куда смотреть надо.
 

Фанат

oncle terrible
Команда форума
я так понимаю, что тебе нужно бюльше одного столбца?
 

Myst

Новичок
Да конечно хотелось бы узнать , тоесть я могу до етого создать в хтмл таблицу и непосредственно уже в таблице выполнить етот код который выведет все содержимое в один столбец , вот хотелось бы узнать как можно вывести в 2,3,4 столбца в которых будет присутствовать содержимое тоесть создать лимит в 10 строк последующие переводить в другой столбец вот етого я пока не могу освоить.
 

Фанат

oncle terrible
Команда форума
создать лимит в 10 строк последующие переводить в другой столбец вот етого я пока не могу освоить.
так и сделать
завести счётчик, увеличиать его на единицу.
по достижении 10 счётчик обнулять, и выводить код перевода столбца
 

Myst

Новичок
Сказано все хорошо и даже понятно вот только с реализацией немного туговато , не могу понять куда копать по поводу счетчика , как я понял лимит создать можно циклом for дальше ставим через счетик присваеваем еденицу и продолжаем выводить через тот же for если я немного не так понял поправте , да и для того что бы прогонять его через фор то список файлов нада загонять в масив или можно как то по другому ?
 

Фанат

oncle terrible
Команда форума
не понял. зачем тебе for?
счётчик - это переменная.
ты можешь переменную увеличить на единичку?
 

Myst

Новичок
А как же мне тогда сделать лимит в 10 строк ? count тут тоже не проходит пробовал уже поетому и смотрю в сторону for , подскажи направление , по поводу счетчика я понял что ето переменная , вначале присваиваем 0 дальше после первого вывода строк , присваиваем на еденицу больше и выводим оставшиеся значения я правильно понял ?
 

Фанат

oncle terrible
Команда форума
не нужен тебе лимит в 10 строк.
выводи все свои файлы, как обычно.

надо всего лишь добавить код в две строчки
какой - написано четырьмя сообщениями выше.
что тебе там непонятно?
 

Myst

Новичок
Все теперь понял , после вайла просто сделать переменную +1 и с каждым проходом вайла оно будет увеличивать на еденицу , дальше ставим проверку если переменная достигла 10 , то обнуляем переменную и переводим строку , столбец , только подскажи еще немного , я сделал переменную после вайла $a=$a+1; дальше ставлю if ($а=10) то { $a=0 и .... вот тут то и не могу понять как мне продолжить выводить оставшийся список файлов , у меня пока только получаетса выводить во второй столбец теже самые файлы гдето я что то упустил.

Если опять что то неправильно написал то видать прямая дорога мне в учебники с нуля читать.
 

Фанат

oncle terrible
Команда форума
а как оно после вайла будет работать?

-~{}~ 25.03.06 20:14:

нут дело -то не в учебниках.
учебник не расскажет тебе, как работает твой скрипт.
ты В ЦИКЛЕ выводишь строки.
ну так перевод колонки ты почему ПОСОЛЕ цикла хоешь делать?
 

Myst

Новичок
В том то и дело что не после вайла а в самом вайле если я поставлю первод строки после вайла потеряетса вся последовтельность , я ето понимаю но все равно не могу сделать так как хочу , примерно я делаю так:

PHP:
while (($file = readdir($dh))!==false)
	{
	$a=$a+1;
  if($file != "." && $file != "..")
	  {
	    
 ?>
  
  <table border="1"  width="400">
  <tr>
  <td  border="1" align="center" bgcolor="FFFFFF"><a href="<?= $file;?>"><?php echo $file?></a></strong></td>
  
    <?php
       
  if ($a=10)
		{
	       $a=0
			?>
			
            
  <td  border="1" align="center" bgcolor="FFFFFF"><a href="<?= $file;?>"><?php echo $file?></a></strong></td>
  </tr>
  
  <?
		}
		}
    }
оно мне выводит целый список в две колонки , вот етого немного и не хватает знаний чтоб его довести до ума , всмысле сделал счетчик просчитало но не остановилось а прошло весь цикл файлов и вывело , дальше после иф=10 тоже самое делает со второй колонкой , как я понял мне его нада остановить коим образом перевести на второй столбец оставшиеся данные вот ето и не получаетса.
 

Фанат

oncle terrible
Команда форума
тебе надо понять, что такое цикл.
ты не понимаешь, и мне от этого очень больно.
поскольку даже если у тебя будет решение этой частной проблемы, ты споткнёшься на другой такой же.

ты рассматриваешь то, что внутри цикла, как нечто плоское.
ты не понимаешь, что его содержимое постоянно повторяется.

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

пойми, два раза вывод файла писать НЕ НАДО
файл у тебя выводится в цикле
КАК И ВЫВОДИЛСЯ в одну колонку.
не надло трогать вывод файла.
смысл в том, что выводя файл просто своенвременно добавлять код перехода на новую колонку.

-~{}~ 25.03.06 20:59:

знак сравнения в пхп - ==, а не =
 

Myst

Новичок
Действительно ето так хоть как ето и не обидно , кому то ето легко дается , а кому то надо сутками над книгами висеть и все же я не поленился и полез в книги , немного разобрался осталось совсем немножко :) ,
по словам вроде и все просто счетчик , перевод строки но если не знать структуру самого цикла ничего хорошего написать не сможеш , первое в чем я ошибся ето в том же хтмл для построения таблицы нада было <table> вынести за цыкл , ведь при каждом проходе оно создавало новую таблицу получаетса а не столбец , строку, дальше установить количество прокруток цикла (задаю счетчиком) и уже делаю перевод строки через теги:
PHP:
<table border="1"  width="400">
<tr>
<?
$dir = "./images/";
if (is_dir($dir))
 {
   if ($dh = opendir($dir))
	   {
               while (($file = readdir($dh))!==false)
	        {
        
		   $a=$a+1;

                       if($file != "." && $file != "..")
	                {
	    
 ?>
    
 <td  border="1" align="center" bgcolor="FFFFFF"><a href="<?= $file;?>"><?php echo $file?></a></strong></td>
  
  <?php
       
                   if ($a==5)
		       {
		            $a=0;
		             echo "</tr><tr>";
			
	                                }
		  
		        }
    } 
  }
}
closedir($dh);
?>
</table>
но опять же не совсем то что я хотел и думаю не то что вы говорили Фанат , а именно за перевод строки , каким образом еще его можно перевести , ведь получаетса что при таком коде у меня в переменной а задаютса количество столбцов, но не выходит сделать 2 столбца , а ето уже недароботок с моей стороны , можно сделать лучше , я ето знаю и я сделаю , на ето нада только набратса терпения и немного почитать в том месте где надо , конечно же с вашими подсказками :).
 

alekciy

Новичок
Myst
Нахожу такой вариант кода более "читабельным":
PHP:
<table border="1"  width="400"> 
<tr> 
<?php
$dir = "./images/"; 
if (is_dir($dir)) { 
	if ($dh = opendir($dir)) { 
		while (($file = readdir($dh)) !== false) { 
			$a++;
			if($file != "." && $file != "..") {
				print "<td  border=\"1\" align=\"center\" bgcolor=\"FFFFFF\"><a href=\"$file\">$file</a></td>";
				if ($a == 5) {
					$a = 0; 
					echo "</tr><tr>";
				};
			};
		};
	};  
};
closedir($dh); 
?> 
</table>
А вот такой код, по идее, выведет таблицу с N столбцами в каждом столбце по 5 строк.
PHP:
<table border="1"  width="400"> 
<tr> 
<?php
$dir = "./images/"; 
if (is_dir($dir)) { 
	if ($dh = opendir($dir)) { 
		while (($file = readdir($dh)) !== false) { 
			if($file != "." && $file != "..") {
				$a++;
				if ($a == 1) {
					print '<td>';
				};
				print "<a href=\"$file\">$file</a><br>";
				if ($a == 5) {
					$a = 0; 
					print '</td>';
				};
			};
		};
	};  
};
closedir($dh); 
?>
</tr>
</table>
Ну а сообще, мне думается, что прежде чем браться за PHP нужно более подробно ознакомиться с HTML.
 

Myst

Новичок
Нет я не имел ввиду что написать как именно нада перевести хтмл кодом , я хотел спросить в правильном ли направлении двигаюсь , правильно ли понял сам цикл и отталкиватса уже от хтмл чтоб создать форматирование столбцов , строк или можно еще в пхп что то добавить ?
 

Фанат

oncle terrible
Команда форума
то есть, ты думаешь, что столбцы можно форматировать с помощью PHP?
А не перечитать ли тебе фак на танке?
 

Myst

Новичок
Автор оригинала: alekciy
Ну а сообще, мне думается, что прежде чем браться за PHP нужно более подробно ознакомиться с HTML.
Да дело то не в хтмл собственно , таблицу создать просто , не проблема и запухнуть туда данные , для меня проблема была прокрутить ето все через цикл и отформатировать так как я хотел а именно в 2 столбца, спасибо за пример.

-~{}~ 26.03.06 11:37:

Автор оригинала: Фанат
то есть, ты думаешь, что столбцы можно форматировать с помощью PHP?
А не перечитать ли тебе фак на танке?
Ну я же сказал или , ведь пхп помогает в етом форматировании , а именно через иф и счетчик вставлять теги те которые нада , я уже понял после того как прочитал пример alekciy , Фанат тебе отдельное спасибо за то что помог разобратса.
 
Сверху