logo

NPDS : Gestion de contenu et de communauté


Content & Community Management System (CCMS) robuste, sécurisé, complet, performant, parlant vraiment français, libre (Open-Source) et gratuit.
15 visiteur(s) et 1 membre(s) en ligne.
Activité du Site

Pages vues depuis 25/05/2001 : 104 287 191

  • Nb. de membres 8 691
  • Nb. d'articles 1 691
  • Nb. de forums 25
  • Nb. de sujets 8
  • Nb. de critiques 92

Top 10  Statistiques

Web Pro : Ecrire une "Moulinette" - #1 9781


 Lorsque l'on maintient un site internet, il arrive forcément un jour où l'on doit modifier 'en rafale', le contenu d'une donnée située dans une table de la base de données Mysql.

 

La plupart des professionnels de l'informatique en général et des NTIC's, en particulier, savent ce qu'est une moulinette'.

Si c'est votre cas et, qu'en plus, vous êtes un virtuose de php, alors je vous propose de retourner à votre passe-temps préféré car ce qui suit ne vous apprendra rien.

Sinon, voici la suite:

Je ne comprenais pas pourquoi, quelle que soit la valeur indiquée dans les préférences de NPDS, le nombre de news affichées dans la page principale, pour un utilisateur enregistré, se limitait toujours à 10.

Je voulais que les 25 derniers articles soient affichés.

Une petite consultation de la bible de NPDS (CONFIGURATION: Les préférences) m'a permis de trouver la raison...

J'ai appris que la donnée concernée par cette limite était storynum, donnée de la table Users. Lors de la création d'un utlisateur, la donnée storynum est initialisée à 10 et cette valeur prime sur la valeur 5 (indiquée dans les préférences), qui s'adresse aux visiteurs non inscrits.

Il ne me restait plus qu'a corriger la valeur de storynum pour chaque utilisateur.

Ceci dit, comment faire lorsque plus de deux cents utilisateurs sont déjà enregistrés...

Première solution: modifier à la main, le contenu de la donnée en question.

C'est juste long comme un jour sans pastis! (même avec modération...).

Plutôt 'cossard' par nature, j'en ai choisi une autre, moins chronophage...

J'ai opté pour l'écriture d'une moulinette en PHP, qui remplacerait automatiquement le contenu de storynum de chaque élément de la table Users par la valeur 25, pour ce site.

Comme ça a bien marché (en une seconde tout au plus), je propose la méthode à tous ceux qui voudraient bien et qui n'osent pas.

La moulinette en question se découpe en quatre éléments:

A-Déclaration des identifiants de connexion à la base mysql:

moulinette_1.jpg

 

B-Connexion:

moulinette_2.jpg

 

C-Requête de modification:

moulinette_3.jpg

D-Traitement du résultat:

moulinette_4.jpg

 


Procédure:

1) placer le code source dans un répertoire spécifique et protégé de votre site au moyen de votre client ftp habituel;

2) Sauvegarder la table avant toute exécution (on ne sait jamais...). 

3) Exécuter le code php à l'aide de votre navigateur.

    Si tout se passe bien, le nombre de données modifiées sera affiché en résultat du traitement.

4) Contrôler le résultat en consultant la table..


La version non commentée donne ceci:

moulinette_light.jpg

 

Dernier point : vous l'aurez compris, il suffit de peu de modification dans le code pour modifier/initialiser une autre donnée dans une autre table.

Enfin et si vos tables sont préfixées il faudra simplement rajouter le prefix à la table users (par exemple : si le prefix est "1234" alors il faut mettre 1234users)

 


bartok Publié le : Samedi 21 décembre 2013 à 17:58

gilbau gilbau
Il aurait suffit d'aller dans le sql.free.Fr

login et mot de passe

et d'executer



update users SET storynum ='25' WHERE storynum='10';



Et pour npds, n'étant pas du tout programmeur

j'ai plein de "moulinettes" sql, car il y a des manques dans la gestion des forum et j'ai eu des besoins spécifiques

Voici quelques commandes a adapter selon les forum npds



Deplacer tous les messages d'un sujet vers un autre sujet pour les fusionner (le 1er topic_id est celui qui existera)

UPDATE `posts` SET `topic_id` = 20224 WHERE `topic_id` =20279;



Fonction pour le parametre permetant de recevoir des messages privés pour tous les utilisateurs

UPDATE `users` SET `send_email` = '1' WHERE uid > 1;



effacer messages du tchat d'un user

DELETE FROM `chatbox` WHERE `username` = 'pseudo_du_membre'



Exemples pour Enlever les message privés anciens

DELETE FROM `priv_msgs` WHERE `msg_time` <= '2013-01-01 00:00:01';

DELETE FROM `priv_msgs` WHERE `msg_time` <= '01-01-2009 00:01';

DELETE FROM priv_msgs WHERE SUBSTRING(msg_time,7,4) < '2009'



Mise à jour en groupe 35 (membre du groupe 35 avec nombre de messages postés superieur à 4)

UPDATE `users_status` SET `groupe` = '35' WHERE groupe = 0 and posts >4;



update theme du site en theme donné

UPDATE `users` SET `theme` = '' WHERE `theme` = 'nouveau_theme';



Enlever les post liés

UPDATE `posts` SET `post_idH` = "" WHERE post_idH >1;



mettre les stories en 0 (visiteurs) au lieu de 1 (membres)

UPDATE `stories` SET `ihome` = 0 WHERE ihome = 1;



effacer les messages privés à telle date et tel user vers tel user

DELETE FROM `priv_msgs` WHERE `msg_time` >= '27-09-2011 17:02' and from_userid =19353 and to_userid =12587;



effacer les envois de messages privés de tel user

DELETE FROM `priv_msgs` WHERE `msg_time` >= '15-05-2013 17:02' and from_userid =1202;



Changer ID user pour un autre user dans les posts (nouveau pseudo du membre vers ancien)

UPDATE `posts` SET `poster_id` = 13036 WHERE `poster_id` = 31856;



cacher les posts d'un user

UPDATE `posts` SET `post_aff` = 0 WHERE poster_id =11060;



cacher les posts d'un user

UPDATE `posts` SET `post_aff` = 0 WHERE poster_id =15926;



remettre visible messages d'un user

UPDATE `posts` SET `post_aff` = 1 WHERE poster_id =15926 and forum_id=19;



cacher les posts d'un user à partir d'un numero de message

UPDATE `posts` SET `post_aff` = 0 WHERE poster_id =19353 and post_id >2260284;



Fonction pour limiter le nombre d'articles en premiere page pour tous les utilisateurs

UPDATE `users` SET `storynum` = '20' WHERE uid > 1;



pour fusionner les posts de 2 pseudos

UPDATE `posts` SET `poster_id` = '31400' WHERE poster_id = 30492;



Fonction pour ajouter ou remanier les moderateurs

UPDATE `forums` SET `forum_moderator` = '14,46,3184,5292,9893,20834,21194,745,13140' WHERE forum_id > 1;
developpeur developpeur
pour la bible se serait parfait non ?
bartok bartok
Ok. En avant pour la bible.
bartok bartok
Ok. En avant pour la bible!
Visiteur Visiteur
Les commentaires sont la propriété de leurs auteurs. Nous ne sommes pas responsables de leur contenu.