Accueil
Enregistrer des emoji dans une base de données MySQL
Depuis quelques années, les "emoji" se sont répandus sur le web comme une traînée de poudre. La première fois que je me suis essayé à les utiliser, j'ai rapidement confronté à un problème : en enregistrant du texte en contenant dans une base de données MySQL, les émoticônes disparaissaient et tronquaient le reste du texte.
Après de brèves recherches, j'ai constaté que cela provenait d'un problème d'encodage. Les colonnes de mes tables étaient encodées en "utf8_general_ci". Or, il s'avère que les "emoji" sont codés sur 4 octets, alors que l'encodage précité n'en supporte que 3 maximum. Pour palier à ce problème, MySQL (depuis la version 5.5.3) propose un autre encodage appelé "utf8mb4". Avec ce dernier, l'enregistrement des "emoji" en base n'est plus un problème.
Liens utiles :
Lire ...jQuery - Appeler $(this) à l'intérieur de la fonction Ajax
Lorsque l'on souhaite appeler l'élément $(this) dans une
fonction Ajax à la suite d'un événement, une erreur survient. En
effet, dans la fonction callback, "this" se réfère à l'objet
"jqXHR", et non à l'élément sur lequel l'événement a été
rattaché.
Heureusement, il existe des solutions simples pour pallier à ce petit désagrément. La première consiste à utiliser l'option "context" :
$("input").click(function()
{
$.ajax({
//...
context: this,
success: function(json) {
// `this` se réfère bien à 'input'
}
});
});
Utilisation de l'élément de "$.proxy" :
$.ajax({
//...
success: $.proxy(function(json) {
// `this` se réfèrera au second argument de `$.proxy`
}, this)
});
Une troisième solution :
var element = this;
$.ajax({
//...
success: function(json) {
// `this` se réfère à l'objet jQXHR
// `element` se réfère à l'élément DOM
// `$(element)` se réfère à l'objet jQuery de notre élément
}
});
Lire ...
C# : Permuter deux variables avec l'opérateur
En C#, il existe de multiple manières de permuter deux
variables. Une technique méconnue consiste à utiliser l'opérateur
XOR.
La plus connue et la plus habituelle de ces méthodes est, bien entendu, d'utiliser une troisième variable :
int a = 3;
int b = 6;
int c = a;
a = b;
b = c;
Pour éviter de créer une troisième variable comme dans l'exemple ci-dessus, il est possible d'utiliser l'opérateur XOR :
int a = 3;
int b = 6;
a = a ^ b; // donne 5
b = a ^ b; // donne 3
a = a ^ b; // donne 6
Explication :
L'opérateur XOR peut se définir par la phrase suivante : Le résultat est VRAI si un et un seul des opérandes A et B est VRAI. Cela donne la table de vérité suivante :
Table de vérité de XOR | ||
A | B | R = A ⊕ B |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
En binaire, le chiffre 3 correspond à "0011" et le 6 à "0110". Ainsi l'opération 6 ^ 3 donne 5, c'est-à-dire, en binaire, "0101" puisque :
- 0 ^ 0 = 0
- 0 ^ 1 = 1
- 1 ^ 1 = 0
- 0 ^ 1 = 1
Si l'on répète cette opération comme dans l'exemple ci-dessus, on obtient la permutation de nos deux variables.
Lire ...Faire fonctionner cURL avec PHP 7 et Wamp
Après avoir installé Wamp et PHP 7 sur mon Windows 10, j'ai
voulu utiliser cURL. Je l'ai donc rendu disponible dans les
"php.ini" (ceux d'Apache et de PHP) et j'ai redémarré Wamp. Hélas,
malgré cela, cURL demeurait inutilisable.
Suite à quelques recherches, j'ai finalement trouvé la solution pour résoudre le problème. Dans un premier temps, j'ai copié le fichier "libssh2.dll" du dossier de PHP et je l'ai collé dans le dossier "bin" d'Apache.
J'ai ensuite ouvert le fichier "httpd.conf" et j'ai rajouté la ligne suivante :
LoadFile "c:/wamp/bin/php/php7.0.4/libssh2.dll"
Bien entendu, vous devez remplacer le chemin ci-dessus par celui qui correspond à votre configuration.
Lire ...Réparer une chaîne HTML en PHP
En récupérant du contenu via un WYSIWYG en PHP, il y a des
risques que des balises HTML mal formatées apparaissent. Pour
éviter ce désagrément, PHP nous fournit une bibliothèque intitulée
"Tidy". Cette dernière permet de nettoyer et manipuler des éléments
HTML.
Pour l'utiliser, il faut, selon votre situation, soit simplement l'activer (si vous utilisez WampServer, par exemple), soit l'installer.
Voici un exemple simple d'utilisation :
<?php
ob_start();
?>
<html>
<head>
<title>test</title>
</head>
<body>
<p>error</i>
</body>
</html>
<?php
$buffer = ob_get_clean();
$tidy = tidy_repair_string($buffer);
echo $tidy;
?>
Dans notre exemple, le code HTML est erroné. En effet, notre balise "<p>" n'est pas fermée et le mot "error" est entouré d'une balise fermante "i" jamais ouverte. La fonction "tidy_repair_string" va simplement nettoyer le code et nous renvoyer un HTML tout propre.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<title>test</title>
</head>
<body>
<p>error</p>
</body>
</html>
La fonction susmentionnée a donc fermé la balise "p", supprimé la balise "i" et ajouté un "doctype".
Si vous souhaitez uniquement parser le "body" d'un HTML, il suffit d'appeler l'option "show-body-only" :
$str = “<p>error.”
tidy_repair_string($str, array('show-body-only' => true), "utf8");
echo $str;
Le code ci-dessus retournera le code HTML suivant :
<p>error.</p>
Pour plus d'informations :
Lire ...Inclure sur son site un fichier JS hébergé sur Github
Si un jour vous avez essayé d'inclure et d'exécuter un fichier Javascript hébergé sur la plateforme Github, il est possible que vous ayez obtenu l'erreur suivante (Google Chrome) :
"Refused to execute script from ... because its MIME type (text/plain) is not executable, and strict MIME type checking is enabled."
Bien évidemment cette erreur vous empêche d'utiliser le Javascript. Pour pouvoir résoudre cette erreur, il suffit d'apporter une légère modification à l'URL. Il faut remplacer "https://raw.github.com/" par "https://cdn.rawgit.com/".
Exemple :
L'URL suivante ...
https://raw.githubusercontent.com/rmm5t/jquery-timeago/master/locales/jquery.timeago.fr.js
donnera :
https://cdn.rawgit.com/rmm5t/jquery-timeago/master/locales/jquery.timeago.fr.js
Lire ...Sélectionner toutes les checkbox avec JQuery
Dans ce tutoriel, on va créer un lien permettant de cocher toutes les checkbox d'un formulaire.
Code Html
<form id="tablesearch_form" name="tablesearch_form" action="" method="post">
<input type="checkbox" class="select_document_chkBx" name="entititesIds[]" value="1" />
<input type="checkbox" class="select_document_chkBx" name="entititesIds[]" value="2" />
<input type="checkbox" class="select_document_chkBx" name="entititesIds[]" value="3" />
</form>
<a class="select_all">Tout sélectionner</a> / <a class="deselect_all">Désélectionner</a>
Code JQuery
$('.select_all').click(function(){
$(".select_document_chkBx").each(function () {
$(this).attr('checked', true);
});
});
$('.deselect_all').click(function(){
$(".select_document_chkBx").each(function () {
$(this).attr('checked', false);
});
});
Lire ...
Alternance de couleurs en CSS
Le code suivant, très simple, permet de produire une alternance de couleur entre une succession d'élément.
CSS
tr:nth-child(odd)
{
background-color: red;
}
tr:nth-child(even)
{
background-color: green;
}
HTML
<table>
<tr>
<td>Renault</td>
<td>4L</td>
<td>1987</td>
</tr>
<tr>
<td>Ferrari</td>
<td>Enzo</td>
<td>2003</td>
</tr>
<tr>
<td>Ford</td>
<td>Mustang</td>
<td>1977</td>
</tr>
</table>
Lire ...
Retirer le « app.php » de l’URL sous Symfony2
Dans un premier temps, on active le module « mod_rewrite » sous Apache. Pour cela, on ouvre le fichier « httpd.conf », et on décommente la ligne suivante :
#LoadModule rewrite_module modules/mod_rewrite.so
On crée un fichier “.htaccess” dans le répertoire « web » de Symfony :
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
# Explicitly disable rewriting for front controllers
RewriteRule ^app_dev.php - [L]
RewriteRule ^app.php - [L]
RewriteCond %{REQUEST_FILENAME} !-f
# Change below before deploying to production
RewriteRule ^(.*)$ app_dev.php [QSA,L]
</IfModule>
Dans le « virtualhost », on passe l’option « AllowOverride » à « All » (elle est à « None » par défaut) :
Include "c:/wamp/alias/*"
<VirtualHost *:80>
ServerName mywebsite.dev
DocumentRoot C:\wamp\www\dossier_du_site\Symfony\web
<Directory C:\wamp\www\dossier_du_site\Symfony\web>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "C:\wamp\www"
ServerName localhost
ServerAlias localhost
</VirtualHost>
Lire ...
Convertir des fichiers Word ou Excel en PDF avec PHP
En utilisant le logiciel OpenOffice, il est possible de
convertir des fichiers générés sous Microsoft Word ou Excel en PDF.
Voici comment procéder ...
Au préalable, vous devez installer OpenOffice sur l'ordinateur ou le serveur sur lequel votre site Internet tourne.
Les fonctions génériques à implémenter :
private function MakePropertyValue($name,$value,$osm)
{
$oStruct = $osm->Bridge_GetStruct("com.sun.star.beans.PropertyValue");
$oStruct->Name = $name;
$oStruct->Value = $value;
return $oStruct;
}
private function word2pdf($doc_url, $output_url)
{
$osm = new \COM("com.sun.star.ServiceManager") or die ("Please be sure that OpenOffice.org is installed.\n");
$args = array($this->MakePropertyValue("Hidden",true,$osm));
$oDesktop = $osm->createInstance("com.sun.star.frame.Desktop");
if(file_exists($doc_url))
{
$oWriterDoc = $oDesktop->loadComponentFromURL("file:///".$_SERVER['DOCUMENT_ROOT'].'/'.$doc_url,"_blank", 0, $args);
$export_args = array($this->MakePropertyValue("FilterName","writer_pdf_Export",$osm));
$oWriterDoc->storeToURL($output_url,$export_args);
$oWriterDoc->close(true);
}
}
Appel de la fonction « word2pdf » :
$this->word2pdf('attachments/'.$currentEntity->getNameAttachment(),"file:///".$_SERVER['DOCUMENT_ROOT']."/attachments/".$nameFile.".pdf");
Lire ...
Migrer des modifications avec Doctrine2 et Symfony2
Lorsque votre site Internet sous Symfony 2 est en ligne et que vous avez besoin d'apporter des modifications à des éléments du modèle de données (comme par exemple le type d’un champ, ajouter une valeur, modifier une table, …) en production, il existe une manière simple et sécurisé de le faire. On va pour cela utiliser le bundle « DoctrineMigrationsBundle ».
Au préalable, vous devrez installer le bundle préalablement cité. Celui-ci nous fournit deux commandes particulièrement utiles :
- php app/console doctrine:migrations:diff -> cette commande va générer un fichier « php » comprenant les différences entre la base de données et le modèle de données.
- php app/console doctrine:migrations:migrate -> les données seront migrées et le site en production à jour.
Remarque : dans le fichier généré, il est bien entendu possible d’ajouter ses propres requêtes SQL pour mettre à jour ce que l’on souhaite.
Lien utile :
http://symfony.com/doc/2.0/bundles/DoctrineMigrationsBundle/index.html
Lire ...Rechercher
Tags
Articles récents
- Quel est le but de l'attribut "role" en HTML ?
- Changer la couleur de l'espace réservé (placeholder)
- Attention à cet email d’arnaque !
- Supprimer un fichier d'un référentiel Git sans le supprimer du système de fichiers local
- JS - Récupérer le dernier élément d'un tableau
- JS - Prévisualiser une image avec son upload
- PHP - Convertir une chaîne de caractères en un booléen
- PHP : Vérifier si une session a déjà été démarrée
- Créer un APK ou un AAB en ligne de commandes
- L'opérateur !! en Javascript