Toutes les ressources d'un bon développeur !

Générer un identifiant unique en PHP

Cette fonction PHP permet de générer un identifiant unique basé sur la date et l’heure en microsecondes. Ce code contient 13 caractères :

echo uniqid();

Il est possible d’ajouter un peu de formatage :

echo uniqid('identifiant-');

ou le rentre plus long avec 23 caractères :

echo uniqid(null,true);

A ce stade, pour obtenir un doublon il faut exécuter la fonction à la même microseconde. Mais on peut encore augmenter ses chances d’être unique :

echo md5(uniqid(rand(), true));

Centrer dans un position:fixed en CSS

Voici comment centrer un élément dans un autre élément positionné en « fixed » :

position:fixed;

/* pour la largeur : */
left:50%;
margin-left:-150px; /* la moitié de la largeur de l'élément */

/* pour la hauteur : */
top:50%;
margin-top: -125px; /* la moitié de la hauteur*/

[SQL] Clef index, unique ou primaire ?

Voici à quoi correspondent les intitulés :

  • Index : Le champ est indexé. Cela améliore les performances de tri sur les jointures, WHERE ou ORDER.
  • Unique : idem que index, mais avec l’unicité en plus.
  • Primaire : idem que unique, mais un seul par table. à utiliser sur les ID.

Application :

  • Sur les champs qui serviront aux jointures, WHERE et ORDER, appliquer « UNIQUE » si unicité, et « INDEX » si non unicité.
  • Sur les champs « identifiants » dit ID : « PRIMAIRE« 

Problème Google Maps dans div masquée : la carte est mal centrée

Première solution : afficher le iframe dans une div hors champ. Par exemple avec comme css :

position : absolute;
top : 0px;
left : -2000px;

Et l’afficher aux bonnes coordonnées quand on en a besoin. Un peu du bricolage mais ça marche.
Encore du bricolage, mais ça marche aussi :

Deuxième solution : l’idée c’est de charger l’URL seulement quand on affiche la balise iframe.

1/
remplacer l'attribut SRC par REL dans la balise iframe, et lui rajouter un ID
<iframe id="CarteGoogleMaps" width="500" height="400" rel="http://maps.google.com/maps?f=q&amp;source=s..."></iframe>
2/
Un peu de jQuery au moment où on affiche la balise iframe : on affecte la bonne valeur à l'attribut SRC :
var rel = $("CarteGoogleMaps").attr('rel');
$("CarteGoogleMaps").attr('src',rel);

