Bonsoir

J'essaie de concevoir un programme qui permette de modifier le contenu de certaines balises dans une page HTML.

Le design en gros:
- un script PHP qui charge la page HTML, effectue les adaptations nécessaires dans le code de la page et affiche le résultat
- un script JS qui effectue les actions suivantes:
+ lorsque l'utilisateur effectue un double clic que une balise "sensible", une zone "textarea" s'ouvre avec le contenu courant de la balise, l'utilisateur peut la modifier et confirmer la modification
+ l'information est transmise au serveur et rebelote sur la page ainsi modifiée
Est-ce que quelqu'un aurait déjà réalisé quelque chose de ce genre et pourrait me donner un avis sur la faisabilité de ce programme, les pièges à éviter, etc.

Merci de vos conseils
Jamais réalisé ce genre de projet mais ça ne paraît pas sorcier :

- Il faudrait identifier chaque élément <></> modifiable avec un id :
<p id="paragraphe-1" class="modifiable">...</p>

- En JS, retrouver l'élément <></> cliqué et le remplacer par un <textarea></> avec le name correspondant à l'id de l'élément

$(".modifiable").on("click", function() {
   var id = $(this).attr("id");
   var html = $(this).html();
   $(this).replaceWith("<textarea name='" + id + "'>" + html + "</textarea>";
})

- Côté PHP, pour chaque variable $_POST (donc pour chaque <textarea></> avec un name), on retrouve l'élément <></> avec l'id correspondant dans le HTML et on le remplace par la valeur de la variable $_POST (qui contient le nouveau contenu).

foreach($_POST as $name => $value) {
   // ...
   /// ici $_POST['paragraphe-1'] devrait contenir le texte saisi par l'utilisateur...
}

J'utiliserais au moins jQuery... mais bon, c'est un choix personnel...

Voilà, solution basique mais conceptuellement correcte... Après faut voir, il y a des milliers de solutions avec un cahier des charges si court... Possibilité de tout faire en AJAX. Ou alors d'embarquer toute la page dans un formulaire géant et la recharger à chaque soumission...
Modifié par Trehinos (07 Nov 2016 - 14:44)