Problème de slash dans BDD MySQL

Résolu/Fermé
Utilisateur anonyme - 1 oct. 2008 à 17:24
 Utilisateur anonyme - 1 oct. 2008 à 17:27
Bonjour,

J'ai une partie news dans ma base de données qui me permet de gérer mes news qui s'affichent sur l'accueil de mon site. Malheureusement, quand je veux modifier un de ces news, des slashes s'ajoutent devant mes caractères spéciaux et quand j'enregistre le tout, ces slashes s'affichent sur ma page... et quand j'y retourne, je n'ai plus un slash mais trois slashes devant chaque caractère spéciaux et ainsi de suite... j'espère être assez clair... voici les codes correspondant à cette partie...

formulaire.php:
if (isset($_GET['modifier_news'])) // Si on demande de modifier une news
			{
				// On récupère les infos de la correspondante
				$retour = mysql_query('SELECT * FROM news WHERE id=' . $_GET['modifier_news']);
			    $donnees = mysql_fetch_array($retour);
   
				// On place le titre et le contenu dans des variables simples
				$titre = stripslashes($donnees['titre']);
			    $contenu = $donnees['contenu'];
				$auteur = $donnees['auteur'];
			    $id_news = $donnees['id']; // Cette variable va servir pour se souvenir que c'est une modification
			}
			else // C'est qu'on rédige une nouvelle news
			{
			    // Les variables $titre et $contenu sont vides, puisque c'est une nouvelle news
			    $titre = '';
			    $contenu = '';
				$auteur = '';
			    $id_news = 0; // La variable vaut 0, donc on se souviendra que ce n'est pas une modification
			}
			?>

			
				<form method="post" action="modifier_news.php">
					<h2> Ajouter nouvelle</h2>
					<p> Titre : <input type="text" name="titre" size="30" value="<?php echo $titre; ?>"></p>
					<p> Contenu : <p>
					<textarea name="contenu" cols="80" rows="10" align="center">
					<?php echo $contenu; ?>
					</textarea> </p></p>
					<input type="hidden" name="id_news" value="<?php echo $id_news; ?>" />
					<input type="hidden" name="auteur" value="<?php echo $_SESSION['prenom']." ".$_SESSION['nom'] ?>" />
					<input type="submit" value="Envoyer" />


modifier.php
<?php	

			//-----------------------------------------------------
			// Vérification 1 : est-ce qu'on veut poster une news ?
			//-----------------------------------------------------

			if (isset($_POST['titre']) AND isset($_POST['contenu']))
			{
			    $titre = addslashes($_POST['titre']);
			    $contenu = addslashes($_POST['contenu']);
				$auteur = addslashes($_POST['auteur']);
			    // On vérifie si c'est une modification de news ou pas
			    if ($_POST['id_news'] == 0)
			    {
			        // Ce n'est pas une modification, on crée une nouvelle entrée dans la table
			        mysql_query("INSERT INTO news VALUES('', '" . $titre . "', '" . $contenu . "', '" . time() . "', '".$auteur."')");
			    }
			    else
			    {
			        // C'est une modification, on met juste à jour le titre et le contenu
			        mysql_query("UPDATE news SET titre='" . $titre . "', contenu='" . $contenu . "' WHERE id=" . $_POST['id_news']);
			    }
			}


			//--------------------------------------------------------
			// Vérification 2 : est-ce qu'on veut supprimer une news ?
			//--------------------------------------------------------

			if (isset($_GET['supprimer_news'])) // Si on demande de supprimer une news
			{
			    // Alors on supprime la news correspondante
			    mysql_query('DELETE FROM news WHERE id=' . $_GET['supprimer_news']);
			}
			?>

			<table><tr>
			<td>Modifier</td>
			<td>Supprimer</td>
			<td>Titre</td>
			<td>Date</td>
			<td>Auteur</td>
			</tr>

			<?php
			$retour = mysql_query('SELECT * FROM news ORDER BY id DESC') 
			or die(mysql_error());
			while ($donnees = mysql_fetch_array($retour)) // On fait une boucle pour lister les news
			{
			?>

			<tr>
			<td><?php echo '<a href="formulaire_news.php?modifier_news=' . $donnees['id'] . '">'; ?>Modifier</a></td>
			<td><?php echo '<a href="modifier_news.php?supprimer_news=' . $donnees['id'] . '">'; ?>Supprimer</a></td>
			<td><?php echo stripslashes($donnees['titre']); ?></td>
			<td><?php echo date('d/m/Y', $donnees['timestamp']); ?></td>
			<td><?php echo stripslashes($donnees['auteur']); ?></td>
			</tr>


affichage.php:
$requete = "select titre, contenu, timestamp, auteur from news order by id desc limit 0,1";
				afficherNews($requete); 

	function afficherNews($requete)
	{
		$resultat = mysql_query($requete);
		while ($ligne = mysql_fetch_assoc($resultat))
		{
			echo "<h2>".nl2br(stripslashes($ligne['titre']))." écrit le ".date('d/m/Y à H\hi', $ligne['timestamp'])."</h2>";
			$contenu = nl2br(stripslashes($ligne['contenu']));
			echo "<p>".$contenu."<br/>";
			
			echo "<h4>Post&eacute; par ".nl2br(stripslashes($ligne['auteur']))."</h4></p>";
		}
	}

1 réponse

Utilisateur anonyme
1 oct. 2008 à 17:27
c'est bon j'ai réglé mon prob tout seul...
j'avais juste oublié un stripslashes($contenu) dans mon formulaire

merci quand même et désolé d'avoir polué le forum pour rien mais ça faisait 2h que j'étais dessus
1