[MySql] Remplacement dans un champ "longtext" sur toute une table#21437
3Contributeur(s)
3 Modérateur(s)
mrotta
J'ai un doute sur la manière de faire.
Dans mon module wiki, je veux mettre en place une fonction permettant de changer le nom wiki d'une page. Ce nom est stocké à deux endroit, un champ indexé unique, facile, une bête requête SQL, 1 enregistrement modifié et le tour est joué.
Plus dur. Le contenu des pages est stocké dans un "longtext". Dans n'importe quel page peut figurer de 0 à N références à ma page renommée. La syntaxe du lien est :
((NomWiki Nom que je veux voir afficher)
Donc si je fais une recherche sur "((NomWikiVieux" et que je le remplace par "((NonWikiNouveau" et ce dans chaque page, c'est bon.
Mais il faut le faire pour toutes les pages du wiki. Et dans la table wiki est conservé l'historique des modifications, cela peut donc faire beaucoup de pages. Comment faire cela avec une requête SQL sans mettre une usine qui reprend tous les enregistrements qui contiennent "((NomWikiVieux" et les modifies 1 à 1... ??
:-? :-? :-?
developpeur
fait plustot des petites requetes qu'une grosse ... c'est plus performant et prend en fin de compte moins de temps
mrotta
Un requête pour récupérer la liste des pages concernées.
Une boucle de lecture en php pour changer dans la zone tous les occurance avec autant de requête de mise à jour que d'enregistrement
Dans cette idée là ?
developpeur
oui / décomposer c'est toujours plus simple à comprendre ... et donc à réaliser :-)
mrotta
C'est un de mes adages :
Quant un problème est trop compliquer, il faut le séparer en plusieurs petits problèmes simple.
Mais une bonne requète SQL, parfois, c'est simple aussi... Je vais faire du code.
Le module devient mature, il devrait bientôt quitter l'alpha pour entrer en version béta. Comment on peut envisager la suite ?
Proposition, c'est fais
Tests, c'est en cours
Optimisation, ... heu oui, on y travail
Validation, certe mais encore
Champagne, ... heu crémant d'Alsace, ça le fait aussi ?