Script de modification d'une news

darkchristophetd Messages postés 1100 Date d'inscription   Statut Contributeur Dernière intervention   -  
darkchristophetd Messages postés 1100 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
Dans un script de news que j'ai fait, il y a une partie modification de news :
 <?php
mysql_connect("localhost", "***", "*****");
mysql_select_db("bdd");

 if(isset($_POST['categorie']) and isset($_POST['corps']))
 {
	$categorie = $_POST['categorie'];
	$corps = $_POST['corps'];
	$id = $_GET['id'];
	mysql_query("UPDATE news SET corps='$corps' WHERE id = '$id'") or die("erreur requête");
	echo'La news a bien été modifiée<br><br><br><center><a href="voir-news.php">Retour</a></center>';
}
else
{
 ?>
 <center>
 <form action="modifier-news.php" method="post">
 <br>
 <label for="categorie">Catégorie :</label>&nbsp; <input name="categorie" type="text" value="<?php echo $_GET['categorie']?>" id="categorie"><br><br>
 <label for="corps">Contenu :</label><br>
 <br>
 <textarea rows="25" cols="100" id="corps" name="corps">
 
 <?php
 $id = $_GET['id'];
 $reponse = mysql_query("SELECT * FROM news WHERE id='$id'");
 while ($donnees = mysql_fetch_array($reponse) )
 {
	echo ''.$donnees['corps'].'';
}

 ?>
 </textarea>
 <br><br>
 <input type="submit" value="Enregistrer les modifications">
 </center>
 </form>
 <?php
 }
 mysql_close();
 ?>

Quand je modifie une news, il me dit qu'elle s'est bien modifiée mais aucun changement...
Pourquoi ??
merci beaucoup
A voir également:

8 réponses

Fricky42 Messages postés 566 Statut Membre 182
 
Ca c'est une quote qui casse les couilles... Normal, tu ne proteges pas tes requetes....

change :
	$corps = $_POST['corps'];
	$id = $_GET['id'];


en
	$corps = mysql_real_escape_string($_POST['corps']);
	$id = mysql_real_escape_string($_GET['id']);



Et de facon general, protege toujours tes requetes.... mysql_real_escape_string ajoute un backslash devant les caractere speciaux style ', " etc...
0
Stef60 Messages postés 257 Statut Membre 41
 
Bonjour,

Essai comme ca:
if(isset($_POST['categorie']) and isset($_POST['corps']))
{
$categorie = $_POST['categorie'];
$corps = $_POST['corps'];
$id = $_GET['id'];
$query = "UPDATE news SET corps='$corps' WHERE id = '$id'";
$result = mysql_query($query);
if (!$result) {
die('Requête invalide : ' . mysql_error());
echo $query;
}
echo'La news a bien été modifiée<br><br><br><center><a href="voir-news.php">Retour</a></center>';
}

Tu peux aussi ajouter des echo $corps et echo $id pour verifier que tes variables sont correctes.
0
darkchristophetd Messages postés 1100 Date d'inscription   Statut Contributeur Dernière intervention   459
 
salut !
même en appliquant un mysql_real_escape_string($var) à toutes mes variables, ça ne marche pas :(
0
darkchristophetd Messages postés 1100 Date d'inscription   Statut Contributeur Dernière intervention   459
 
Merci stef60
mais même avec ce code, ça ne marche pas
et ces variables sont correctes vu qu'elle s'affichent dans des zones de textes...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Fricky42 Messages postés 566 Statut Membre 182
 
dark...

Tu le recupere d'ou l'id oO???
Lorsque tu envoi tes modif il n'y a ni input hidden en GET, ni variable id transmis dans l'url.... Comment tu l'envoi ?
0
darkchristophetd Messages postés 1100 Date d'inscription   Statut Contributeur Dernière intervention   459
 
ben enfait, depuis la page daccueil des news, je fais un lien vers la page de modif comme-ceci :

<a href="modif-news.php?id=<?php echo $donnees['echo']?>....."">Modifier</a>

mais la variable $id marche (je l'ai testée)
0
Fricky42 Messages postés 566 Statut Membre 182
 
Oui... mais lorsque tu clique sur "ENREGISTRER LES MODIF", la variable GET 'id' n'existe plus ...

essaye de me l'afficher dans le premier if ( if(isset($_POST['categorie']) and isset($_POST['corps']))) pour voir.
0
darkchristophetd Messages postés 1100 Date d'inscription   Statut Contributeur Dernière intervention   459
 
tu as raison elle n'existe plus !!
je peut faire comment alors ?
0
Fricky42 Messages postés 566 Statut Membre 182
 
Deja tu rajoutes les mysql_real_escape_string pour toutes les variables utilises dans ta requete.

Ensuite je te propose de l'envoyer en POST ca fera plus jolie et tu as deja des donnes en post...

Donc rajoute, juste apres le textarea :

<?php $id = $_GET['id']; ?>
<input type='hidden' name='id' value='<?php echo $id ?>'>


PS : Ce jonglage php/html n'est vraiment pas evident. Essaye de n'ecrire que du php qui generera du html.
Spas vital mais c'est plus propre.

Vala.

Edit :

Ah et oublie pas de changer le GET['id'] en POST['id'] dans ton premier if du coup !
0
darkchristophetd Messages postés 1100 Date d'inscription   Statut Contributeur Dernière intervention   459
 
en effet ça marche super merci bcp.
Je viens de comprendre a quoi servait les <input type="hidden"> :p
MERCI
0