ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование_OLD > PHP, PERL, MySQL, JavaScript
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 05.12.2008, 18:05
dk-ne
Познающий
Регистрация: 21.01.2007
Сообщений: 69
Провел на форуме:
211655

Репутация: 4
По умолчанию

А как такой вариант решения первого вопроса: <?php
$file = $_POST['file'];
$csv_lines = file("book1.csv");
if(is_array($csv_lines))
{
//разбор csv
$cnt = count($csv_lines);
for($i = 0; $i < $cnt; $i++)
{
$line = $csv_lines[$i];
$line = trim($line);
//указатель на то, что через цикл проходит первый символ столбца
$first_char = true;
//номер столбца
$col_num = 0;
$length = strlen($line);
for($b = 0; $b < $length; $b++)
{
//переменная $skip_char определяет обрабатывать ли данный символ
if($skip_char != true)
{
//определяет обрабатывать/не обрабатывать строку
///print $line[$b];
$process = true;
//определяем маркер окончания столбца по первому символу
if($first_char == true)
{
if($line[$b] == '"')
{
$terminator = '";';
$process = false;
}
else
$terminator = ';';
$first_char = false;
}

//просматриваем парные кавычки, опредляем их природу
if($line[$b] == '"')
{
$next_char = $line[$b + 1];
//удвоенные кавычки
if($next_char == '"')
$skip_char = true;
//маркер конца столбца
elseif($next_char == ';')
{
if($terminator == '";')
{
$first_char = true;
$process = false;
$skip_char = true;
}
}
}

//определяем природу точки с запятой
if($process == true)
{
if($line[$b] == ';')
{
if($terminator == ';')
{

$first_char = true;
$process = false;
}
}
}

if($process == true)
$column .= $line[$b];

if($b == ($length - 1))
{
$first_char = true;
}

if($first_char == true)
{

$values[$i][$col_num] = $column;
$column = '';
$col_num++;
}
}
else
$skip_char = false;
}
}
}
var_dump($values);

?>
 

  #12  
Старый 19.01.2009, 00:32
dk-ne
Познающий
Регистрация: 21.01.2007
Сообщений: 69
Провел на форуме:
211655

Репутация: 4
По умолчанию

Так никто не возьмется?
 

  #13  
Старый 19.01.2009, 03:16
t4Nk
Познающий
Регистрация: 23.09.2007
Сообщений: 75
Провел на форуме:
938032

Репутация: 86
По умолчанию

dk-ne, опиши подробнее.
из того что ты написал я понял след.:
исходные данные хранятся в файле xls. В таблице две колонки: первая с какими-то данными, вторая содержит ФИО, разделенные пробелами.
Нужно:
1. сделать форму, через которую этот самый файл .xls загружается на сервер
2. распарсить данные из файла: 1-й столбец добавить в 1-й столбец в базе данных, а 2-й разбить на три столбца (фамилия имя отчество) и также тремя столбцами занести в базу данных.
т.е. было в файле |Данные|ФИО|, а стало в базе данных так |Данные|Фамилия|Имя|Отчеств о|
если так то держи

Последний раз редактировалось t4Nk; 19.01.2009 в 17:09..
 

  #14  
Старый 20.01.2009, 19:57
dk-ne
Познающий
Регистрация: 21.01.2007
Сообщений: 69
Провел на форуме:
211655

Репутация: 4
По умолчанию

Цитата:
Сообщение от t4Nk  
dk-ne, опиши подробнее.
из того что ты написал я понял след.:
исходные данные хранятся в файле xls. В таблице две колонки: первая с какими-то данными, вторая содержит ФИО, разделенные пробелами.
Нужно:
1. сделать форму, через которую этот самый файл .xls загружается на сервер
2. распарсить данные из файла: 1-й столбец добавить в 1-й столбец в базе данных, а 2-й разбить на три столбца (фамилия имя отчество) и также тремя столбцами занести в базу данных.
т.е. было в файле |Данные|ФИО|, а стало в базе данных так |Данные|Фамилия|Имя|Отчеств о|
если так то держи
Все правильно. Сейчас проверю и отпишусь...
 

  #15  
Старый 20.01.2009, 20:19
mff
Познавший АНТИЧАТ
Регистрация: 12.03.2008
Сообщений: 1,379
Провел на форуме:
5866479

Репутация: 1809


Отправить сообщение для mff с помощью ICQ
По умолчанию

dk-ne, я делал так, экспортировал из Excel в CSV формат, кидал на хост в папку и парсером выводил на сайте.

PHP код:
    <?php
    
include("admin/config.php");
        
$result mysql_query ("SELECT `csv` FROM `doc_cl` WHERE `id`='".$id."'");
        
$row mysql_fetch_array ($result);
    
    
    
    
    if(
$row["csv"]!=""){
    echo 
'<div style="margin:20px 0px 0px 0px;">';
    echo 
'<table width="100%" border="0" cellspacing="1" cellpadding="2" bgcolor="#000000">';    
    
$r 0;
        @
$handle fopen("docs/".$row["csv"], "r");
        if(
$handle){
            while ((
$data fgetcsv($handle'1000''#''"')) !== FALSE) {
                
$num count($data);
                
//print_r ($data);    
                //echo "<p> $num полей в строке $row: <br /></p>\n";
                
$r++;
                for (
$c=0;  $c $num$c++) {
                    
$pieces explode(";"$data[$c]);
                    
$num_tdcount($pieces)-1;
                    
//echo $num_td;        
                    
if($r==1){
                        echo 
'<tr><td class="td2" height="40" align="center" width="*" style="font-weight:bold;">'.$pieces[0].'</td>';
                        for (
$i2 0$i2 $num_td$i2++) {        
                            echo
'<td class="td2" align="center" width="13%" style="font-weight:bold;">'.$pieces[$i2+1].'</td>';
                        }
                        echo
'</tr>';
                    }    
                    if (
is_int($r/2) && $r!=1) {
                        echo 
'<tr><td class="td1" style="padding-left:20px;">'.$pieces[0].'</td>';
                        for (
$i 0$i $num_td$i++) {
                            echo
'<td class="td1" align="center">'.$pieces[$i+1].'</td>';
                        }
                        echo
'</tr>';
                    }
                    if (!
is_int($r/2) && $r!=1) {
                        echo 
'<tr><td class="td2" style="padding-left:20px;">'.$pieces[0].'</td>';
                        for (
$i 0$i $num_td$i++) {
                            echo
'<td class="td2" align="center">'.$pieces[$i+1].'</td>';
                        }
                        echo
'</tr>';
                    }
                } 
// for
            
}//while
            //fclose($handle);
            
echo'</table>';
         }
//if($handle)
    
    
echo '</div>';
}
       
?>
на поковыряй, вот стили:

Код HTML:
.td1{background-color:#f0ece8;}
.td2{background-color:#ffffff;}
 

  #16  
Старый 31.01.2009, 05:56
dk-ne
Познающий
Регистрация: 21.01.2007
Сообщений: 69
Провел на форуме:
211655

Репутация: 4
По умолчанию

Цитата:
Сообщение от t4Nk  
dk-ne, опиши подробнее.
из того что ты написал я понял след.:
исходные данные хранятся в файле xls. В таблице две колонки: первая с какими-то данными, вторая содержит ФИО, разделенные пробелами.
Нужно:
1. сделать форму, через которую этот самый файл .xls загружается на сервер
2. распарсить данные из файла: 1-й столбец добавить в 1-й столбец в базе данных, а 2-й разбить на три столбца (фамилия имя отчество) и также тремя столбцами занести в базу данных.
т.е. было в файле |Данные|ФИО|, а стало в базе данных так |Данные|Фамилия|Имя|Отчеств о|
если так то держи
С маленькими таблицами работает хорошо. При большой таблице, как у меня, пишет, что File not exist. Хотя файл загружает.
 

  #17  
Старый 31.01.2009, 19:18
t4Nk
Познающий
Регистрация: 23.09.2007
Сообщений: 75
Провел на форуме:
938032

Репутация: 86
По умолчанию

dk-ne, если возможно, выложи пример своей таблицы.
 

  #18  
Старый 01.02.2009, 02:13
dk-ne
Познающий
Регистрация: 21.01.2007
Сообщений: 69
Провел на форуме:
211655

Репутация: 4
По умолчанию

Цитата:
Сообщение от t4Nk  
dk-ne, если возможно, выложи пример своей таблицы.
http://depositfiles.com/files/ixvgs2rst
сам понимаешь, что это не оригинал
 

  #19  
Старый 01.02.2009, 13:34
t4Nk
Познающий
Регистрация: 23.09.2007
Сообщений: 75
Провел на форуме:
938032

Репутация: 86
По умолчанию

Цитата:
Сообщение от dk-ne  
http://depositfiles.com/files/ixvgs2rst
сам понимаешь, что это не оригинал
хм, на LightTPD/1.4.20-1; php 5.2.8 fcgi; MySQL 5.0.45 нормально добавились все строки.

в общем обновил класс, подправил немного сам скрипт, должно работать

http://depositfiles.com/files/05yo6vjf8
 
 





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