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

Форум PHP

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

 

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

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

тема: как автоматически создавать "ровные файлы"
 
 автор: CrazyAngel   (23.10.2006 в 22:17)   письмо автору
 
 

ну например как в базе таблицу показывает

+----+------------+
| id | name       |
+----+------------+
| 0  | CrazyAngel |
| 1  | cheops     |
+----+------------+

   
 
 автор: cheops   (23.10.2006 в 23:11)   письмо автору
 
   для: CrazyAngel   (23.10.2006 в 22:17)
 

Не понятна связь между таблицами и файлами?

   
 
 автор: Trianon   (24.10.2006 в 00:35)   письмо автору
 
   для: CrazyAngel   (23.10.2006 в 22:17)
 


$meta = mysql_fetch_field($result, 'name');
$name_width = $meta->max_length;

   
 
 автор: CrazyAngel   (24.10.2006 в 14:34)   письмо автору
 
   для: Trianon   (24.10.2006 в 00:35)
 

связи нет, просто охота так же красиво ровно, столбцами записывать в файл...

   
 
 автор: Trianon   (24.10.2006 в 16:05)   письмо автору
 
   для: CrazyAngel   (24.10.2006 в 14:34)
 

Какие данные Вы собираетесь писать?

   
 
 автор: Drago   (24.10.2006 в 18:57)   письмо автору
 
   для: CrazyAngel   (24.10.2006 в 14:34)
 

попробуйте такой скрипт:

<?php
function str1($sc,$sg,$br,$numid,$numname)
    {
    echo 
$sc;
    for(
$i=0;$i<$numid+2;$i++) echo $sg;
    echo 
$sc;
    for(
$i=0;$i<$numname+2;$i++) echo $sg;
    echo 
$sc.$br;
    }

function 
str2($sv,$sp,$br,$numid,$numname,$id,$name)
    {
    
$numspid=$numid+2-strlen($id)-1;
    
$numspname=$numname+2-strlen($name)-1;
    echo 
$sv.$sp.$id;
    for(
$i=0;$i<$numspid;$i++) echo $sp;
    echo 
$sv.$sp.$name;
    for(
$i=0;$i<$numspname;$i++) echo $sp;
    echo 
$sv.$br;
    }

$names=array("Runar","Drago","Vitek","korefan","krok-m","hin","Саня","matrix-ukr","tAleks","2plait",
        
"bahus","Trianon","Denis Gorby","Bogus","12345");

$sg="-";
$sv="|";
$sc="+";
$sp=" ";
$br="\n";
$numid=strlen(count($names));
$numname=2;

foreach (
$names as $name)
    if (
strlen($name)>$numname$numname=strlen($name);

ob_start();
str1($sc,$sg,$br,$numid,$numname);
str2($sv,$sp,$br,$numid,$numname,"id","name");
str1($sc,$sg,$br,$numid,$numname);

foreach (
$names as $key => $name)
    
str2($sv,$sp,$br,$numid,$numname,$key+1,$name);

str1($sc,$sg,$br,$numid,$numname);
$buffer=ob_get_contents();
ob_end_clean();

$fp=fopen("file.txt","w");
fwrite($fp,$buffer);
fclose($fp);
?>

   
 
 автор: CrazyAngel   (27.10.2006 в 11:03)   письмо автору
 
   для: Drago   (24.10.2006 в 18:57)
 

То что надо, но если не трудно объясните как оно работает)))

   
 
 автор: Drago   (27.10.2006 в 13:05)   письмо автору
 
   для: CrazyAngel   (27.10.2006 в 11:03)
 

Надеюсь, все понятно будет. :)

<?php
//функция выводит разделительную горизонтальную полосу
function str1($sc,$sg,$br,$numid,$numname)
    {
    
//открывающий символ
    
echo $sc;
    
//в цикле выводим нужное количество основных символов для столбца 1
    
for($i=0;$i<$numid+2;$i++) echo $sg;
    
//закрывающий и открывающий одновременно символ
    
echo $sc;
    
//снова выводим нужное количество основных символов, уже для столбца 2
    
for($i=0;$i<$numname+2;$i++) echo $sg;
    
//закрывающий символ и перевод строки
    
echo $sc.$br;
    }

//функция выводит данные и вертикальные разделители
function str2($sv,$sp,$br,$numid,$numname,$id,$name)
    {
    
//вычисляем количество пробелов после выводимого слова до границы столбца 1
    
$numspid=$numid+2-strlen($id)-1;
    
//вычисляем количество пробелов после выводимого слова до границы столбца 2
    
$numspname=$numname+2-strlen($name)-1;
    
//вертикальный символ, пробел и порядковый номер записи
    
echo $sv.$sp.$id;
    
//выводим в цикле нужное количество пробелов
    
for($i=0;$i<$numspid;$i++) echo $sp;
    
//вертикальный символ, пробел и нужное слово
    
echo $sv.$sp.$name;
    
//выводим в цикле нужное количество пробелов
    
for($i=0;$i<$numspname;$i++) echo $sp;
    
//вертикальный символ и перевод строки
    
echo $sv.$br;
    }

//массив данных
$names=array("Runar","Drago","Vitek","korefan","krok-m","hin","Саня","matrix-ukr","tAleks","2plait",
        
"bahus","Trianon","Denis Gorby","Bogus","12345");

//основной символ горизонтальной полосы
$sg="-";
//основной символ вертикальной полосы
$sv="|";
//открывающий и закрывающий символ
$sc="+";
//символ пробела. если выводится в браузер, то заменить на &nbsp;
$sp=" ";
//символ перевода строки. если выводится в браузер, то заменить на <br>
$br="\n";
//название столбца 1
$col1="id";
//название столбца 2
$col2="name";

//вычисляем длину самого большого значения столбца 1
if (strlen(count($names))>strlen($col1)) $numid=strlen(count($names));
else 
$numid=strlen($col1);

//вычисляем длину самого большого значения столбца 2
$numname=strlen($col2);
foreach (
$names as $name)
    if (
strlen($name)>$numname$numname=strlen($name);

//открываем запись в буфер
ob_start();
//выводим горизонтальную полосу
str1($sc,$sg,$br,$numid,$numname);
//выводим названия столбцов
str2($sv,$sp,$br,$numid,$numname,$col1,$col2);
//выводим горизонтальную полосу
str1($sc,$sg,$br,$numid,$numname);

//прогоняя массив данных, ваводим его содержимое
foreach ($names as $key => $name)
    
str2($sv,$sp,$br,$numid,$numname,$key+1,$name);

//выводим горизонтальную полосу
str1($sc,$sg,$br,$numid,$numname);
//записываем содержимое буфера в переменную 
$buffer=ob_get_contents();
ob_end_clean();

//записываем переменную в файл
$fp=fopen("file.txt","w");
fwrite($fp,$buffer);
fclose($fp);
?>

   
Rambler's Top100
вверх

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