Script de modification d'une news

Fermé
darkchristophetd Messages postés 1100 Date d'inscription mardi 26 février 2008 Statut Contributeur Dernière intervention 14 novembre 2010 - 1 déc. 2008 à 17:06
darkchristophetd Messages postés 1100 Date d'inscription mardi 26 février 2008 Statut Contributeur Dernière intervention 14 novembre 2010 - 1 déc. 2008 à 17:59
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

8 réponses

Fricky42 Messages postés 466 Date d'inscription lundi 15 septembre 2008 Statut Membre Dernière intervention 27 mars 2012 182
1 déc. 2008 à 17:26
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 251 Date d'inscription jeudi 31 mai 2007 Statut Membre Dernière intervention 22 avril 2009 41
1 déc. 2008 à 17:27
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 mardi 26 février 2008 Statut Contributeur Dernière intervention 14 novembre 2010 459
1 déc. 2008 à 17:30
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 mardi 26 février 2008 Statut Contributeur Dernière intervention 14 novembre 2010 459
1 déc. 2008 à 17:33
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 466 Date d'inscription lundi 15 septembre 2008 Statut Membre Dernière intervention 27 mars 2012 182
1 déc. 2008 à 17:39
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 mardi 26 février 2008 Statut Contributeur Dernière intervention 14 novembre 2010 459
1 déc. 2008 à 17:42
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 466 Date d'inscription lundi 15 septembre 2008 Statut Membre Dernière intervention 27 mars 2012 182
1 déc. 2008 à 17:44
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 mardi 26 février 2008 Statut Contributeur Dernière intervention 14 novembre 2010 459
1 déc. 2008 à 17:50
tu as raison elle n'existe plus !!
je peut faire comment alors ?
0
Fricky42 Messages postés 466 Date d'inscription lundi 15 septembre 2008 Statut Membre Dernière intervention 27 mars 2012 182
1 déc. 2008 à 17:55
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 mardi 26 février 2008 Statut Contributeur Dernière intervention 14 novembre 2010 459
1 déc. 2008 à 17:59
en effet ça marche super merci bcp.
Je viens de comprendre a quoi servait les <input type="hidden"> :p
MERCI
0