Aller au contenu

Probleme d'update mysql


Las

Sujets conseillés

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 :wacko:

<?php
include '../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>

Lien vers le commentaire
Partager sur d’autres sites

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é par skale
Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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é par Kalt
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...