Accueil

Enregistrer des emoji dans une base de données MySQL

Wakonda - MySQL Posté le 2 janvier 2017

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 ...

Silex - Récupérer l'objet '$request' avec Silex 2.*

Wakonda - PHP, Silex Posté le 30 décembre 2016

Depuis la mise à jour de Silex 1.* à Silex 2.*, l'accès à l'objet "$request" a été modifié.

Dans Silex 1.* :

$app["request"]

Dans Silex 2.* :

$app['request_stack']->getCurrentRequest()

 

Lire ...

jQuery - Appeler $(this) à l'intérieur de la fonction Ajax

Wakonda - jQuery Posté le 30 décembre 2016

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

Wakonda - C# Posté le 16 octobre 2016

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

Wakonda - PHP Posté le 7 février 2016

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

Wakonda - PHP Posté le 4 février 2016

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

Wakonda - Github, JavaScript Posté le 3 janvier 2016

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

Wakonda - jQuery Posté le 1 janvier 2016

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

Wakonda - CSS Posté le 1 janvier 2016

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

Wakonda - Symfony Posté le 1 janvier 2016

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

Wakonda - PHP Posté le 1 janvier 2016

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

Wakonda - Symfony Posté le 1 janvier 2016

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

Publicité

Suivez-nous

Aidez-nous !


Loading…
Loading the web debug toolbar…
Attempt #