2013-10-01 7 views
1

Я новичок в PHP, и я пытаюсь отобразить CSV-данные на моей веб-странице с параметром pagination. Это код, который у меня есть до сих пор.php - отображение данных csv в табличном формате

<?php 

$names = file('demo.csv'); 
$page = $_GET['page']; 

//constructor takes three parameters 
//1. array to be paged 
//2. number of results per page (optional parameter. Default is 10) 
//3. the current page (optional parameter. Default is 1) 
$pagedResults = new Paginated($names, 20, $page); 
echo "<ul>"; 
while($row = $pagedResults->fetchPagedRow()) { 
//when $row is false loop terminates 
    $row1 = str_replace(',', "\t", $row); 
    echo "<li>{$row1}</li>"; 
} 

echo "</ul>"; 

//important to set the strategy to be used before a call to fetchPagedNavigation 
$pagedResults->setLayout(new DoubleBarLayout()); 
echo $pagedResults->fetchPagedNavigation(); 
?> 

У меня были проблемы с запятыми, которые отображались на моем выходе. Однако я решил использовать функцию str_replace. Теперь я хочу показать данные элегантно в табличном формате. Я попробовал приведенный ниже код, который я видел в другом link.

while($row = $pagedResults->fetchPagedRow()) { 
//when $row is false loop terminates 
    <table> 
    <tr> 
    $row1 = str_replace(',', "\t", $row); 
    <td><?php echo "<li>{$row1}</li>";?></td> 
    </tr> 
    </table> 
} 

echo "</ul>"; 

Однако, я не получаю вывод на своем экране. Может ли кто-нибудь помочь мне в правильном направлении?

+0

Вы не outputing правильно, то есть HTML код в PHP код, который не избежали. Также избавиться от LI и UL –

+0

Что делать, если в * данных * CSV-клеток есть запятая? Простое разделение и замена не помогут в CSV, вам придется разбираться. Кроме того, он ломается ужасно при использовании других локалей (например, Dutch Excel использует ';' для разделения полей). –

ответ

1
<?php 

$names = file('demo.csv'); 
$page = $_GET['page']; 

//constructor takes three parameters 
//1. array to be paged 
//2. number of results per page (optional parameter. Default is 10) 
//3. the current page (optional parameter. Default is 1) 
$pagedResults = new Paginated($names, 20, $page); 

echo "<table border=\"1\">"; 
//use the following line to manually display column names, 
//if they're not in the 1st row of the CSV file 
echo "<tr><td>Column 1 name</td><td>Column 2 name</td><td>Column 3 name</td></tr>"; 
while($row = $pagedResults->fetchPagedRow()) { 
//when $row is false loop terminates 
    echo "<tr><td>"; 
    $row1 = str_replace(',', "</td><td>", $row); 
    echo $row1; 
    echo "</td></tr>"; 
} 

echo "</table>"; 

//important to set the strategy to be used before a call to fetchPagedNavigation 
$pagedResults->setLayout(new DoubleBarLayout()); 
echo $pagedResults->fetchPagedNavigation(); 
?> 
+0

спасибо за обновление. Мне нужно отобразить заголовок на всех страницах. Кроме того, я не получаю такие строки, как у нас в excel. Можете ли вы вести меня в правильном направлении относительно того же самого? Благодаря! –

+0

ОК, см. Обновление. –

1

Вы смешиваете HTML и PHP немного, чтобы свободно. Фикс, как это:

while($row = $pagedResults->fetchPagedRow()) { 
//when $row is false loop terminates 
    echo "<table>"; 
    echo "<tr>"; 
    $row1 = str_replace(',', "\t", $row); 
    echo "<td>"; 
    echo "<li>{$row1}</li>"; 
    echo "</td>"; 
    echo "</tr>"; 
    echo "</table>"; 
} 

echo "</ul>"; 

или как это:

while($row = $pagedResults->fetchPagedRow()) { 
//when $row is false loop terminates 
?> 
    <table> 
    <tr> 
    <?php $row1 = str_replace(',', "\t", $row); ?> 
    <td><?php echo "<li>{$row1}</li>";?></td> 
    </tr> 
    </table><?php 
} 

echo "</ul>"; 

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

1

Ваши таблицы неправильно помещены в петлю.

Пожалуйста, обратитесь следующий код:

<table><?php 
while($row = $pagedResults->fetchPagedRow()) { 
//when $row is false loop terminates 

?> 
<tr> 
    <?php 
    $row1 = str_replace(',', "\t", $row); 
     ?> 
    <td><?php echo $row1;?></td> 
     </tr> 
     <?php 
} 

?></table> 
Смежные вопросы