Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Помогите добавить теги <tr></tr> через определенное количество раз!
 
 автор: idimka   (18.06.2007 в 21:33)   письмо автору
 
 

Друзья, помогите, пожалуйста!
Ниже приведен код, в который мне надо кое-что добавить, но как я не знаю...

В общем, там есть строчка

$str = '<td>-a-</td>'."\r\n";

В ней -a- заменяется на имя файла ($name_file).
Потом эта срочка заменяет тег <tr> на <tr>.$str в файле, который также генерируется нижеприведенным кодом.

Мне очень надо еще вставлять после тега </td>, теги <tr></tr> через определенное количество раз.
Например, через 4 таких строчки <td>-a-</td>'."\r\n", надо вставить одну такую:
<td>-a-</td><tr></tr>'."\r\n".

<?php

$dirname 
'../';

scan_dir($dirname);
 function 
scan_dir($dirname)
 {

  
$dir opendir($dirname);// Открываем текущую директорию
  
while (($file readdir($dir)) !== false)
  {
   if(
$file == '.' && $file != '..')
   {
     if(
is_dir($dirname."/".$file))
     {

      
$name_dir basename ($dirname);//получение имени директории
      

         
$name_str '../'.$name_dir.'.htm';//будующее имя html страницы

         
if (!is_file ($name_str))//если такого файла нет
          
{
           
$shablon_put './shablon_str.txt';//в шаблоне есть всего 2 тега (на разных строках): <tr></tr>

           
$shablon file_get_contents($shablon_put);

           
$fp fopen ($name_str'w+');//создание новых страниц
           
fwrite ($fp$shablon);//запись шаблона
           
fclose ($fp);
          }
     }
   }

   if(
$file != '.' && $file != '..')
   {
       if(
is_file($dirname."/".$file))//если это файл
       
{
         
$name_file basename ($dirname."/".$file);//получение имени файла

         
$str '<td>-a-</td>'."\r\n";
         
$str str_replace ('-a-'$name_file$str);

         
$file file_get_contents ($name_str);
         
$file str_replace ('<tr>''<tr>'."\r\n".$str$file);//происходит замена

         
$fp fopen ($name_str'w+');
         
fwrite ($fp$file);
         
fclose ($fp);
       }

   }

   if(
$file != '.' && $file != '..')
    { if(
is_dir($dirname."/".$file))
     {
     
scan_dir($dirname."/".$file);
     }
    }
  }

  
closedir($dir);// Закрываем директорию
 
}

?>

   
 
 автор: Trianon   (18.06.2007 в 23:00)   письмо автору
 
   для: idimka   (18.06.2007 в 21:33)
 

>Мне очень надо еще вставлять после тега </td>, теги <tr></tr>

Подумайте. Вам этого не надо.

   
 
 автор: idimka   (18.06.2007 в 23:57)   письмо автору
 
   для: Trianon   (18.06.2007 в 23:00)
 

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

Не все-таки это даже единственный путь.
Правда, надо поменять местами эти теги на </tr><tr>, но это сути не меняет.

   
 
 автор: golovdinov   (19.06.2007 в 15:23)   письмо автору
 
   для: idimka   (18.06.2007 в 23:57)
 

Я не очень всматривался в код, но принцип такой: добавляете одну переменную в цикл и каждый раз увеличиваете ее на +1 (если while(), если же for(), то можно и без допю переменной обойтись), а затем (в начале цикла, перед увелечением) ставите строчку

if ($переменная % 4 == 0) print "<tr>";

Если я правильно вас понял, то это работает :)

   
 
 автор: Unkind   (19.06.2007 в 15:41)   письмо автору
 
   для: idimka   (18.06.2007 в 23:57)
 

Правда, надо поменять местами эти теги на </tr><tr>, но это сути не меняет.
Сути не меняет? Ничего себе.

   
 
 автор: idimka   (19.06.2007 в 20:30)   письмо автору
 
   для: Unkind   (19.06.2007 в 15:41)
 

Ваш вариант я не очень понял: что за % (в php я новичок и может задаю глупый вопрос)? И у меня уже есть цикл, если еще один влеплять, то вопрос, с каким условием?

Также у меня был один вариант, вот он:

<?php

$dirname 
'..';

scan_dir($dirname);
 function 
scan_dir($dirname)
 {
  
$colNumber 1;
  
$col 4;

  
$dir opendir($dirname);// Открываем текущую директорию
  
while (($file readdir($dir)) !== false)
  {
   if(
$file == '.' && $file != '..')
   {
     if(
is_dir($dirname."/".$file))
     {

      
$name_dir basename ($dirname);//получение имени директории


         
$name_str '../'.$name_dir.'.htm';//будующее имя html страницы

         
if (!is_file ($name_str))//если такого файла нет
          
{
           
$shablon_put './shablon_str.txt';

           
$shablon file_get_contents($shablon_put);

           
$fp fopen ($name_str'w+');//создание новых страниц
           
fwrite ($fp$shablon);//запись шаблона
           
fclose ($fp);
          }
     }
   }

   if(
$file != '.' && $file != '..')
   {
       if(
is_file($dirname."/".$file))//если это файл
       
{
          if(
$colNumber>0)
          {
         
$name_file basename ($dirname."/".$file);//получение имени файла

         
$str '<td>-a-</td>'."\r\n";
         
$str str_replace ('-a-'$name_file$str);

         
$file file_get_contents ($name_str);
         
$file str_replace ('<tr>''<tr>'."\r\n".$str$file);//происходит замена

         
$fp fopen ($name_str'w+');
         
fwrite ($fp$file);
         
fclose ($fp);
         }
         
$colNumber++;


         if(
$colNumber==$col)
         {

         
$colNumber=0;//строчка вставляется только когда $colNumber=0!

         
$str '<td>-a-</td></tr><tr>'."\r\n";
         
$str str_replace ('-a-'$name_file$str);

         
$file file_get_contents ($name_str);
         
$file str_replace ('<tr>''<tr>'."\r\n".$str$file);//происходит замена

         
$fp fopen ($name_str'w+');
         
fwrite ($fp$file);
         
fclose ($fp);
         }
       }

   }

   if(
$file != '.' && $file != '..')
    { if(
is_dir($dirname."/".$file))
     {
     
scan_dir($dirname."/".$file);
     }
    }
  }

  
closedir($dir);// Закрываем директорию
 
}

?>


НО! Большая проблема в дописывании этих тегов (</tr><tr>, и все-таки нет разницы как они стоят, так или так: <tr></tr>).
У меня в файлы записывается все фиг знает как и фиг знает сколько.

   
 
 автор: bronenos   (19.06.2007 в 20:54)   письмо автору
 
   для: idimka   (19.06.2007 в 20:30)
 

выражение с процентом считает остаток от деления

   
 
 автор: idimka   (20.06.2007 в 23:45)   письмо автору
 
   для: bronenos   (19.06.2007 в 20:54)
 

Сегодня наконец-то понял суть этих процентов.
Добавил это в код, но работает не так как надо... :(
</tr><tr> вставляются не через 4 строчки, а через 3 или 9, плюс имена файлов повторяются по несколько раз.

Помогите, пожалуйста разобраться!

Вот немного измененный код (с учетом поста golovdinova, спасибо Вам большое за хорошую идею).


<?php

$dirname 
'..';

scan_dir($dirname);
 function 
scan_dir($dirname)
 {
  
$i=0;
  
$dir opendir($dirname);// Открываем текущую директорию
  
while (($file readdir($dir)) !== false)
  {
   if(
$file == '.' && $file != '..')
   {
     if(
is_dir($dirname."/".$file))
     {

      
$name_dir basename ($dirname);//получение имени директории


         
$name_str '../'.$name_dir.'.php';//будующее имя html страницы

         
if (!is_file ($name_str))//если такого файла нет
          
{
           
$shablon_put './shablon_str.txt';

           
$shablon file_get_contents($shablon_put);

           
$fp fopen ($name_str'w+');//создание новых страниц
           
fwrite ($fp$shablon);//запись шаблона
           
fclose ($fp);
          }
     }
   }

   if(
$file != '.' && $file != '..')
    {
       if(
is_file($dirname."/".$file))//если это файл
       
{
         
$i++;
         if(
$i%4!==0$str "<td>-a-</td>";
         else 
$str "<td>-a-</td></tr><tr>";

         
$name_file basename ($dirname."/".$file);//получение имени файла
         
$str str_replace ('-a-'$name_file$str);

         
$file file_get_contents ($name_str);
         
$file str_replace ('<tr>''<tr>'."\r\n".$str$file);//происходит замена

         
$fp fopen ($name_str'w+');
         
fwrite ($fp$file);
         
fclose ($fp);
      }
    }



   if(
$file != '.' && $file != '..')
    { if(
is_dir($dirname."/".$file))
     {
     
scan_dir($dirname."/".$file);
     }
    }
  }

  
closedir($dir);// Закрываем директорию
 
}

?>

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования