Blog Tech

Supprimer les doublons d’une table SQL

PHP (My)SQL 23
A ce point ?PassableIntéressantYeahExcellent! (17 vote(s), 4,82/ 5)
Loading...

Une base de donnée bien pensée dès le départ n'est pas censée contenir de doublons, mais comme l'erreur est humaine, je vous propose une méthode de suppression de vos doublons MySQL.

Création de la table

Pour l'exemple je vous propose de créer une table 'membre' simple :

[sql]CREATE TABLE membre (
id int(10) NOT NULL AUTO_INCREMENT,
nom varchar(30),
prenom varchar(30),
age int(3),
datecreation timestamp NOT NULL default CURRENT_TIMESTAMP,
PRIMARY KEY (id)
);[/sql]

Nous admettrons que l'unicité est basée sur la composition du nom et prénom, c'est à dire que deux personnes physiquement différentes ne peuvent avoir le même couple de nom+prénom (ce qui dans la réalité n'est bien sûr pas valable). » Lire la suite

Sortie de WPX-LastPostMod 1.1

PHP (My)SQL 2
A ce point ?PassableIntéressantYeahExcellent! (1 vote(s), 4,00/ 5)
Loading...

Je vous ai présenté hier mon premier plugin WordPress WPX-LastPostMod. J'ai tenu compte de certains commentaires (merci Michaël) et évolutions proposées pour aujourd'hui vous proposer une nouvelle version (1.1).

Les nouveautés et changements :

  • Ajout de la fonction is_post_modified() qui permet de tester si un billet a été éditer, et ce sans rien afficher (retourne un booléen)
  • Ajout d'une classe CSS ".lastpostmod" qui vous permettra de mettre en forme la notification de mise à jour de vos billets
  • Suppression de l'unique requête sql du plugin, je me sert directement de la variable $post initialisée nativement par WordPress (plus léger)

Pour l'occasion j'ai réalisé un mini site d'information qui vous permettra de suivre les évolutions du plugin, les exemples d'utilisations, etc. N'hésitez donc pas à y faire un tour 😉

Vous pouvez faire la mise à jour du plugin sans pour autant aller modifier à nouveau single.php, tout est "rétro-compatible", l'appel au plugin de fait de la même façon.

Note : pour celles et ceux qui se demandent pourquoi pas mal d'informations sur le plugin ne sont uniquement disponible qu'en anglais, c'est tout simplement pour que le plugin soit utilisé sur un maximum de blog sans trop de difficulté. Si vous souhaitez avoir une traduction française, faites le moi savoir 😉

Sachez également que je suis en attente de validation sur WordPress.org, vous pourrez également le retrouver là bas un peu plus tard (sûrement une relecture du code par un modérateur)...

Télécharger WPX-LastPostMod 1.1

Remettez vos vieux billets au goût du jour avec WPX Last Post Mod

Le blog, PHP (My)SQL 12
A ce point ?PassableIntéressantYeahExcellent! (3 vote(s), 3,67/ 5)
Loading...

Lorsque vous rédigez un billet avec WordPress la date de création est mémorisée et affichée sur le billet (l'endroit dépend des thèmes). Il m'arrive personnellement de revoir certains billets pour plusieurs raisons :

  • fermeture d'un site qui a fait l'objet d'un billet (comme ici)
  • ajout d'informations importantes glanées sur le web en relation avec le billet
  • si une astuce/conseil n'est plus d'actualité il faut le signaler et ajouter une note explicative, ce n'est pas parce que c'est un ancien billet qu'on peut y laisser n'importe quoi
  • correction pour faute de frappe/orthographe/grammaire

Naissance d'un plugin

C'est pour la majorité de ses raisons que vous vous devez d'en informer vos lecteurs de la revue de l'un de vos billets. Par défaut il n'est nul part prévu d'afficher la date de modification d'un billet... Suite à ça j'ai fait plusieurs recherches sur le web au niveau des différents plugins existants sur la communauté WordPress, pour arriver à un constat assez simple : aucun des plugins ne me convenait mais un s'en rapprochait.

N'ayant jamais réalisé de plugin WordPress, je me suis lancé et je vous présente donc mon premier plugin WPX-LastPostMod (WordPress Xhark Last Post Modification) » Lire la suite

Importer une base SQL en console (WAMP)

PHP (My)SQL 16
A ce point ?PassableIntéressantYeahExcellent! (3 vote(s), 4,67/ 5)
Loading...

J'ai récemment changer de PC, il m'a fallu exporter mes bases de données (depuis phpMyAdmin) dans un fichier texte (.sql).

Au moment de l'importation avec PhpMyAdmin j'ai eu un message d'erreur de la part du serveur Apache :

Fatal error: Maximum execution time of 300 seconds exceeded

Mes bases de données sont trop volumineuses pour les importer via phpMyAdmin (plus de 5 mo) en HTTP.

J'ai eu beau modifier tous les fichiers de configuration (php.ini, etc.), il a du rester un endroit où le temps maximal d'exécution n'a pas été modifié...

La solution la plus simple pour faire de l'import massif reste la console mysql. Voici comment importer une telle configuration sur une plateforme Windows :

  1. Copiez votre fichier .sql (localhost.sql dans mon cas) dans le répertoire contenant mysql.exe (pour ma part : C:\wamp\bin\mysql\mysql5.0.51b\bin)
  2. Ouvrez une fenêtre DOS (Touche Windows + R > CMD [OK])
  3. Déplacez vous en ligne de commande dans le répertoire de mysql.exe (cd C:\wamp\bin\mysql\mysql5.0.51b\bin dans mon cas)
  4. Puis lancez l'importation du fichier : mysql -u root -p VotrePassword NOM_BDD < localhost.sql ("root" étant à remplacer par le nom d'utilisateur de votre base de donnée s'il diffère)
  5. L'invite vous demande votre mot de passe ("Enter password:")
  6. Si aucun message d'erreur n'est apparu, l'importation est terminée 🙂 Dans le cas contraire, des erreurs explicites vous indiqueront ce qui cloche (ce sont les mêmes erreurs que vous auriez eu avec phpMyAdmin puisque c'est le moteur MySQL qui les génère).

Si vous avez des erreurs du style "Can't create database 'toto'; database exists" vous pouvez utiliser phpMyAdmin pour pallier à la situation (supprimez la table qui existe déjà dans ce cas précis).

Vous pouvez également utiliser mysqlimport.exe présent dans le même répertoire que mysql.exe, cela peut vous être utile dans des scripts batch par exemple.

Pour importer rapidement une base gzippée sous Linux (source) :

gunzip -c /chemin/base.sql.gz | mysql -h hostname -u utilisateur -p  nom_de_la_base

Je vous rappelle que WAMP n'est pas destiné à être utilisé en production. Il doit être employé à des fins de tests en pré-production par exemple.

Note : avez-vous reconnu le logo de phpMyAdmin façon "naturelle" en haut de ce billet :p ?

Télécharger WAMP - Télécharger phpMyAdmin

PHP4 vécut heureux et interpréta beaucoup de scripts

PHP (My)SQL commenter
A ce point ?PassableIntéressantYeahExcellent! (Votez !)
Loading...

Ca y est, PHP version 4 vient de donner son dernier souffle, hier le 07 Août 2008. La version 4.x existait depuis l'année 2000, elle restera une étape importante dans l'évolution que peut connaître ce langage, relativement intuitif et facile à comprendre.

C'est la version 4.4.9 qui sera la dernière, avec quelques corrections de bugs.

Vous n'êtes toujours pas sur PHP5 ? Dépéchez vous car la version 6 va très vite s'implanter sur de nombreux serveurs web, avec des modifications majeures par rapport à la version 4.

En effet le bon sera plus difficile si vous sautez 2 versions !

Côté version 5 nous en sommes à l'heure ou j'écris ce billet, à la version 5.3 alpha 1.

Site officiel PHP

Script d’upload PHP propre et sécurisé

PHP (My)SQL 1
A ce point ?PassableIntéressantYeahExcellent! (9 vote(s), 3,89/ 5)
Loading...

But : créer un script d'envoi de fichiers PHP

Sur la toile le nombre de scripts d'envoi PHP (upload) est incalculable. La grande majorité de ces scripts est obsolète : mauvaise sécurité, crée pour une ancienne version de PHP et donc pas optimal, mauvaise logique de langage, etc.

Je vous propose de découvrir un script réalisé en PHP, et qui plus est en POO avec des classes, qui vous permet de réaliser ce formulaire d'envoi correctement. Je l'ai découvert sur le site de Miasmatech et j'avoue que les explications sont très pédagogiques et accessibles 🙂

Lire le tutoriel (version pdf mirroir)

Version spéciale de WordPress : Crazy Horse

PHP (My)SQL commenter
A ce point ?PassableIntéressantYeahExcellent! (Votez !)
Loading...

Il existe une version de WordPress un peu différente de la version officielle : WordPress Crazy Horse.

C'est une version dans laquelle les développeurs incorporent des fonctionnalités qu'ils verraient bien dans une future version définitive. On retrouve donc une interface de gestion différente, plus accessible (ajax) ainsi que de nombreux éléments bien pensés 🙂

Pour tester la démo rendez-vous ici (login : demo, password : demo).

SVN de WordPress Crazy Horse

Générateur de clés WordPress

PHP (My)SQL 1
A ce point ?PassableIntéressantYeahExcellent! (2 vote(s), 4,50/ 5)
Loading...

But : configurer les nouvelles clés de protections WordPress dues à la version 2.6

Si vous avez migré sur WordPress 2.6 vous devriez revoir votre fichier wp-config.php à la racine de votre blog.

En effet ce fichier a été complètement revu dans le but d'un support HTTPS (si votre serveur apache le supporte) pour la consultation et/ou l'administration. La SECRET_KEY n'existe plus, et ce au profit de 3 nouveaux champs :

define(’AUTH_KEY’, ‘mettez votre expression unique ici’);
define(’SECURE_AUTH_KEY’, ‘mettez votre expression unique ici’);
define(’LOGGED_IN_KEY’, ‘mettez votre expression unique ici’);

Le meilleur moyen de remplir ses champs n'est pas de faire appel à votre imagination, mais plutôt à un générateur aléatoire, qui plus est fourni par l'équipe de WordPress 🙂

Accéder au générateur WordPress
Plus d'infos sur ces clés via WP-France

Fonction PHP BR2NL(); inverse de NL2BR();

PHP (My)SQL 7
A ce point ?PassableIntéressantYeahExcellent! (Votez !)
Loading...

But : convertir les retours chariot en saut de ligne HTML

Sans doute usez-vous parfois de la fonction nl2br() de PHP ? Celle-ci est très utile lorsque vous récupérer des valeurs depuis une base de donnée vers des "textarea".

Pour le développement d'EG j'ai eu besoin d'utiliser la fonction inverse (suite à une migration j'ai du fusionner nos deux bases de données). Sauf que... celle-ci n'existe pas, la voici donc :

function br2nl($foo) {
return preg_replace("/\<br\s*\/?\>/i", "\n", $foo);
}

Si jamais vous avez le besoin de remplacer 2 "<br />" à la suite, voici le code :

preg_replace("/(<br\s*\/?\>){2,}/", "\n", $foo);

Détecter la version PHP installée

PHP (My)SQL 2
A ce point ?PassableIntéressantYeahExcellent! (Votez !)
Loading...

But : détecter la version de PHP interprétant le code source sur son serveur

Suivant les versions de PHP vos scripts peuvent plus ou moins fonctionner.

Je vous propose aujourd'hui une astuce permettant de détecter la version PHP mais également de préciser votre version minimale requise.

En effet j'ai déjà eu assez de surprises dans ce style, surtout lorsque vous fournissez un script qui peut-être réutilisé par d'autres personnes : source d'incompatibilité garantie.

Voici une fonction permettant de pallier à ce souci » Lire la suite