8795 sujets

Développement web côté serveur, CMS

Bonjour a tous et a toutes,

J'ai un petit problème super con mais que je n'arrive pas a regler...
Je suis actuellement entrain de crée un site web de gestion de stock pour mon entreprise (jusque la tous va bien Smiley smile )
j'essaye de mettre un place un petit système d'annonce (on va sur une page, on rentre son annonce dans un textarea et on l'affiche sur la page principale du site). Pour le moment cela fonctionne.
Suite a une demande des utilisateur qui ne veulent pas réécrire tous le texte des annonce j'essaye désespérément de récupérer ma variable pour l’insérer dans mon textarea mais je bloque, le texte s'affiche bien, mais il n'est pas mis à jours dans ma BDD Smiley eek

Voici le code de ma page news:


<form method="post" action="requetteV2.php">
	<p>
		<label for="ameliorer"> News visible sur l'écan principale </label>
		<br />
		<textarea name="ameliorer" placeholder="
<?php
$sql = 'SELECT * from news';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$data = mysql_fetch_array($req);
echo $data['news'];
?>" 
id="ameliorer" rows="10" cols="50"></textarea>
	</p>
   <input type="submit" value="Valider" />

</form>


Voici le code pour afficher l'annonce:

<?php //news.php
if (isset($_POST['ameliorer'])){
$ameliorer=nl2br($_POST['ameliorer']);
$ameliorer=str_replace('\r\n','<br>',$ameliorer); // mise en place des sauts de ligne

mysql_query("UPDATE `news` SET news = $ameliorer"); // update de la table avec la nouvelle annonce
}


//affichage du contenu de la BDD
$sql = 'SELECT * from news';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$data = mysql_fetch_array($req);

echo $data['news'];


?>


Pour le moment je n'arrive pas a faire l'update de ma table... il me garde toujours l'ancienne annonce Smiley ohwell
Si vous avez une petite piste pour m'aider, je suis preneur

Rhax
Modifié par Rhaxephon (02 Jun 2015 - 14:20)
Salut,

As-tu essayé de mettre le contenu de ta variable entre guillemets ?
Il faut s'assurer que la syntaxe de la requête est bonne.


$sql_update = "UPDATE news SET news = '" . $ameliorer . "'";
var_dump($sql_update); //pour vérifier la syntaxe
mysql_query($sql_update); // update de la table avec la nouvelle annonce


Par ailleurs je préfère concaténer les variables qu'utiliser les guillemets doubles et nommer la table 'news' et un champ de cette table 'news' également c'est pas top Smiley langue . J'ai pour habitude de nommer les champ en les préfixant du nom de la table, par exemple : 'news_news'
Modifié par MatthieuR (20 May 2015 - 11:35)
salut,
déjà le premier conseil qui pourrait t'aider serait de passer à PDO. Tu devras ensuite préférer les requêtes préparées aux simples requêtes avec "query".
L'autre chose la plus importante dans ton update est que tu oublies la clause "where", sans cela, toute la colonne aura la valeur que tu as passé.
MatthieuR
Merci beaucoup pour ta réponse Smiley smile
Il me reste plus qu'a remettre les valeurs dans mon textarea pour éviter de réécrire tous mes annonce a chaque fois et c'est tous bon^^

oui j'ai merdé quand j'ai crée ma table..., vu que c'est une beta pour le moment je la modifierais dés que mon problème sera résolu Smiley cligne
Merci pour l'astuce Smiley jap

Zelasan
Pour le moment je n'ai qu'une colonne pour mes news... donc pas besoins d'une clause Where Smiley cligne
Je vais regarder pour le PDO merci

Merci de votre aide
Rhax
Modifié par Rhaxephon (20 May 2015 - 12:49)
+1 pour les conseils de Zelalsan.

Passe à PDO rapidement,tu utiliseras PDO::prepare() et ta vie changera Smiley langue

Et effectivement, je n'ai pas relevé hier ton erreur de manque de condition 'where' ; tu n'as peut-être qu'une seule colonne mais celle-ci contient plusieurs enregistrements (sinon une table avec une seule colonne et un seul enregistrement ça sert à rien Smiley cligne ) et du coup sans condition 'where' TOUS tes enregistrements prendront la nouvelle valeur !
Il te faut donc au moins 2 colonnes (news et id) avec id en clé primaire unique sur laquelle tu va filtrer tes enregistrements.
$sql_update = "UPDATE news SET news = '" . $ameliorer . "' WHERE id = $news_id"; //cette fois-ci pas besoin de quotes, c'est un entier 

Modifié par MatthieuR (20 May 2015 - 16:55)
Merci pour votre aide
Je suis entrain de regarder pour le PDO mais j’avoue ne pas trop comprendre Smiley ohwell

Pour me moment ma table ne contiens qu'une colonne avec qu'un enregistrement mais en effet cela va changer car je vais faire un historique donc la j'utiliserais bien plusieurs colonnes et je rajouterais le Where dans l'update

Rhax