Bonsoir,

Voilà j'ai un système d'administration avec le listing des textes à modifier, puis une page editer.php qui récupère le contenu de ma BDD dans un textarea jusque là ça roule, mon soucis est que si je modifie le texte récupéré et que je clique sur le bouton pour enregistrer ma modif rien ne se passe ou presque, j'ai un message d'erreur qui me signal qu'il faut entrer du contenu dans mon champ.
voici la code de la page editer.php :

<?php 
if(!empty($_POST))
{
    extract($_POST);
    $validation = true;

    if(empty($content))
    {
        $validation = false;
        $erreur_contenu = "Veuillez entrer un contenu!";
    }

    if($validation)
    {
        include('connection.php');
        $req = $bdd->prepare('UPDATE content SET contenu = :contenu WHERE id = :id');
        $req->execute(array(

            'contenu' => $contenu,
            'id' => $_GET['id']

            ));
        $req->closeCursor();
        $ok = "la page a bien été modifié";
    }

}

?>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>Moderna - Bootstrap 3 flat corporate template</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="" />
<meta name="author" content="http://bootstraptaste.com" />
<!-- css -->
<link href="css/bootstrap.min.css" rel="stylesheet" />
<link href="css/fancybox/jquery.fancybox.css" rel="stylesheet">
<link href="css/jcarousel.css" rel="stylesheet" />
<link href="css/flexslider.css" rel="stylesheet" />
<link href="css/style.css" rel="stylesheet" />
<link href="css/admin.css" rel="stylesheet" />

<!-- Theme skin -->
<link href="skins/default.css" rel="stylesheet" />

<!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]>
      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
    <![endif]-->

</head>
<body>
<div id="wrapper">
    <!-- start header -->
    <header>
        <div class="navbar navbar-default navbar-static-top">
            <div class="container">
                <div class="navbar-header">
                    <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
                        <span class="icon-bar"></span>
                        <span class="icon-bar"></span>
                        <span class="icon-bar"></span>
                    </button>
                    <a class="navbar-brand" href="index.html"><span>M</span>oderna</a>
                </div>
                <div class="navbar-collapse collapse ">
                    <ul class="nav navbar-nav">
                        <li class="active"><a href="index.php"> Retour Accueil</a></li>
                        <li><a href="administration.php">Retour Administration</a></li>
                    </ul>
                </div>
            </div>
        </div>
    </header>
    <!-- end header -->
<body>
<div class="container">
    <div class="row">
                    <?php if (isset($erreur_contenu)) echo '<span class="error">'.$erreur_contenu.'</span>';?>
                    <?php if (isset($ok)) echo '<span class="success">'.$ok.'</span>';?>

                <?php  
                    include('connection.php');

                    $select = $bdd->prepare('SELECT * FROM content WHERE id=:id');
                    $select->execute(array('id' => $_GET['id'] ));
                    $donnees = $select->fetch();
                ?>

            <div class="col-lg-12">
               <h2>Modifier le contenu de la page <?php echo $donnees['page']; ?></h2>
                <p>Tous les champs marqués du (*) sont obligatoires</p>
                <form id="contactform" method="post" class="validateform" name="send-contact" action="editer.php?id=<?php echo $_GET['id']; ?>">
                    <div id="sendmessage">
                         Le text a bien été Modifié.
                    </div>
                    <div class="row">
                        <div class="col-lg-12 margintop10 field">
                            <textarea rows="12" name="message" class="input-block-level" value="" data-rule="required" ><?php echo $donnees['contenu']; ?></textarea>
                            <p>
                                <input class="btn btn-theme margintop10 pull-left" type="submit" value="modifier"></input>

                            </p>
                        </div>
                    </div>
                </form>
            </div>

</div>
</body>
</html>

Je suis sous bootstrap, et ma base de donnée à trois champ : ID, page et contenu.
si vous pouvez m'aider, merci.

4 réponses


Huggy
Réponse acceptée

Ce que je veux dire c'est que c'est l'attribut name du textarea qui va donner le nom de la variable en php.
Comme tu as mis name='message' (c'est bizarre j'avais cru lire 'content' !!!)
La fonction extract va te créer automatiquement une variable $message, mais toi tu utilises une variable $contenu.
Au lieu d' utiliser extract (qui n'est pas sûre), il faut extraire les variables de façon manuelle comme ceci

$message = $_POST['message'];

Bonjour,
1) Ton textarea s'appelle 'content'
2) Tu récupères bien $content
3) Pour ta requête tu utilises $contenu !!!

hello,
Peux tu m'expliquer ce que tu veux dire?

merci

merci pour tes explications j'ai réussi à faire ce que je voulais.
merci encore