Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с CSV, обработка второго столбца 
:(
    Опции темы
sanitarn
Дата 5.3.2015, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 3.10.2014

Репутация: нет
Всего: нет



Всем привет, видимо этот вопрос поднимался и не раз, но я по крайней мере не нашел.
Имею файл CSV, в нём 2 столбца А и Б,  я получаю  и вывожу данные через fgetcsv.
Далее мне нужно:
1. Работать со вторым столбцом
2. После обработки вывести данные в CSV А и Б столбца + доп столбец после обработки

Наглядно, в файле лежит:
запрос; 2321312231

На выходе хочу работать только со строками 2321312231

И после вывести
запрос; 2321312231 ; xxxxxx
PM MAIL   Вверх
ksnk
Дата 5.3.2015, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Что сделано? Что не получается?


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
sanitarn
Дата 5.3.2015, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 3.10.2014

Репутация: нет
Всего: нет



Код

    $row = 1;
    $handle = fopen("img/scipt_test.csv", "r");
    while (($data = fgetcsv($handle,"10000", ";")) !== FALSE) {
    $num = count($data);
    echo "<p> $num полей в строке $row: <br /></p>\n";
    $row++;
    for ($c=0; $c < $num; $c++) {
        echo $data[$c] . "<br />\n";

    }
}
fclose($handle);


Банально до меня пока не доходит, как работать именно отдельно с первым и вторым полем в каждой строке,  вот выводится:
 2 полей в строке 1:
rtetet
345345

2 полей в строке 2:
ertertert
354435

2 полей в строке 3:
ertertert
354

Это сообщение отредактировал(а) sanitarn - 5.3.2015, 16:27
PM MAIL   Вверх
ksnk
Дата 5.3.2015, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Цитата(sanitarn @  5.3.2015,  14:40 Найти цитируемый пост)
1. Работать со вторым столбцом

C момента чтения данных (3 строка), "второй столбец" находится в $data[1]
 
Цитата(sanitarn @  5.3.2015,  14:40 Найти цитируемый пост)
После обработки вывести данные в CSV А и Б столбца + доп столбец после обработки

функция fputcsv подходит?


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
sanitarn
Дата 5.3.2015, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 3.10.2014

Репутация: нет
Всего: нет



Цитата(ksnk @  5.3.2015,  16:27 Найти цитируемый пост)
C момента чтения данных (3 строка), "второй столбец" находится в $data[1]

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

Вопрос, почему дублирует данные при выводе 2 раза?

Это сообщение отредактировал(а) sanitarn - 5.3.2015, 16:34
PM MAIL   Вверх
ksnk
Дата 5.3.2015, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Цитата(sanitarn @  5.3.2015,  16:31 Найти цитируемый пост)
Вопрос, почему дублирует данные при выводе 2 раза?
А код не менялся? Или csv какой-то неправильный.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
sanitarn
Дата 5.3.2015, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 3.10.2014

Репутация: нет
Всего: нет



Цитата(ksnk @  5.3.2015,  16:42 Найти цитируемый пост)
А код не менялся? Или csv какой-то неправильный. 

Код не менялся, но я более внимательно посмотрю ближе к вечеру и отпишу. 

PM MAIL   Вверх
sanitarn
Дата 6.3.2015, 00:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 3.10.2014

Репутация: нет
Всего: нет



Возвращаюсь к проблеме, почему дублируется вывод?
Код

    $row = 1;
    $handle = fopen("img/file.csv", "r");
    while (($data = fgetcsv($handle,"5", ";")) !== FALSE) {
    $num = count($data);
    echo "<p> $num полей в строке $row: <br /></p>\n";
    $row++;
    for ($c=0; $c < $num; $c++) {
       // echo $data[$c] . "<br />\n";
        //$keywords = $data[0]."<br />\n";
        $wordstat =  $data[1]."<br />\n";
        
        if ($data[0] == true) {
            
        echo $data[0] ;
            
        }
       

    }
}
fclose($handle);


Выводит так:
Код

 2 полей в строке 1:
кондиционеркондиционер

2 полей в строке 2:
работаработа

2 полей в строке 3:
ноутбукноутбук

2 полей в строке 4:
часычасы

2 полей в строке 5:
мышкамышка


Я правильно понимаю, дублируется потому что, счетчик идет с ноля? Ну почему именно счетчик должен был быть с единицы? Потому что в файле идет он с 1 чтоле? Разве не с ноля?

Это сообщение отредактировал(а) sanitarn - 6.3.2015, 00:47
PM MAIL   Вверх
ksnk
Дата 6.3.2015, 08:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



в каком месте он дублируется? `дублируется`- значит что-то повторяется два и более раз. Дублируется вывод - значит в выводе есть 2 и более повторяющиеся строчки. Они точно есть?


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
sanitarn
Дата 6.3.2015, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 3.10.2014

Репутация: нет
Всего: нет



Цитата(ksnk @  6.3.2015,  08:16 Найти цитируемый пост)
в каком месте он дублируется? `дублируется`- значит что-то повторяется два и более раз. Дублируется вывод - значит в выводе есть 2 и более повторяющиеся строчки. Они точно есть? 

Я ведь полностью код привел выше, с выводом полей. При записи for ($c=1; $c < $num; $c++) не дублируется, при записи for ($c=0; $c < $num; $c++) дублируется

PM MAIL   Вверх
ksnk
Дата 6.3.2015, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Код

    for ($c=0; $c < $num; $c++) {
       // echo $data[$c] . "<br />\n";
        //$keywords = $data[0]."<br />\n";
        $wordstat =  $data[1]."<br />\n";

Дублируется, потому, что в строке 2 элемента, а выводится всегда один и тот-же.

$data[$c], Может так надо было написать? 
Зачем вообще нужен в коде этот цикл, если нужное значение и так уже доступно?


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
sanitarn
Дата 6.3.2015, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 3.10.2014

Репутация: нет
Всего: нет




Цитата(ksnk @  6.3.2015,  11:19 Найти цитируемый пост)
Дублируется, потому, что в строке 2 элемента, а выводится всегда один и тот-же.

Тут понятно, спс


Цитата(ksnk @  6.3.2015,  11:19 Найти цитируемый пост)
$data[$c], Может так надо было написать? 
Зачем вообще нужен в коде этот цикл, если нужное значение и так уже доступно? 

Ну так код взят по умолчанию с мануала.
У меня задача вообще такая:
1. Имею форму данных с чекбоксами
2. Имею файл для загрузки
3. Мне нужно проставить чекбоксы
4. Загрузить файл 
5. Открыть файл и со вторым элементом произвести ряд манипуляций по сложению и вычитанию
6. Записываю в файл данные 1 элемента, 2 элемента и 3 нового элемента, для которого производился расчет.
7. Вывожу результат.

Вопрос, я неправильно выбрал функцию для данной обработки информации?

PM MAIL   Вверх
sanitarn
Дата 6.3.2015, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 3.10.2014

Репутация: нет
Всего: нет



Уже походу написал, нужно было просто структурировать информацию, тогда получается не кусками и обрывками код писать.
Получилось как то так:
Код

<?

//include $_SERVER['DOCUMENT_ROOT']."/calculator.php";
$mime_type_file  = "text/csv";

//Загрузка файла

   if($_FILES["keywords_csv"]["size"] > 1024*3*1024)
   {
     echo ("Размер файла превышает три мегабайта");
     exit;
   }

   // Проверяем тип файла

    if($_FILES["keywords_csv"]["type"] == $mime_type_file)
   {
     echo ("Файл не является CSV");
     exit;
   }
   // Проверяем загружен ли файл
   if(is_uploaded_file($_FILES["keywords_csv"]["tmp_name"]))
   {
     // Если файл загружен успешно, перемещаем его
     // из временной директории в конечную
     move_uploaded_file($_FILES["keywords_csv"]["tmp_name"], "img/".$_FILES["keywords_csv"]["name"]);
   } else {
      echo("Ошибка загрузки файла");
   }
     // Присваеваем файлу переменную
   $keywords_csv = $_FILES["keywords_csv"]["name"];
   // выводим имя залитого файла
   echo $keywords_csv;


   // Работаем с файлом CSV  ЗДЕСЬ ТУПИК

    $row = 1;
    $handle = fopen("img/scipt_test.csv", "r");
    while (($data = fgetcsv($handle,"", ";")) !== FALSE) {
    $keywords = $data[0];
    $wordstat = $data[1] ;






$site_url = $_POST["site_url"];
//$keywords = $_POST["keywords"]; // Работаем через загрузку файла
//$wordstat = $_POST["wordstat"]; // Работаем через загрузку файла
$age = $_POST["age"];
$backlink_history = $_POST["backlink_history"];
$page_index = $_POST["page_index"];
$anchor_page = $_POST["anchor_page"];
$trast_site = $_POST["trast_site"];
$competition = $_POST["competition"];


//Частотность запроса
    if ($wordstat < 100)
{
    $result = 2;
    //echo $result;
}
    else {
        if ($wordstat>100 and $wordstat<1000) {
    $result = 3;
    //echo $result;
}
    else {
        if ($wordstat>1000 and $wordstat<5000) {
    $result = 4;
    //echo $result;
}
    else {
        if ($wordstat>5000 and $wordstat<10000) {
    $result = 5;
    //echo $result;
}
    else {
        if ($wordstat>10000) {
    $result = 6;
    //echo $result;


}
}
}
}
}
// Возраст сайта
    if ($age < 1)
{
    $result_age = 2;
    //echo "$result_age";
}
    else {
        if ($age>=1 and $age<2) {
    $result_age = 1.4;
    //echo "$result_age";
}
    else {
        if ($age>=2) {
    $result_age = 1;
    //echo "$result_age";
}
}
}

 // Число ссылок на сайт

    if ($backlink_history == 1)
{
    $result_backlink_history = 0;
    //echo $result_backlink_history;
}
    else {
        if ($backlink_history == 2) {
    $result_backlink_history = 2;
    //echo $result_backlink_history;
}
}
   // Количество страниц в индексе Я
    if ($page_index ==  1)
{
    $result_page_index = 0;
    //echo $result_page_index;
}
    else {
        if ($page_index == 2) {
    $result_page_index = 1;
    //echo $result_page_index;
}
}

// Количество релевантных страниц, стоит ли писать тексты
    if ($anchor_page == 1)
{
    $result_anchor_page = 1;
    //echo $result_anchor_page;
}
    else {
        if ($anchor_page == 2) {
    $result_anchor_page = 0;
    //echo $result_anchor_page;
}
}



// Траст сайта
    if ($trast_site == 5)
{
    $result_trast_site = 0;
    //echo $result_trast_site;
}
    else {
        if ($trast_site == 4) {
    $result_trast_site = 1;
    //echo $result_trast_site;
    }
    else {
        if ($trast_site == 3) {
    $result_trast_site = 2;
    //echo $result_trast_site;
    }
        else {
        if ($trast_site == 2) {
    $result_trast_site = 12;
    //echo $result_trast_site;


}
}
}
}


// Конкуренция
    if ($competition == 3)
{
    $result_competition = 2;
    //echo $result_trast_site;
}
    else {
        if ($competition == 2) {
    $result_competition = 1;
    //echo $result_trast_site;
    }
    else {
        if ($competition == 1) {
    $result_competition = 0;
    //echo $result_trast_site;
    }
 }
 }


echo "<br />"  ;
echo "сайт &nbsp;" .($_POST["site_url"]."<br>");
echo "Запрос&nbsp;" .($_POST["keywords"]."<br>");
echo "Частотность&nbsp;" .($_POST["wordstat"]."<br>");
echo "Возраст&nbsp;" .($_POST["age"]."<br>");
echo "история&nbsp;" .($_POST["backlink_history"]."<br>");
echo "Страниц &nbsp;" .($_POST["page_index"]."<br>");
echo "контент&nbsp;" .($_POST["anchor_page"]."<br>");
echo "Траст&nbsp;" .($_POST["trast_site"]."<br>");
echo "Конкурентность&nbsp;" .($_POST["competition"]."<br>");
$summa = ($result * $result_age) + $result_backlink_history + $result_page_index + $result_anchor_page + $result_trast_site + $result_competition;

echo "Ваш запрос \"$keywords\"  с частотностью $wordstat выйдет в топ через $summa месяцев" ;

      $row++;

}
fclose($handle);




?>


Осталось запись и вывод файла. Жду комменты профессионалов, в моей криворукости в кодинге.

Это сообщение отредактировал(а) sanitarn - 6.3.2015, 12:23
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0899 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.