Задать вопрос
@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();
    ?>
  • Вопрос задан
  • 64 просмотра
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
glaphire
@glaphire Куратор тега PHP
PHP developer
Ошибка синтаксическая тут
$item = '<li><img src="'.Image Source.'" width="200" height="200"></li>';

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

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