En PHP, la fonction mail() suffit souvent pour envoyer des e-mails simples (format texte, pas de pièces jointes…)
La situation se corse lorsqu’il faut envoyer des pièces jointes, afficher des données en HTML sur tous les clients mails sans erreurs d’en-codage (vive les iPhone
!), ou encore ne pas être tout simplement rejetés d’office le FAI dans la boîte de spam de votre destinataires…
L’une des meilleures solutions consiste à passer par l’excellente librairie gratuite PHPmailer qui fait tout cela très bien… et simplement.
Créer un PDF dynamiquement avec PHP est un travail long, je dirais presque fastidieux…
La librairie gratuite FPDF simplifie sensiblement cette tâche, sans pour autant la rendre totalement intuitive. Concrètement, l’affichage des données s’apparente à un dessin créé avec les chaîne de caractères à afficher : tout doit être positionné à l’avance, il n’y aura dans la plupart des cas pas de retour à la ligne automatique (ni de redimensionnement selon la taille des écrans puisqu’il s’agit d’un format d’impression)
Voici un petit tutoriel FPDF de base, pour la créer un fichier PDF avec des données extraites d’une base des données et incluant un tableau : cela suffira à couvrir 95% des besoins…
Il y a peu de développeurs à qui la question a échappé : le passage d’un serveur en PHP 7 entraine une cascade d’erreurs sur le pages, commençant en général par « MySQL depracated » ou « Fatal error: Uncaught Error: Call to undefined function mysql_query() in … »
Concrètement toutes les fonctions de connexion aux bases des données mysql_xxx() sont à modifier, pour tenter (entre autre) d’endiguer les vagues des piratages de bases liées aux failles de sécurité.
Si vous n’utilisiez pas le langage orienté objet (nommé du doux nom de « PDO »), les mises à jours liées à ce changement peuvent sembler barbares sur beaucoup de tutoriels…
En fait, il est inutile de changer : si vous avez l’habitude de programmer en PHP « classique » (autrement dit en mode dit « procédural »), ne changez rien, c’est inutile !
Une petite fonction PHP toute simple, qui permet d’envoyer un e-mail contenant des caractères spéciaux (en particulier des accents).
L’objet de l’e-mail ainsi que le contenu sont supposés provenir soit d’une base des données soit d’une page HTML avec un formulaire de saisie, l’un et l’autre encodés en UTF8.
Pourquoi une validation des e-mails avec PHP ? Parce que la plupart des formulaires de contact incluent la saisie d’un e-mail, de manière à pouvoir répondre à la demande. Et la plupart des internautes détestent les spams… Un certain nombre de petits malins ont donc tendance à insérer une fausse adresse, voire ‘xxxxx’ pour shunter l’obligation de saisie. Sans compter les fautes de frappe (que l’on peut limiter avec une double saisie de cet e-mail)…
Pour écarter les pièges les plus grossiers, il est donc nécessaire de contrôler au minimum la présence d’une arobase @, ainsi que d’une extension du nom de domaine (.com, .fr, etc.)
Le problème de la limite de session sur phpMyAdmin est surtout gênant lorsque vous travaillez en local sur vos bases des données (avec WampServer ou easyPHP par exemple) : par défaut, toutes les 23 minutes (1400 secondes), une déconnexion vous oblige à ressaisir les identifiants d’accès. C’est pénible, à la longue…
Si vous avez accès aux fichiers du serveur, la solution est très simple.
Comparer deux dates : cette question se pose régulièrement pour un développeur , afin de déclencher (ou non) un évènement. La date que je vais extraire de ma base des données est-elle passée ? Ou à venir ?
Or comparer deux dates au format MySQL (AAAA-mm-jj) ne fonctionne pas toujours selon les mois calendaire (à 2, ou à 1 chiffre ?)…
La solution consiste à ramener les 2 dates en secondes par rapport à une date de référence (1er janvier 1970 par défaut); puis à les comparer. Exemple ici : […]
Hier je me connecte au back-office d’un de mes sites développés sous WordPress, je cherche un article à mettre à jour, et là panique : la zone de saisie est vide et l’éditeur de texte n’a plus de barre d’outils
…
En creusant un peu j’ai vite découvert que le texte était toujours dans la zone de saisie de la page ou de l’article, mais il était devenu blanc… sur fond blanc (en le sélectionnant il apparaissait) !
Quelques recherches sur Google m’ont permis de trouver la solution à ce bug, je la partage : cela fera surement gagner du temps à l’un ou l’autre.
Pour générer en PHP un fichier au format Excel (.xls ou .csv), la solution traditionnelle était de créer un tableau HTML, dont chaque ligne (<TD></TD>) correspondait à un tuple de la table MySQL exportée en boucle.
Oui, mais… si Excel sait lire le format HTML, les versions récentes affichent un désagréable message à l’ouverture du fichier pour signifier que le langage qu’on lui impose n’est pas le sien :
« Le format et l’extension du fichier « xxx.csv » ne correspondent pas. Le fichier peut présenter un risque ou avoir été endommagé. Ne l’ouvrez pas, à moins que la source soit fiable. Voulez-vous quand même l’ouvrir ? »
Comme quoi, le multiculturalisme ça ne marche pas pour les fichiers non plus…
Pour de multiples raisons, comme par exemple pour exporter une table entière au format Excel, il peut être souhaitable d’extraire les noms des champs d’une table MySQL via PHP.
L’astuce consiste à récupérer ces noms de colonnes en utilisant la commande « SHOW COLUMS FROM« …
C’est une demande récurrente de clients : « Faites-moi un champ de saisie de texte où on peut mettre du gras, de l’italique, des listes et des couleurs, comme Word« … L’objectif étant bien entendu de récupérer cette mise en forme, en général pour la stocker dans une base des données.
HTML ne permettant pas ce type de fantaisies, il faut donc se tourner vers les « éditeurs de texte » open-source. Il y en a quelques uns, je présente ici l’intégration de Tiny-MCE. C’est à la fois l’un des plus abouti, et des plus simple d’utilisation. C’est celui qu’a choisi le N°1 des moteur de blog (WordPress) : ce n’est pas pour rien…

