Примечание. Это то, над чем я работаю в качестве упражнения.
У меня есть программа php, которая изменяет html-документ с помощью DomDocument;вставляя, удаляя или редактируя элемент по идентификатору.Когда программа закончена, она выводит документ для просмотра пользователями.
Таблица SQL, содержащая вставленные значения, сортируется / используется только для предоставления элемента, который должен быть перед новым элементом.например, основываясь на указанном значении столбца, он находит элемент, который находится непосредственно перед новым элементом, и вставляет новый элемент после него.
По сути, я спрашиваю, насколько эффективен этот подход по сравнению со всемиэлементы хранятся в базе данных и затем воссоздают (различные) html-файлы каждый раз.
Дополнительный вопрос: я хочу сохранить «историю» каждого элемента.Должен ли я создать новую таблицу для каждого конкретного элемента (например, истории a234) или есть лучший способ сделать это?
РЕДАКТИРОВАТЬ:
Фрагмент кода:
Предупреждение;Впереди код спагетти.
if ($sortby=='newest')
$query2=mysql_query("SELECT comnum FROM comments WHERE replynum='$x' AND newest < '$new' ORDER BY newest DESC LIMIT 1");
else
$query2=mysql_query("SELECT comnum FROM comments WHERE replynum='$x' AND popularity < '$random' ORDER BY popularity DESC LIMIT 1");
$query1= mysql_fetch_object($query2);
$query=$query1->comnum;
echo $query;
$doc = new DOMDocument('1.0', 'utf-8');
$doc->loadHTML(file_get_contents($sortby.".html"));
$ap=$doc->createElement('span', "<p class='comm'><b>".$_POST['poster']."</b><span class='reply'> Popularity: ".$random." Post Number:".$data."<a href='javascript:reply(".$data.")'>Reply</a></span><br/>".$_POST['comments']."</p><div class='comm1' id='".$data."'></div>");
$ap->setAttribute('id',$data.'a');
if ($query!=false) {
$query.='a';
$doc->getElementById($x)->insertBefore($ap, $doc->getElementById($query));
echo $x;
}
else {
$doc->getElementById($x)->appendChild($ap);
}
mysql_close($don);
$we= $doc->saveHTML();
$we = preg_replace("/<!DOCTYPE [^>]+>/",'',$we);
$we = str_replace('<html><body>', '', $we);
$we = str_replace('</body></html>', '', $we);
file_put_contents($sortby.".html",htmlspecialchars_decode($we));
if ($_POST['order']==$sortby)
echo htmlspecialchars_decode($we);
Структура таблицы:
Тип поля
comnum int (255)
имя пользователя varchar (255)
текст комментария
replynum int (255)
популярность int (255)
newest int (255)
Не указана кодировка.