Na minha segunda tentativa (após colocar a msg de erro) o adiciona-produto.php exibia tanto a mensagem de erro quanto a mensagem de que o produto tinha sido adicionado com sucesso, mas sem o css e sem o nome do produto na string. Tentei ajeitar e agora o adiciona-produto.php apenas mostra todo o código no navegador, tanto eu colocando os parâmetros direto no link quanto acessando pelo formulário.
O adiciona-produto.php tá assim:
<?php include("cabecalho.php")?>
    <h1>Formulário de produto</h1>
    <?php
        $nome = $_GET["nome"];
        $preco = $_GET["preco"];
        $conexao = mysqli_connect('localhost','root','','loja'); 
        $query = "insert into produtos (nome, preco) values ('{$nome}', {$preco})";
        if (msqli_query($conexao, $query)) { 
        ?>
            <p class="alert-success">Produto <?= $nome; ?>, <?= $preco; ?> adicionado com sucesso!</p>
        <? php } else { ?>
            <p class="alert-danger">Produto <?= $nome; ?> não foi adicionado.</p>
        <? php
        }
        mysqli_close($conexao); 
    ?>
<?php include("rodape.php")?> 
            