Задать вопрос
@inmotusdesign
Фронтенд-разработчик

Как вывести отфильтрованные данные в из CSV в HTML по выбранному столбцу?

Задача была: вывести страницы в HTML по данным строк из CSV (изображения для категорий по заданному признаку - столбец Category Name > все изображения данной категории в списке


  • Пример CSV:
Image Source,Category Name,Category HTML,Comma Keywords
/data/catalog/premium-graphics/abstract-flowers/watermark/abstract-flower-bud.png,abstract flowers,abstract-flowers.html "abstract, flower, bud"
/data/catalog/premium-graphics/abstract-flowers/watermark/flower-bud-natural-plant.png,abstract flowers,abstract-flowers.html,"flower, bud, natural, plant"
/data/catalog/premium-graphics/abstract-flowers/watermark/flower-bud-nature.png,abstract flowers,abstract-flowers.html, "flower, bud, nature"


Вопрос: где ошибка в коде — не правильно сформулировано условие или вывод данных в $content?

<?php
    function CSVtoHTML() {
        $row = 0;
        $header = [];
        if (($handle = fopen("https://bundlespace.com/graphics/example.csv", "r")) !== FALSE) {
            while (($data = fgetcsv($handle, 2565, ",")) !== FALSE) {
    
                // first line is header, grab it then continue
                if ( $row === 0) {
                    $header = $data;
                    $row++;
                    continue;
                }
    			
                $data = array_combine($header, $data);
    		$category = $data['Category Name'];
    			
		$item = '<li><img src="'.Image Source.'" width="200" height="200"></li>';
				
		if (($row[i][$category] == $row[i+][$category])!== TRUE) {										
			print $item;
			$rows++;
		}		
    			
		$item++;
				
    		$content = '<!doctype html>
    			<html lang="en">
    				<head>
    					<meta charset="UTF-8">
    					<title>Images in category '.$data['Category Name'].'</title>
    				</head>
    				<body>
    					<h1 id="graphics">Images in category '.$data['Category Name'].'</h1>									
    					<ul>						
    						'.$item.'
    					</ul>
    				</body>
    				<footer>FOOTER</footer>
    				</html>';
    
                // make the file
    			$filedata = file_get_contents($content);
    			$filedata = mb_convert_encoding($content, 'UTF-8');
    			file_put_contents(''.$data['Category HTML'], $filedata);
    
                $row++;
            }
            fclose($handle);
        }
    }
    CSVtoHTML();
    ?>
  • Вопрос задан
  • 61 просмотр
Подписаться 1 Средний Комментировать
Решения вопроса 1
glaphire
@glaphire Куратор тега PHP
PHP developer
Ошибка синтаксическая тут
$item = '<li><img src="'.Image Source.'" width="200" height="200"></li>';

Image Source - невалидная переменная.
Чтобы говорить конкретнее, нужно включить вывод ошибок в PHP и смотреть, что они выведут. Если ошибка не синтаксическая, а логическая, то нужно разбить код на мельшие функции и отделить генерацию html от обработки данных, потому что тут почти ничего не понятно
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы