я преобразовал данные массива в файл .html, но теперь хочу добавить данные HTML, используя php

1

Я хочу преобразовать данные массива в формат HTML и сохранить файл как.html файл. Как я могу это сделать?

Предположим, что массив:

Array
(
[0-50] => 880
[50-100] => 5
[100-150] => 1
[550-600] => 1
)

И я пишу файл вроде этого:

<?php
$file = fopen("abc.html","w");
?>

Я могу легко записать этот файл в формате CSV, но как это сделать, чтобы хранить html файл из данных?

мой ожидаемый результат -

Distance      trips
 0-50          880
 50-100         5
 100-150        1
 550-600        1

    

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

Предположим, что я записал данные в этот файл ->

$html['head'] = '<html><head></head><body>';

$html['content'] = "<table><tr style='background-color:cyan'><td>Distance</td><td>total Trips</td></tr>";

foreach($de as $key=>$value)
 {

$html['content'] .="<tr style='background-color:yellow'><td>$key</td><td>$value</td></tr>";

 }
 $html['foot'] = '</table></body>';

file_put_contents("abc.html", $html);

Теперь я хотел добавить этот файл с этими данными ->

$html['head'] = '<html><head></head><body>';

$html['content'] = "<h2>Data Regarding 0 - 50 km distance</h2>
<table width=900 border=5>
<tr style='background-color:cyan font-size:24px'>
<td>S.No</td>
<td>Customer Id</td>
<td>Total Distance</td>
<td>Total Trips</td>
<td>Average Speed</td>
";

foreach($dec as $result=>$value) {

$html['content'] .= "<tr style='background-color:lightgreen'><td>$value[cid]</td><td>$value[totalDistance]</td><td>$value[totalTrips]</td><td>$value[avgSpeed]</td></tr>";
}    
$html['foot'] = '</table></body></html>';
  • 1
    Вы получили какие-либо ошибки?
  • 1
    Какой у вас вопрос?
Показать ещё 1 комментарий
Теги:
arrays

3 ответа

0

То, что вы ищете, это режим добавления.

a => Open for writing only;

Или

a+ => Open for reading and writing;

То, что этот режим делает, - "поместите указатель файла в конец файла. Если файл не существует, попытайтесь его создать".

Таким образом, ваша линия fopen становится...

$file = fopen("abc.html","a");

Таким образом вы всегда можете добавлять все, что хотите.

0

Поскольку вы размещаете динамическую информацию в статическом HTML-документе, вам нужно переписать эту информацию для каждого редактирования.

  1. Используйте некоторую библиотеку PHP для чтения HTML файла (например, HTML DOM Parser)
  2. Соберите всю информацию таблицы из файла HTML.
  3. Добавить новую информацию (или вставить, если необходимо).
  4. Напишите новый контент в HTML файл.

Я предлагаю сохранить эту информацию в каком-то структурированном формате (например, json файл или базу данных), а при показе информации просто прочитайте эти данные. Было бы намного проще реализовать.

Например, переписывание данных в json файле:

$json = json_decode(file_get_contents('data.json'), true);
$json = array_merge($json, $newData);
file_put_contents(json_encode($json));
0

Для первой таблицы, которую вы хотите поместить в html файл, это будет работать с использованием вашей методологии:

<?php 

//Creating the array
$de = Array("0-50" => 880,
"50-100" => 5,
"100-150" => 1,
"550-600" => 1
);

//creating the array corresponding to html code
$html = array();

//Creating the header
$html['head'] = '<html><head></head><body>';

//creating content - table header
$html['content'] = "<table><tr style='background-color:cyan'><td>Distance</td><td>total Trips</td></tr>";

foreach($de as $key=>$value)
{
    $html['content'] .="<tr style='background-color:yellow'><td>$key</td><td>$value</td></tr>";
}

//footer
$html['foot'] = '</table></body>';

//no need to use fopen because file_put_contents manages that.
file_put_contents("abc.html", $html);

?>

Но для второй части вашего вопроса будет работать одна и та же логика, просто будьте осторожны, как вы используете массив, особенно здесь:

foreach($dec as $result=>$value)
{
    $html['content'] .= "<tr style='background-color:lightgreen'><td>$value[cid]</td><td>$value[totalDistance]</td><td>$value[totalTrips]</td><td>$value[avgSpeed]</td></tr>";
}

Вы должны написать так:

foreach($dec as $result=>$value) 
{
    $html['content'] .= "<tr style='background-color:lightgreen'><td>".$value['cid']."</td><td>".$value['totalDistance']."</td><td>".$value['totalTrips']."</td><td>".$value['avgSpeed']."</td></tr>";
}

Привет надеюсь, что это помогло.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню