Se connecter / S'enregistrer
Votre question

Problème Modification et affichage contenu site via formulaire php/mysql

Tags :
  • Php
  • MySQL
  • Programmation
Dernière réponse : dans Programmation
13 Février 2012 12:25:12

Bonjour à tous,

Je profite de l'occasion, vu que nouvellement inscrit aussi sur le site, pour souhaiter une bonne et
heureuse année 2012, qu'elle vous apporte SANTE, REUSSITE, PROSPERITE et beaucoup d'INGENIOSITE.

J'ai créer un espace admnistration de mon site qui marche impeccable sauf pour ce qui est de la modification
du contenu texte. (J'ai pas d'image à insérer.)

Je viens vers vous car j'ai besoin d'aide sur la manière de gérer mon contenu texte via un formulaire
(une des pages de mon espace administration de site) PHP/MYSQL.

Voici la table contenant mes les infos à manipuler depuis mon formulaire:

  1. CREATE TABLE `contenupage` (
  2. `id` INT(11) NOT NULL AUTO_INCREMENT,
  3. `langue` text NOT NULL,
  4. `titrecolonne1` text NOT NULL,
  5. `contenucolonne1` text NOT NULL,
  6. `titrecolonne2` text NOT NULL,
  7. `contenucolonne2` text NOT NULL,
  8. `titrecolonne3` text NOT NULL,
  9. `contenucolonne3` text NOT NULL,
  10. `titrepage` text NOT NULL,
  11. `lienpage` text NOT NULL,
  12. PRIMARY KEY (`id`)
  13. ) ;


Les infos contenus dans les champs "contenucolonne1","contenucolonne2","contenucolonne3" sont des textes
avec des apostrophes ou des caractères accentués (exple: L'article posté préseantait d'énormes fautes.).

Dans mon formuaires je fait apparaitre pour modifications ces champs dans un <textarea></textarea>.

Voici aperçu du script affichant ce contenu:


  1. $sql1WX = "SELECT id, langue, titrecolonne1, contenucolonne1,titrecolonne2, contenucolonne2, titrecolonne3, contenucolonne3, titrepage, lienpage FROM contenupage";
  2.  
  3. // on exécute la requête
  4. $req1WX = mysql_query($sql1WX) or die('Erreur SQL !<br />'.$sql1WX.'<br />'.mysql_error());
  5.  
  6. echo"<form method='POST' action='validation_modif_contenupage.php'>
  7. <table width='744' border='0' align='center'>
  8. <tr>
  9. <td width='744' height='32' align='center' ><input type='submit' name='ok' value='ENREGISTREMENT MODIFICATION'><br><br></td>
  10. </tr>
  11. </table>";
  12.  
  13. // on va scanner tous les tuples un par un
  14. while ($dataWX1 = mysql_fetch_array($req1WX)) {
  15.  
  16. echo "
  17. <table width='744' border='0' cellpadding='0'>
  18. <tr>
  19. <td width='744' height='15'>
  20. Id : ",$dataWX1['0']," - Langue <input type='text' name='langue' value='",$dataWX1['1'],"' size='15'><br><br>
  21. </td>
  22. </tr>
  23. <tr>
  24. <td width='744' height='15'>
  25. Titre Colonne 1 : <input type='text' name='titrecolonne1' value='",$dataWX1['2'],"' size='15'> Contenu colonne 1:<br>
  26. <textarea id='textarea1' name='contenucolonne1' rows='3' cols='130'>".stripslashes(html_entity_decode($dataWX1['3']))."</textarea><br><br>
  27. </td>
  28. </tr>
  29. <tr>
  30. <td width='744' height='15'>
  31. Titre Colonne 2 : <input type='text' name='titrecolonne2' value='",$dataWX1['4'],"' size='15'> Contenu colonne 2:<br>
  32. <textarea id='textarea2' name='contenucolonne2' rows='3' cols='130'>".stripslashes(html_entity_decode($dataWX1['5']))."</textarea><br><br>
  33. </td>
  34. </tr>
  35. <tr>
  36. <td width='744' height='15'>
  37. Titre Colonne 3 : <input type='text' name='titrecolonne3' value='",$dataWX1['6'],"' size='15'> Contenu colonne 3:<br>
  38. <textarea id='textarea3' name='contenucolonne3' rows='3' cols='130'>".stripslashes(html_entity_decode($dataWX1['7']))."</textarea><br><br>
  39. </td>
  40. </tr>
  41. <tr>
  42. <td width='744' height='15'>
  43. Titre page : <br>
  44. <textarea id='textarea4' name='titrepage' rows='3' cols='130'>".stripslashes(html_entity_decode($dataWX1['8']))."</textarea><br><br>
  45. Lien page : <input type='text' name='lienpage' value='",$dataWX1['9'],"' size='20'>
  46. </td>
  47. </tr>
  48. </table>
  49. <table width='744' border='0'>
  50. <tr>
  51. <td><input name='id' value='",$dataWX1['0'],"' type='hidden'>
  52. </td>
  53. </tr></table></form>
  54. ";
  55. }
  56. // on libère l'espace mémoire alloué pour cette requête
  57. mysql_free_result ($req1WX);
  58. }
  59.  
  60. // on libère l'espace mémoire alloué pour cette requête
  61. mysql_free_result ($resultatWX);
  62. // on ferme la connexion à la base de données.



Dans ce formulaire le contenu de la table s'affiche sans soucis en codage HTML, c'est à dire que j'ai des balises <br> qui s'affiche si j'ai fait
un renvoie à la ligne, si j'ai écrit dans la table "é" (il apparait tel quel) ou si j'ai dans la table "é" (il apparait tel quel).

Jusque là pas de soucis.

Là où le problème survient c'est quand je fait une modification en ajoutant du texte, j'appelle la page validation_modif_contenupage.php dont
voici le une partie du code:

...
  1. $id=$_POST['id'];
  2. $langue=$_POST['langue'];
  3. $titrecolonne1=$_POST['titrecolonne1'];
  4. $contenucolonne1=$_POST['contenucolonne1'];
  5. $titrecolonne2=$_POST['titrecolonne2'];
  6. $contenucolonne2=$_POST['contenucolonne2'];
  7. $titrecolonne3=$_POST['titrecolonne3'];
  8. $contenucolonne3=$_POST['contenucolonne3'];
  9. $titrepage=$_POST['titrepage'];
  10. $lienpage=$_POST['lienpage'];
  11.  
  12. $contenucolonne1=addslashes(htmlentities($contenucolonne1));
  13. $contenucolonne2=addslashes(htmlentities($contenucolonne2));
  14. $contenucolonne3=addslashes(htmlentities($contenucolonne3));
  15. $titrepage=addslashes(htmlentities($titrepage));

....

  1. <?
  2.  
  3. $db=mysql_connect($mysql_host, $mysql_user, $mysql_password) or die ('IMPOSSIBLE DE SE CONNECTER');
  4. mysql_select_db($mysql_base, $db) or die ('BASE DE DONNEE INCONNU');
  5.  
  6. // on prépare une requête
  7. $sqluW="UPDATE contenupage set langue='$langue', titrecolonne1='$titrecolonne1', contenucolonne1='$contenucolonne1', titrecolonne2='$titrecolonne2',
  8. contenucolonne2='$contenucolonne2', titrecolonne3='$titrecolonne3', contenucolonne3='$contenucolonne3', titrepage='$titrepage', lienpage='$lienpage' WHERE id='$id'";
  9.  
  10. // on exécute cette requête
  11. $resultatuW = mysql_query($sqluW) or die('Erreur SQL !<br />'.$sqluW.'<br />'.mysql_error());
  12.  
  13. // on ferme la connexion à la base de données.
  14.  
  15. echo '<br><br><center><font color ="red">LE CONTENU A ETE MODIFIE</font>';
  16.  
  17. ?>

...

Une fois la le update fini ... c'est la catastrophe sur la page modifié car tout apparait avec <br> (s'il y en avait dedans) ... bref c'est tout si le code HTML contenu
dans la table n'était plus interprété correctement et apparaît brut tel quel!!

Je précise que l'emploi des stripslashes ou addslashes est semble t'il recommandé lors de restitution depuis bd ou d'injection de données dans la bd.
L'emploi de htmlentities ou html_entity_decode est là encore recommandé pour la conversion en injection ou restituion dans ou depuis bd mysql des caractéres
accentués.

Donc voilà résumé, mon soucis. je vous remercie de vos conseils et suggestions pour que mon espace administration soit vraiment complet.

Merci à tous d'avance pour toute contribution.

A bientôt.

Autres pages sur : probleme modification affichage contenu site via formulaire php mysql

a c 232 L Programmation
13 Février 2012 14:44:38

Salut,

Il faudrait regarder le contenu exact de ta base de données lorsque tu insères les données et lorsque tu les modifies.
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS