2015-09-25 3 views
0

У меня очень простой вопрос, кажется, очень простой, но я зацикливаюсь на концепции.Выход CSV в HTML с использованием PHP

Я пытаюсь вывести csv в html с помощью php, и это код, который я хочу вывести как.

<div class="row"> 
    <div class="col-1"> 
    <div class="in"> 
     <p class="description">FIRST CELL OF ROW HERE</p> 
     <p class="town">SECOND CELL OF ROW HERE</p> 
     <p class="city">THIRD CELL OF ROW HERE</p> 
    </div> 
    </div> 
</div> 

и вот мой PHP

<?php 

echo "<html><body><table>\n\n"; 
$f = fopen("test.csv", "r"); 
while (($line = fgetcsv($f)) !== false) { 
    echo "<div class='row'"; 
    foreach ($line as $cell) { 
     echo "<div class='col-1'><div class='in'>"; 
     echo "<p class='description'>" . htmlspecialchars($cell) . "</p>"; 
     echo "<p class='address'>" . htmlspecialchars($cell[1]) . "</p>"; 
     echo "<p class='town'>" . htmlspecialchars($cell[2]) . "</p>"; 
     echo "</div></div>"; 
    } 
    echo "</div>"; 
} 
fclose($f); 
echo "\n</table></body></html>"; 

?> 

Любая помощь будет высоко оценена, как я не могу показаться, чтобы получить второй и третий ряд выводящий правильно там соответствующие теги абзаца.

ответ

2

Анализ:

while (($line = fgetcsv($f)) !== false) { 
     echo "<div class='row'"; 
     // remove this foreach. You're iterating over the cells 
     // when doing this. That is why $cell works while $cell[1] 
     // does not ($cell is not an array at this point) 
     foreach ($line as $cell) { // <-- remove this foreach 

     echo "<div class='col-1'><div class='in'>";  
// You are using $cell as a scalar and then as an array. It is one 
// or the other, not both. 
echo "<p class='description'>" . htmlspecialchars($cell) . "</p>"; 
echo "<p class='address'>" . htmlspecialchars($cell[1]) . "</p>"; 
echo "<p class='town'>" . htmlspecialchars($cell[2]) . "</p>"; 
echo "</div></div>";  
     } 
     echo "</div>"; 
} 
fclose($f); 
echo "\n</table></body></html>"; 

Так фиксируя эти проблемы в вашем коде, как есть (и лучше отступов)

while (($line = fgetcsv($f)) !== false) { 
    echo "<div class='row'"; 
    echo "<div class='col-1'><div class='in'>"; 
    echo "<p class='description'>" . htmlspecialchars($line[0]) . "</p>"; 
    echo "<p class='address'>" . htmlspecialchars($line[1]) . "</p>"; 
    echo "<p class='town'>" . htmlspecialchars($line[2]) . "</p>"; 
    echo "</div></div>";  
    echo "</div>"; 
} 
fclose($f); 
echo "\n</table></body></html>"; 
Смежные вопросы