PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (2): [1] 2 »

> Найдено сообщений: 22
skruglikov Отправлено: 26 Января, 2017 - 23:18:54 • Тема: Игнорируется последнее поле при разборе CSV файла • Форум: Вопросы новичков

Ответов: 10
Просмотров: 686
Evgeniii пишет:
Ошибка именно в этой функции где-то


функция работает правильно даже с вашими данными csv-файла!

можете протестировать код ниже, только укажите ваш файл...
PHP:
скопировать код в буфер обмена
  1.  
  2.         $handle = @fopen("example.csv", "r");
  3.  
  4.         if ($handle) {
  5.                 while (($buffer = _fgetcsv($handle, 1000, ";", "\"" )) !== false) {
  6.                         echo "<pre>";
  7.                         print_r($buffer);
  8.                         echo "</pre>";
  9.                 }
  10.         }
  11.  
  12.     function _fgetcsv($f, $length, $d=",", $q='"') {
  13.             $list = array();
  14.             $st = fgets($f, $length);
  15.             if ($st === false || $st === null) return $st;
  16.             while ($st !== "" && $st !== false) {
  17.                     if ($st[0] !== $q) {
  18.                             # Non-quoted.
  19.                            list ($field) = explode($d, $st, 2);
  20.                             $st = substr($st, strlen($field)+strlen($d));
  21.                     } else {
  22.                             # Quoted field.
  23.                            $st = substr($st, 1);
  24.                             $field = "";
  25.                             while (1) {
  26.                                     # Find until finishing quote (EXCLUDING) or eol (including)
  27.                                    preg_match("/^((?:[^$q]+|$q$q)*)/sx", $st, $p);
  28.                                     $part = $p[1];
  29.                                     $partlen = strlen($part);
  30.                                     $st = substr($st, strlen($p[0]));
  31.                                     $field .= str_replace($q.$q, $q, $part);
  32.                                     if (strlen($st) && $st[0] === $q) {
  33.                                             # Found finishing quote.
  34.                                            list ($dummy) = explode($d, $st, 2);
  35.                                             $st = substr($st, strlen($dummy)+strlen($d));
  36.                                             break;
  37.                                     } else {
  38.                                             # No finishing quote - newline.
  39.                                            $st = fgets($f, $length);
  40.                                     }
  41.                             }
  42.  
  43.                     }
  44.                     $list[] = $field;
  45.             }
  46.             return $list;
  47.     }
  48.  
skruglikov Отправлено: 25 Января, 2017 - 20:12:49 • Тема: Нужна помощь с PHP парсером • Форум: Вопросы новичков

Ответов: 3
Просмотров: 510
вы не туда смотрите!
вам нужно открыть страницу с которой вы хотите спарсить контент, не код фреймворка.
(Добавление)
расскажите что вы хотите взять со страницы, к примеру http://www[dot]fcenter[dot]ru/product/go[dot][dot][dot]aniya_FSP_NB_V65
???
skruglikov Отправлено: 25 Января, 2017 - 12:40:23 • Тема: Игнорируется последнее поле при разборе CSV файла • Форум: Вопросы новичков

Ответов: 10
Просмотров: 686
Evgeniii пишет:
Файл читается и записывается, но в конце каждой строки после идентификатора нет разделителя, как мне его добавить при записи?


вам необходимо открыть файл fopen, с помощью цикла пробежать по строкам, причем строка вы возвращаете в переменную И добавляете ваш разделитель ";", выглядит примерно так:

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2.  
  3.         $handle = @fopen("input.csv", "r");
  4.         $output = @fopen("output.csv", "a");
  5.  
  6.         if ($handle) {
  7.                 while (($buffer = fgets($handle, 4096)) !== false) {
  8.                         $string = $buffer . ";\r";
  9.                         fwrite($output, $string);
  10.                 }
  11.         }
  12.  
  13.  


но вообще ничего в конец добавлять не нужно... вам в основном коде нужно найти строку, где происходит обработка Идентификатора и проверить там переменные! ведь у вас в массиве $data все данные есть, ну на сколько я понял...
skruglikov Отправлено: 25 Января, 2017 - 12:10:36 • Тема: Выпадающие списки • Форум: Вопросы новичков

