Las Posté 16 Juin 2006 Posté 16 Juin 2006 Bonjour; dans mon espace d'administration j'ai voulu ajouter un formulaire pour editer les articles, mais a chaque fois que je valide le form. l'article ne change pas, bienque je suis sure de la requete sql... voici le code j'espere que vous pourriez m'aider <?phpinclude '../inc/connect.php';if(isset($_GET['id'])){ $query = "SELECT * ". "FROM news ". "WHERE id = '{$_GET['id']}'"; $result = mysql_query($query) or die('Erreur : ' . mysql_error()); $aff= mysql_fetch_array($result); $id = $aff['id']; $title = $aff['title']; $content = $aff['content']; $content = htmlspecialchars($content); }else if(isset($_POST['update'])){ $id = $_POST['id']; $categorie = $_POST['categorie']; $title = $_POST['title']; $content = $_POST['content']; if(!get_magic_quotes_gpc()) { $categorie = addslashes($categorie); $title = addslashes($title); $content = addslashes($content); } // editer l'article sur la base de donnees $query = "UPDATE news SET categorie = '$categorie', title = '$title', content = '$content' WHERE id = '$id'"; mysql_query($query) or die('Erreur : ' . mysql_error());echo "L'article '$title' a ete mis a jour"; $categorie = stripslashes($categorie); $title = stripslashes($title); $content = stripslashes($content); }?> </h2> <div align=center><form method="POST"><input type="hidden" name="id" value="<?=$id;?>"><table width="641" border="0" cellpadding="2" cellspacing="1" bgcolor="#FFFFFF" class="box"><tr> <td height="28" colspan="2" align="center" background="../images/blockm_t.png" class="style1">Edition d article</td> </tr><tr> <td>Categorie</td> <td><select name="categorie"> <option selected="selected">cat1</option> <option>cat2</option> <option>cat3</option> <option>cat4</option> <option>cat5</option> </select></td></tr><tr><td width="100">Titre</td><td><input name="title" type="text" class="box" id="title" value="<? echo $title; ?>" size="50"></td></tr><tr><td width="100" valign="top">Contenu</td><td><textarea name="content" cols="100" rows="20" class="box" id="content"><? echo $content; ?></textarea></td></tr><tr><td colspan="2" align="center"><input name="update" type="submit" class="box" id="update" value="Editer"></td></tr></table>
skale Posté 16 Juin 2006 Posté 16 Juin 2006 (modifié) Effectivement c'est bizarre. Est-ce que quand tu valides le formulaire, il s'affiche : L'article titre de l'article a été modifié. Il y a des chances pour que $_POST['update'] soit vide donc la mise à jour ne se fera pas, tu dois cliquer sur le bouton Editer. Pour tester ce qu'envoie le formulaire, tu devrais ajouter la ligne suivante à la suite de l'include qui va afficher tous les éléments du tableau : print_r($_POST); Sinon, si tu nous a bien mis tout le code, alors il manque la balise de fermeture du formulaire. C'est juste une idée, mais c'est possible que cela pose problème @+ Emeric Modifié 16 Juin 2006 par skale
Las Posté 16 Juin 2006 Auteur Posté 16 Juin 2006 quand je valide le formulaire je ne recois pas la phrase"l'article a ete mis a jour". la balise de fin de form existe, seulement je l'ai pas copie ici ... j'ai essaye ce formulaire sur mon localhost et sur un serveur heberge. meme chose.
Kalt Posté 17 Juin 2006 Posté 17 Juin 2006 (modifié) Je ne suis pas sûr que la valeur du submit soit récupérable. Essaie d'ajouter après : <input type="hidden" name="id" value="<?=$id;?>"> Ceci : <input type="hidden" name="update" value="oui"> Autre chose à laquelle je pense : lorsque tu arrives sur ta page pour la première fois, tu dois avoir l'ID dans l'url, donc en GET. Quand tu valides ton form, même si celui-ci passe en méthode POST, il doit y avoir toujours l'ID en fin d'url, donc dans ce cas ta première condition est toujours vraie : if(isset($_GET['id'])) Et ton script ne fait rien que sélectionner les données. Si c'est ça qui cloche, mieux vaut récupérer ton ID quelle que soit son origine (GET ou POST), puis tu effectues la mise à jour en testant uniquement l'existence de la variable "update". Modifié 17 Juin 2006 par Kalt
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant