OMG!
<?php foreach ($articles as $article): ?>
<li>
Почему постоянное переключение в PHP и из него - это грязно и затрудняет отладку / чтение кода.
<form action="" method="post">
Почему POST при отправкепараметры через GET, действительно нет способа отправить форму?
<div>
<a href="?viewarticle?id=<?php echo'$id' ?>">
$ id?Какой $ id?Условно '?'отмечает начало запроса, но последующие эксперименты разделяются знаком «&».Похоже, вы анализируете параметр viewarticle в index.php - но ни href, ни форма не отправляют туда данные.
<?php echo htmlout($article['id']);?>
Что делает htmlout ()?Почему на отдельной строке PHP?Зачем закрывать и удалять теги PHP?
<?php echo htmlout($article['summary']);?>
И снова!
</div>
</form>
</li>
<?php endforeach; ?>
Предполагается, что загадочной переменной на самом деле является $ article ['id'] ...
<?php
foreach ($articles as $article) {
print "<li><a href='/?viewarticle&id=" . $article['id']
. "'>" . htmlout($article['id'])
. htmlout($article['summary'])
. "</a></li>\n";
}
?>
Остальная часть вашего кода также запуталась в том, как работает html и как массивы phpработа.