L’auto-complétion consiste à proposer une pré-sélection de valeurs dans le champ texte d’un formulaire.
Ces valeurs sont extraites à la volée d’une base des données, et contiennent le caractère (ou la chaîne de caractères) déjà saisi par l’utilisateur.
Cette fonction utilise AJAX (JavaScript + PHP), c’est à dire qu’il n’est pas nécessaire de recharger une page pour extraire dynamiquement et afficher les valeurs souhaitées depuis une base des données. Le moteur utilisé dans cet exemple est JQuery-UI (puissant JavaScript opensource)
Tout développeur qui se respecte a eu un jour (au moins !) besoin d’envoyer des e-mail depuis un site en développement local. Ne serait-ce que pour tester la mise en forme du sacro-saint formulaire de contact…
Ceux qui utilisent la plateforme de développement web sous Windows WampServer ont pu constater qu’elle n’intègre plus par défaut de serveur d’envoi des e-mails. L’envoi d’un e-mail génère au mieux : rien du tout; au pire : un message d’erreur (Failed to connect to mailserver at « localhost » port 25, verify your « SMTP » and « smtp_port » setting in php.ini… etc.)
Il existe une solution simple et efficace : le serveur SMTP ( (Simple Mail Transfer Protocol) Fake Sendmail for Windows !
PHP est un langage d’extraction et d’affichage, mais sa puissance de calcul est limitée. Qui n’a pas été confronté un jour ou l’autre à ses erreurs ses memory_limit, upload_max_filesize ou autres blocage du temps de connexion d’un script ?
Il est possible de « bidouiller » le serveur pour tenter de rallonger tout cela, mais c’est tout de même limité et handicapant lorsque certains exports de grosses bases des données nécessitent des calculs croisés complexes. L’autre solution consiste à exporter les tables, puis à les retravailler avec les tableaux croisés dynamiques de Excel ou Access, par exemple, dont c’est la vocation.
Mode d’emploi pour un export PHP propre, d’une table MySQL vers un ficher Excel (csv en l’occurrence) …
Les captcha, vous savez tous ce que c’est : ces petits champs à remplir au bas des formulaire web pour prouver que vous êtes bien… humains ! On ne sait jamais… « des fois que vous soyez des algues » ?
Bref, c’est moche, souvent illisible et pénible à remplir. Les pires ce sont ceux de Google … à pleurer de laideur.
Celui que je vous propose ici, c’est comme l’œuf de Christophe Colomb : tellement simple qu’on aurait presque honte de ne pas y avoir pensé tout seul avant ! […]
Cela s’appelle un BOM (Byte Order Mark) ou, en français, « Marque d’Ordre des Octets », il se trouve au début des fichiers UTF-8 et contient des renseignements sur le sens de lecture des données.
Malheureusement, certains logiciels n’interprètent pas correctement le BOM, ils le considèrent comme une partie du texte et l’affichent…

Classique des caractères latins et des extractions de bases des données UTF8 …
Le sujet a déjà été traité mais une petite synthèse ne fait pas de mal !
NOTA : article mis à jour ici (juin 2015)
Depuis la version d’Excel 2007, les exportations en PHP de données sous Excel (par exemple des extractions depuis une table MySQL) déclenchent l’affichage d’un désagréable message d’erreur à l’ouverture du .xls
Il y a bien la solution de passer outre, les données sont tout de même présentes dans le fichier exporté…
Mais il existe une autre solution plus « propre » !
Vous avez mis à jour votre serveur, et votre nouvelle version PHP est supérieure ou égale à la version 5.3 ?
ce message de « Warning » apparaitra au sommet de bien des pages (si vous autorisez les erreurs à s’afficher pour débuguer le code, bien entendu!)…
La solution est simple.
<< Cliquez pour agrandir
Opéra, vous connaissez ? C’est le dernier must des navigateur de geeks !
Personnellement je ne suis pas emballée pour plein de raisons que je ne vais pas détailler ici, mais il a UN avantage sur tous les autres… Il intègre dans ses moteurs de recherche par défaut le manuel PHP ! Mode d’emploi ici …