[C#] Un nombre aléatoire

On peut obtenir un entier aléatoire avec cette commande, ici entre 0 et 1000 :

int nombreAleatoire = new Random().Next(0, 1000);

[C#] Convertir un type

Entier en short

Même famille de types : ce sont des nombres. On utilise la syntaxe avec parenthèses : (short).

int i = 10;
short s = (short)i;

Chaine de caractères en entier

Familles différentes : on essaye de convertir une chaîne de lettre en un nombre. On utilise les fonctions appropriées.

string chaine = "20";
int chiffre = Convert.ToInt32(chaine);

Pour être certain que la chaîne est convertible, on utilise la fonction TryParse() :

if (int.TryParse(chaine, out chiffre))
{
    Console.WriteLine("Conversion OK :  " + chiffre);
}
else
{
    Console.WriteLine("Conversion impossible.");
}

entier en chaine de caractères

De la même façon, familles différentes : on utilise la fonction appropriée.

[C#] Les Boucles

La boucle For

for (int compteur = 0; compteur < 50; compteur++)
{
    Console.WriteLine("Bonjour C# " + compteur);
}

La boucle Foreach

Avec un tableau :

string[] semaine = new string[] { "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche" };
foreach (string unJour in semaine)
{
    Console.WriteLine(unJour);
}

Avec une liste :

List<string> semaine = new List<string> { "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche" };
foreach (string unJour in semaine)
{
    Console.WriteLine(unJour);
}

Note : la boucle Foreach est en lecture seule. On ne doit pas modifier le contenu de « unJour » dans la boucle. Cela veut dire que parfois, le compilateur le permet, mais cela pourra provoquer un erreur à l’exécution.

La boucle While

Deux méthodes :

int i = 0;
while (i < 50)
{
    Console.WriteLine(i);
    i++;
}

et

int i = 0;
do
{
    Console.WriteLine(i);
    i++;
}
while (i < 50);

Instructions de boucle : break et continue

Dans toutes les boucles,

break;

permet de quitter la boucle à l’instant.

continue;

permet de passer à l’occurence suivante immédiatement. La suite du code jusqu’à la fin de la boucle ne sera pas exécuté sur cette occurence.

[C#] Les énumérations

Définition

Une énumération de valeurs.

On la déclarera en dehors de la fonction Main().

Habituellement, le but de l’énumération est d’avoir une liste exhaustive et fixée de valeurs constantes. Créer une énumération créé un nouveau type utilisable.

Déclaration

enum Jours
{
    Lundi,
    Mardi,
    Mercredi,
    Jeudi,
    Vendredi,
    Samedi,
    Dimanche
}

Dans cet exemple, lundi vaut 0, mardi vaut 1, puis c’est incrémental.

On peut forcer certaines valeurs. Les suivantes seront incrémentales par rapport à la précédente.

enum Jours
{
    Lundi = 3, // lundi vaut 3
    Mardi, // mardi vaut 4
    Mercredi = 12, // mercredi vaut 12
    Jeudi = 15, // jeudi vaut 15
    Vendredi, // vendredi vaut 16
    Samedi, // samedi vaut 17
    Dimanche = 100 // dimanche vaut 100
}

Utilisation du type

Dans le Main(), on pourra ensuite l’utiliser comme type de variable :

Jours unJour = Jours.Vendredi;

et manipuler unJour ou le comparer avec une valeur du même type ensuite.

if (unJour == Jours.Dimanche || unJour == Jours.Samedi)
{
    Console.WriteLine("On est vendredi");
}

[C#] Les Listes

Définition

La liste ressemble à un tableau.

Sa taille n’est pas fixe, on peut facilement ajouter et supprimer des éléments.

Par contre la liste ne peut avoir qu’une seule dimension, contrairement aux tableaux.

Déclarer une liste

List<int> elementsListe = new List<int>();

ou

List<string> chaines = new List<string>();

ou

List<string> jours = new List<string> { "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche" };

Pour ajouter des éléments :

elementsListe.Add(2); //elementsListecontient 2
elementsListe.Add(4); //elementsListecontient 2, 4
elementsListe.Add(6); //elementsListecontient 2, 4, 6

On ne peut ajouter que des éléments du type déclaré.

Supprimer un élément de la liste

Suivant sa position (ici 1, en partant de 0):

elementsListe.RemoveAt(1); // chiffres contient 2, 6

Afficher la liste

foreach (int chiffre in chiffres)
{
    Console.WriteLine(chiffre);
}

Rechecher l’indice d’une élément connu

List<string> jours = new List<string>();
jours.Add("Lundi");
jours.Add("Mardi");
jours.Add("Mercredi");
jours.Add("Jeudi");
jours.Add("Vendredi");
jours.Add("Samedi");
jours.Add("Dimanche");

int indice = jours.IndexOf("Mercredi"); // indice vaut 2

[C#] Les tableaux

Définition

Le tableau est une suite d’éléments. Sa taille est fixe.

Les tableaux peuvent avoir plusieurs dimensions, mais leur taille est fixe. De ce point de vue, on les réservera à des calcules matriciels et dans des calculs graphiques.

Pour manipuler une simple liste d’éléments, on préférera utiliser la  liste.

Déclarer un tableau

string[] jours = new string[] { "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche" };
 Console.WriteLine(jours[3]);

ou

string[] jours = new string[7];
jours[0] = "Lundi";
jours[1] = "Mardi";
jours[2] = "Mercredi";
jours[3] = "Jeudi";
jours[4] = "Vendredi";
jours[5] = "Samedi";
jours[6] = "Dimanche";

Accéder à un élément du tableau

Console.WriteLine(jours[3]);

Le premier élément est le numéro 0.

Avec une boucle :

for (int i = 0; i < jours.Length; i++)
{
    Console.WriteLine(jours[i]);
}

Trier un tableau

Array.Sort(jours);

[C#] Déclarer une fonction / méthode

static void DireBonjour(string prenom, int age)
{
    Console.WriteLine("Bonjour " + prenom);
    Console.WriteLine("Vous avez " + age + " ans.");
}
static void Main(string[] args)
{
    DireBonjour("Nicolas", 30);
    DireBonjour("Barack", 20);
}

Charger des scripts JavaScript via JavaScript

/* le div dans laquelle seront chargés les scripts */
document.write('<div id="js_script_goes_here"></div>');

/* Scripts à charger */
var js_librairies = new Array("jquery.js", "mon_script1.js");

function init(){
    var myscript_location = document.getElementById('js_script_goes_here');

    for (var i=0; i < js_librairies.length ; ++i) {
        var my_script = document.createElement('script');
        my_script.type = 'text/javascript';
        my_script.src = js_librairies[i];
        my_script.onload = scriptLoaded;
        myscript_location.appendChild(my_script);
    }
    return false;
}
var compteur=0;
function scriptLoaded(e) {
    compteur++;
    if (compteur==js_librairies.length) {
        // ici tout est bien chargé
        // ************* vers la suite de votre code ***************
    }
    return false;
}

function addLoadEvent(func) {
    var oldonload = window.onload;
    if (typeof window.onload != 'function') {
        window.onload = func;
    } else {
        window.onload = function() {
            if (oldonload) {
                 oldonload();
            }
            func();
       };
    }
}

//ONLOAD
addLoadEvent(init);

Du code javascript dans un article/page WordPress

Etape 1

Ajouter un nouveau Custom Field ou Champ Personnalisé, appelé par exemple « js ». Copier le code javascript dans ce champ.

Etape 2

Dans le mode HTML de l’éditeur WordPress, entrez la syntaxe suivante :

[cf]js[/cf]

Publier, et WordPress remplacera la balise par le code javascript.

Plugins WordPress : les variables de chemin et d’url

Voici quelques variables de chemins d’accès bien utiles dans le développement d’un plugin WordPress :

  • WP_CONTENT_URL : http://www.votre-site-wordpress.com/wp-content
  • WP_CONTENT_DIR : /chemin_hebergement_local_wordpress/wp-content
  • WP_PLUGIN_URL : URL vers le dossier /plugins/ – et qui commence par « http:// »
  • WP_PLUGIN_DIR : chemin en local vers le dossier contenant les plugins
  • plugin_basename(dirname(__FILE__)) : dossier contenant le plugin

Ainsi,

Chemin vers le dossier en cours, à partir de la racine du disque dur :

  • WP_CONTENT_DIR.’/plugins/’.plugin_basename(dirname(__FILE__)).’/’

L’url du dossier du plugin, qui commence par http://

  • WP_CONTENT_URL.’/plugins/’.plugin_basename(dirname(__FILE__))

JQuery : Vérifier que JQuery est chargé

2 méthodes Javascript pour vérifier si JQuery est chargé ou pas :

Méthode 1

if (jQuery) {
     // jQuery bien chargé
} else {
     // pas de jQuery
}

Méthode 2

if (typeof jQuery == 'undefined') {
     // jQuery bien chargé
} else {
     // pas de jQuery
}