Bonjour,Bonjour,
J'essaye de faire un site en MVC en PHP, et là je bloque car je souhaiterais après l'exécution d'un formulaire de mise à jour faire une redirection vers la page d'accueil.
Mais le header location ne fonctionne pas car il y a du HTML avant, j'ai vu qu'on pouvait utiliser ob_start mais je ne sais pas comment l'utiliser dans mon cas, c'est à dire avec l'architecture MVC.
Pouvez-vous m'aidez svp ?
Voici mon code :
mon formulaire d'édition
<h2>Edition</h2>
<form action="index.php?p=edit&id=<?= $_GET['id'] ?>" method="post">
<label>Nom</label>
<input type="text" name="nom" value="<?= $user1['nom'] ?>" />
<label>Prénom</label>
<input type="text" name="prenom" value="<?= $user1['prenom'] ?>" />
<br />
<input type="submit" value="Modifier" />
</form>
<?php
header("location:index.php");
?>
ce qu'il y a dans ma page d'index qui appel mon formulaire :
<?php
ob_start();
if (isset($_GET['p']) && $_GET['p'] == "insert") {
require_once('controller/insert.php');
} elseif (isset($_GET['p']) && $_GET['p'] == "edit") {
require_once('controller/edit.php');
} else {
require_once('controller/page.php');
}
ob_end_flush()
?>
j'ai l'erreur suivante :
Warning: Cannot modify header information - headers already sent by (output started at ...
c'est que t'as encore du texte qui sort avant... faut pas que tu ai de echo / print / var_dump etc.... avant
en MVC, faut partir du principe que tu ne pourra pas faire de redirection dans tes vues... toutes les redirections doivent se faire dans des controlleurs (avant le traitement html)
si tu utilise un framework, tu dois avoir des methodes de redirection.
sinon, tu peux utiliser effectivement le header('location:xxxxx'); mais dans un controlleur.
exemples :
très important de bien hierarchisé ton code.
merci pour ton aide j'ai trouvé une solution dans laquelle je ne fais plus appel de mes vues dans mes controlleurs mais dans ma page d'index, et j'ai placé le PHP tout en g-haut de ma page d'index.