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


Carouge10
Réponse acceptée

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é.

Salut,

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

header('Location:index.php');
Azee
Auteur

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