Ответов: 12
Просмотров: 922
если человек в форме выберет имя И ЛЮБОЕ другое значение из соседних списков, не соответствующее имени! то вам ничего не прийдет из базы данных!!! результат будет только если у вас, вдруг, совпадут все 3 значения для одного имени!

т.е. у вас не поиск по ключевому слову, а просто полное соответствие!

чтобы работала ваша конструкция, необходимо изменить в запросе "AND" -> "OR"! в этом случае вам будут возвращаться любые соответствия

CODE (htmlphp):
скопировать код в буфер обмена
  1. $query1="select * from `Teacher` where name=$name OR  fam=$fam OR  year=$year";
skruglikov Отправлено: 25 Января, 2017 - 09:51:39 • Тема: Bootstrap иконки в списке • Форум: HTML, Дизайн & CSS

Ответов: 5
Просмотров: 1080
немного исправил: http://codepen[dot]io/skruglikov/pen/PWKNgw
skruglikov Отправлено: 25 Января, 2017 - 09:44:35 • Тема: Нужна помощь с PHP парсером • Форум: Вопросы новичков

Ответов: 3
Просмотров: 510
откройте dom-модель и посмотрите как выводится нужная вам информация!
при необходимости измените код в соответствии с элементами, представляющие ваш контент.
если не ошибаюсь относительно вашего парсера, вот хелп по нему:
http://simplehtmldom[dot]sourceforge[dot]net/
skruglikov Отправлено: 25 Января, 2017 - 09:18:42 • Тема: Bootstrap иконки в списке • Форум: HTML, Дизайн & CSS

Ответов: 5
Просмотров: 1080
3d_killer пишет:
спасибо, думал об этом, получается что спаны будут залазить на соседний див, ну да ладно


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

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. ul { margin-left: 25px; }
  3.  
skruglikov Отправлено: 24 Января, 2017 - 23:33:33 • Тема: Bootstrap иконки в списке • Форум: HTML, Дизайн & CSS

Ответов: 5
Просмотров: 1080
простое решение: http://codepen[dot]io/skruglikov/pen/PWKNgw
skruglikov Отправлено: 24 Января, 2017 - 19:24:47 • Тема: Bootstrap горизонтальное меню • Форум: HTML, Дизайн & CSS

Ответов: 2
Просмотров: 924
выложите код где-то на https://jsfiddle[dot]net/
или http://codepen[dot]io/pen/ — тут даже можно подключить bootstap
skruglikov Отправлено: 24 Января, 2017 - 18:01:54 • Тема: mysql + html таблица • Форум: SQL и Архитектура БД

Ответов: 3
Просмотров: 52
а по какому принципу должен второй столбик создаваться?
skruglikov Отправлено: 24 Января, 2017 - 12:13:47 • Тема: Получение ID номера вместо логина • Форум: Вопросы новичков

Ответов: 9
Просмотров: 573
zamut пишет:
Где в сети можно посмотреть хотя бы приблизительный пример реализации этого в коде?


когда-то делал простой генератор артикулов для товаров... дело в том, что у заказчика были товары, и по счастливой случайности, ни одного артикула, что не совсем то кашерно ;)

логика, простая до безобразия... в данном, случае передаётся единственный параметр — это имя производителя или бренд... на выходе получался буквенно-цифровой код!

думаю в качестве элементарного примера пойдёт.

