Problème de header('location');

Par Azee, il y a 9 ans


Bonjour à tous,
Je me présente, Clément, débutant en PHP, je connais les notions de bases.

J'ai un problème de header dans mon code qui me donne lieu à l'erreur :

Warning: Cannot modify header information - headers already sent by (output started at D:\wamp64\www\tuto.loc\LivrePHP\sql\jeux_video\index.php:14) in D:\wamp64\www\tuto.loc\LivrePHP\sql\jeux_video\index.php on line 22

Voici mon code :

<?php //Connexion à la base de données try{ $bd = new PDO('mysql:host=***;dbname=***', '***', '***'); } catch(exception $e){ die('Erreur : ' . $e->getMessage()); } //Requête $reponse = $bd->query('SELECT * FROM jeux_video'); while ($donnees = $reponse->fetch()) { echo 'Le jeu ayant pour nom : '.$donnees['nom'].' a pour iD : '.$donnees['ID'].', il appartient à '.$donnees['possesseur'].' et se joue sur la console : '.$donnees['console'].'.<br>'; } //Modification données if(isset($_POST['submit']) AND isset($_POST['new_value'])){ $value = $_POST['new_value']; $update = $bd->prepare('UPDATE jeux_video SET console = :newconsole WHERE possesseur = "Florent"'); $update->execute(array('newconsole' => $value)); header('location:/'); } ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> </head> <body> <form method="POST" action=""> <input type="text" name="new_value"> <input type="submit" name="submit" value="Changer la console par une console aléatoire"> </form> </body> </html>

Je me suis renseigné sur cette erreur mais je n'arrive pas à la solutionner et vous demande votre aide .
Merci d'avance !!!

3 réponses

CenT, il y a 9 ans

Salut,

ton header est une redirection pour ton cas, donc il faut mettre plutôt ceci en ligne 22:

header('Location:index.php');
Carouge10, il y a 9 ans

Bonsoir,

Le header doit être TOUJOURS mis avant le moindre affichage d'HTML.
Donc avant les echo.....

Mettez votre if avant la boucle while et le tour sera joué.

Azee, il y a 9 ans

Merci encore Carouge, très sympathique de ta part !