PHP:
скопировать код в буфер обмена
  1.  
  2. <?if($USER->IsAdmin()):?>
  3.         <?
  4.                 // Prefix generator
  5.                 function prefix_generator($string) {
  6.                         $replace_pairs = array("A" => "", "a" => "", "E" => "", "e" => "", "I" => "", "i" => "", "O" => "", "o" => "", "U" => "", "u" => "",);
  7.                         return substr(strtr($string, $replace_pairs), 0, 3);
  8.                 }
  9.                 // Generator of unique numbers
  10.                 function rand_str($prefix = false, $length = 7, $chars = "0123456789") {
  11.                         // получаем длину строки символов
  12.                         $chars_length = (strlen($chars) - 1);
  13.                         // Итак, строчка начинается
  14.                         $string = $chars{ rand(0, $chars_length) };
  15.  
  16.                         // Генерируем
  17.                         for ($i = 1; $i < $length; $i = strlen($string))  {
  18.                                 // Берем случайный элемент из набора символов
  19.                                 $r = $chars{rand(0, $chars_length)};
  20.                                 // Убеждаемся, что соседние символы не совпадают.
  21.                                 if ($r != $string{$i - 1}) $string .=  $r;
  22.                         }
  23.  
  24.                         return $prefix ? $prefix.$string : $string;
  25.                 }
  26.  
  27.                 $brand_prefix = isset($_POST["manufacturer"]) ? prefix_generator($_POST["manufacturer"]) : '';
  28.  
  29.         ?>
  30.         <div class="row">
  31.                 <div class="large-6 column">
  32.                         <form method="post">
  33.                                 <p>
  34.                                         <label for="manufacturer">Укажите производителя (латиница)
  35.                                                 <input id="manufacturer" type="text" name="manufacturer" value="<?=$_POST["manufacturer"]?>" />
  36.                                         </label>
  37.                                 </p>
  38.                                 <p>
  39.                                         <input class="button secondary radius small" type="submit" value="Создать" />
  40.                                 </p>
  41.                         </form>
  42.                 </div>
  43.                 <div class="large-6 column">
  44.                         <div class="panel">
  45.                                 <?if(!empty($brand_prefix)):?>
  46.                                         <h2><?=strtoupper(rand_str($brand_prefix))?></h2>
  47.                                 <?else:?>
  48.                                         <p>Укажите производителя товара для которого необходимо создать артикул.</p>
  49.                                 <?endif;?>
  50.                         </div>
  51.                 </div>
  52.         </div>
  53. <?else:?>
  54.         <? LocalRedirect("/"); ?>
  55. <?endif;?>
  56.  
skruglikov Отправлено: 24 Января, 2017 - 11:57:17 • Тема: Выпадающие списки • Форум: Вопросы новичков

Ответов: 12
Просмотров: 922
Gost12345 пишет:
skruglikov, все равно не работает, если выбирать все значения то выводит результат, а если какое то одно, то ничего не выводит, хотя запрос выполняется и данные правильно передаются. Именно когда начинаю выводить данные циклом while, то ничего не выводит.


Покажите код формы и код обработки данных формы!
skruglikov Отправлено: 24 Января, 2017 - 01:03:10 • Тема: Передача переменных в функцию. • Форум: Напишите за меня, пожалуйста

Ответов: 1
Просмотров: 38
ATOM пишет:
Проблема такая, когда передаю в функцию переменные такие как $i и $row, при выводе выдает пустоту, как можно решить эту проблему? дабы не разводить говноКод.


я бы проверил переменные, что они не пустые, для начала... потом построчно проверил бы все переменные внутри функции... судя по строке передаваемой в функцию, у вас битрикс, можно с помощью AddMessage2Log(), хотя не суть важна ;)
skruglikov Отправлено: 23 Января, 2017 - 19:47:39 • Тема: Постраничный парсинг с помощью cURL + PHP Simple HTML DOM Parser • Форум: Хранение данных, их вывод и обработка

Ответов: 1
Просмотров: 2413
собственно вопрос решен! отказался от парсенной ссылки в "чистом виде", скорее всего там была бочина с символами... хз...

регулярным выражением выдернул только номер страницы и передал её дальше
PHP:
скопировать код в буфер обмена
  1.  
  2. curl_get($res . '/s/ref=sr_pg_' . $page_number . '?rh=i%3Aaps%2Ck%3Aipad&page=' . $page_number . '&keywords=ipad&ie=UTF8&qid=1485122977')
  3.  


всё работает ;)
skruglikov Отправлено: 23 Января, 2017 - 19:29:57 • Тема: Игнорируется последнее поле при разборе CSV файла • Форум: Вопросы новичков

Ответов: 10
Просмотров: 686
у вас в массиве присутствует идентификатор... отлично!
а теперь можете объяснить, что вы имеете ввиду, когда говорите:
Evgeniii пишет:
поле с идентификатором не обрабатывается


в чем заключается обработка?

Evgeniii пишет:
Но при выполнении fputcsv в файл записывается только дынные из последней строки

в 7 строке поменяйте 'w'=>'a'

Список возможных режимов для fopen() используя mode
http://php.net/manual/ru/function.fopen.php

Страниц (2): [1] 2 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB