Menu déroulant en HTML et CSS

Voici une solution pour faire un menu déroulant simplement en utilisant uniquement HTML et CSS.

Exemple de menu déroulant

Exemple de menu déroulant

Vous avez le CSS et le HTML, à vous de l’adapter à vos besoins en modifiant ce qu’il vous faut.

#menu{
    height: 21px;
    list-style-type: none;
    margin: 0;
    padding: 0;
    border: 0;
    position: absolute;
    top: 0;
    left: 0;
}
#menu li{
    float: left;
    text-align:center;
    width: 150px;
    margin: 0;
    padding: 0;
    border: 0;
}
#menu li a:link, #menu li a:visited{
    display: block;
    height: 1%;
    color: #FFF;
    background: green;
    margin: 0;
    padding: 4px 8px;
    border-right: 1px solid #fff;
    text-decoration: none;
}
#menu li a:hover {background-color: #F2462E;}
#menu li a:active {background-color: #5F879D;}
#menu .sousMenu{
    display: none;
    list-style-type: none;
    margin: 0;
    padding: 0;
    border: 0;
}
#menu .sousMenu li{
    float: none;
    margin: 0;
    padding: 0;
    border: 0;
    width: 149px;
    border-top: 1px solid transparent;
    border-right: 1px solid transparent;
}
#menu .sousMenu li a:link, #menu .sousMenu li a:visited{
    display: block;
    color: #FFF;
    margin: 0;
    border: 0;
    text-decoration: none;
}
#menu .sousMenu li a:hover{
    background-image: none;
    background-color: #F2462E;
}
#menu li:hover > .sousMenu {display: block;}
<ul id="menu">
	<li><a href="#">Fruits</a>
            <ul class="sousMenu">
                    <li><a href="#">Pomme</a></li>
                    <li><a href="#">Orange</a></li>
                    <li><a href="#">Banane</a></li>
                    <li><a href="#">Figue</a></li>
            </ul>
        </li>
	<li><a href="#">Sports</a>
            <ul class="sousMenu">
                    <li><a href="#">Basket</a></li>
                    <li><a href="#">Roller Derby</a></li>
                    <li><a href="#">Tennis</a></li>
            </ul>
        </li>
	<li><a href="#">Capitales</a>
            <ul class="sousMenu">
                    <li><a href="#">Paris</a></li>
                    <li><a href="#">Londres</a></li>
            </ul>
        </li>
	<li><a href="#">Prénoms</a>
            <ul class="sousMenu">
                    <li><a href="#">Emilie</a></li>
                    <li><a href="#">Pierre</a></li>
                    <li><a href="#">Lionel</a></li>
                    <li><a href="#">Virginie</a></li>
                    <li><a href="#">Sebastien</a></li>
            </ul>
        </li>
</ul>

Centrer du texte dans une image faite en php

Création d'image en php

Dans un article précédent, je vous montrai comment générer une images de type QRcode mais c’était avec un petit formulaire avec un couche de javascript.
Cette fois ci, on va se pencher sur la création d’image en avec la bibliothèque GD de PHP.

La création d’une image

Dans un premier temps, on va créer une image simple (toute rouge)

header('Content-type: image/png');
$image = imagecreate(150, 150);
$background = imagecolorallocate($image, 255, 0, 0);
imagepng($image);
  • header(« Content-type: image/png »);
    C’est une fonction qui sert à définir quel type de document sera affiché, dans notre cas, il s’agit d’une image png
  • $image = imagecreate(150, 150);
    Pour définir la taille de l’image de l’image que l’on créé
  • $background = imagecolorallocate($image, 255, 0, 0);
    Nous définissons une couleur (en RGV) pour remplir l’image
  • imagepng($image);
    Et on créer l’image !

Ajouter du texte

header('Content-type: image/png');
$image = imagecreate(150, 150);
$background = imagecolorallocate($image, 255, 0, 0); /* On définie une couleur de fond (ici ROUGE) */
$noir = imagecolorallocate($image, 0, 0, 0); /* On définie une couleur que nous utiliserons après*/
imagestring($image, 5, 10, 10, "mon texte", $noir); /* On insère le texte "mon texte" avec une largeur de caractère de 5 à 10px du haut et 10px de la gauche*/
imagepng($image);

Centrer le texte dans l’image

header('Content-type: image/png');

/* * *******************************
 * Parametre
 * ********************************
 */
$largeur = 150; /* longueur de l'image */
$hauteur = 150; /* hauteur de l'image */
$image = imagecreate($largeur, $hauteur);
/* Background */
$background = imagecolorallocate($image, 0, 255, 0);
/* Couleur du text */
$couleurTxt = imagecolorallocate($image, 255, 0, 0);
/* texte à mettre dans l'image */
$txt = "mon texte";
/* Taille du texte */
$font = 3;
/* Hauteur et largeur des caratères */
$largeurCaractere = ImageFontWidth($font);
$hauteurCaractere = ImageFontHeight($font);
/* Longueur du texte (taille caratère X nombre de caractère) */
$largeurTxt = $largeurCaractere * strlen($txt);
/* Recherche de la position horizontale centrale pour centrer le texte */
$positionCentreHor = ceil(($largeur - $largeurTxt) / 2);
/* Recherche de la position horizontale centrale pour centrer le texte */
$positionCentreVer = ceil(($hauteur - $hauteurCaractere) / 2);
/* Ajout du texte au centre de l'image */
$image_string = ImageString($image, $font, $positionCentreHor, $positionCentreVer, $txt, $couleurTxt);
/* Création de l'image */
imagepng($image);

N’hésitez pas à contribuer à cet article en commentant, en apportant des conseils (ou mise en garde) sur la création d’image en php.

Quicksearch – Comment effectuer une recherche dans un tableau dynamique ?

Rechercher

Quicksearch – Un plugin très utile !

Quicksearch est un plugin jQuery servant à rechercher une information dans un tableau de manière dynamique.

Pour le télécharger c’est ici : https://github.com/riklomas/quicksearch

Exemple


Effectuer une recherche Recherche…
Prenom Nom Pays Date Email
Aucuns résultats
Quintessa Kirk Nicaragua 31/08/2012 sociosqu.ad.litora@ornarefacilisis.ca
Rahim Bowen Norway 20/04/2013 purus.in@enim.ca
Clio Wong Cambodia 23/10/2012 et.malesuada@facilisis.edu
Adele Sandoval Greece 12/09/2013 tellus.non@elementum.com
Kaseem Ochoa Germany 06/06/2013 mauris.eu.elit@auguemalesuada.ca
Ori Daniels Mayotte 18/09/2012 est@nonummy.org
Akeem Grant Bosnia and Herzegovina 27/11/2012 sagittis@mipedenonummy.org
Nasim Lucas Chile 09/03/2014 ipsum@non.edu
Matthew Meyers Christmas Island 27/09/2012 in@vellectus.edu
Georgia Munoz Brunei Darussalam 03/10/2013 molestie.tellus@mollislectuspede.edu
Alexis Fry British Indian Ocean Territory 24/05/2012 urna@tellusAeneanegestas.org
Xander Washington Greenland 10/03/2013 enim.Sed@lacusvestibulumlorem.edu
Harriet Snider Faroe Islands 22/03/2014 Morbi@sitametante.org
Lysandra Dyer Chad 06/01/2014 rutrum@odio.edu
Hammett Ingram Eritrea 04/06/2013 vitae.nibh.Donec@Donecfelisorci.edu
Neve Roman Korea 17/05/2013 turpis@varius.ca
Zachery Perry Andorra 14/07/2012 dis@vulputate.com
Holly Blanchard Hong Kong 16/03/2013 est.mauris@Aeneanegestashendrerit.org
Chloe Reese Ecuador 02/09/2013 sit.amet@velarcuCurabitur.edu
John Todd Kenya 18/12/2013 vehicula@aliquetnecimperdiet.edu
Lucian York Fiji 20/10/2012 nec@sapien.org
Dominic Wilson Western Sahara 07/04/2012 semper.pretium@miac.ca
Cullen Cline Djibouti 26/06/2012 nibh.Phasellus.nulla@SuspendisseduiFusce.com


Pour ce résultat, le code est le suivant

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript" src="http://www.scoco.fr/wp-content/uploads/2013/03/jquery.quicksearch.js"></script>
<script type="text/javascript">
 $(document).ready(function () {
 $("#id_search").quicksearch("#resultTable tbody tr", {
 noResults: '#noresults',
 stripeRows: ['odd', 'even'],
 loader: 'span.loading'
 });
 });
</script>
<form action="#">
 <fieldset>
 <input type="text" name="search" value="" id="id_search" />
 <span>Recherche...</span>
 </fieldset>
</form>
<table cellspacing="1" cellpadding="1" id="resultTable">
 <thead>
 <tr>
 <th>Prenom</th>
 <th>Nom</th>
 <th>Pays</th>
 <th>Date</th>
 <th>Email</th>
 </tr>
 </thead>
 <tbody>
 <tr id="noresults">
 <td colspan="5">Aucuns résultats</td>
 </tr>
 <tr>
 <td>Quintessa</td>
 <td>Kirk</td>
 <td>Nicaragua</td>
 <td>31/08/2012</td>
 <td>sociosqu.ad.litora@ornarefacilisis.ca</td>
 </tr>
 ...
 ...
 ...
 <tr>
 <td>Georgia</td>
 <td>Munoz</td>
 <td>Brunei Darussalam</td>
 <td>03/10/2013</td>
 <td>molestie.tellus@mollislectuspede.edu</td>
 </tr>
 </tbody>
</table>

Gravatar – Lier un avatar avec à son mail à travers le web

Un gravatar qu’est ce que c’est ?

Un gravatar est un avatar que vous pouvez utiliser sur de nombreux sites ou blogs (wordpress, github,…) . Généralement les gravatar apparaissent à côté du pseudo que vous utilisez pour commenter ou rédiger des articles.  C’est un gain de temps dans la mesure où vous n’avez pas à uploader un avatar sur chaque site que vous fréquentez.

Comment appeler et afficher un gravatar

Une petite fonction php faite à partir des informations données sur Gravatar.com vous permet de faire ceci!

/*
* Fonction de récupération de l'avatar
*/
function get_avatar($monEmail, $taille = null)
{
$trimEmail = md5(strtolower(trim($monEmail)));
echo "<img src='http://www.gravatar.com/avatar/" . $trimEmail . "?s=" . $taille . "' />";
}

/*
* Affichage de l'avatar
*/
get_avatar('scoco@scoco.fr', 150);

Explication des fonctions utilisées

  • md5() encode la chaîne passée en paramètre en un nombre hexadécimal de 32 caractères
    Exemple: md5(‘scoco’) retourne f7449c2cd0f9b029e33157459b3d0846
  • strtolower()  retourne la chaîne passée en paramètre en minuscule
    Exemple: strtolower(‘Je Suis SCOCO’) retourne je suis scoco
  • trim() supprime les caractères invisibles au début et à la fin de la chaîne passée en paramètre
    Exemple: trim(‘     scoco ‘) retourne scoco (sans les espace devant et après)

JQuery – Listes déroulantes liées avec Chained Selects

En jQuery, on peut faire pas mal de choses. Cette fois ci, voici un tutoriel pour lier plusieurs listes déroulantes est une traduction et adaptation d’un article de Mika Tuupola (Créateur du plugin) à mes besoins.

Chained Selects est un plugin jQuery qui consiste à lier plusieurs  listes déroulantes entre elles.
Fichier disponible ici

Exemple





Dans une première liste déroulante, vous choisissez une région. Dans la seconde liste déroulante, vont s’afficher tout les départements qui appartiennent à cette région.

Dans ce tutoriel, nous allons utiliser le jeu d’exemple suivant: Les régions et les départements français ! (Fichier MySQL)

Mise en pratique

1ere liste déroulante

<select id="region">
<option>---</option>
<option value="1">Alsace</option>
<option value="2">Aquitaine</option>
<option value="3">Auvergne</option>
<option value="4">Basse Normandie</option>
<option value="5">Bourgogne</option>
<option value="6">Bretagne</option>
<option value="7">Centre</option>
<option value="8">Champagne Ardenne</option>
<option value="9">Corse</option>
<option value="10">Franche Comté</option>
<option value="11">Haute Normandie</option>
<option value="12">Ile de France</option>
<option value="13">Languedoc Roussillon</option>
<option value="14">Limousin</option>
<option value="15">Lorraine</option>
<option value="16">Midi-Pyrénées</option>
<option value="17">Nord Pas de Calais</option>
<option value="18">P.A.C.A</option>
<option value="19">Pays de la Loire</option>
<option value="20">Picardie</option>
<option value="21">Poitou Charente</option>
<option value="22">Rhone Alpes</option>
</select>
<select id="departement" disabled="disabled">
<option value="">--</option>
<option class="22" value="1">Ain</option>
<option class="20" value="2">Aisne</option>
<option class="3" value="3">Allier</option>
<option class="18" value="4">Alpes de haute provence</option>
<option class="18" value="5">Hautes alpes</option>
<option class="18" value="6">Alpes maritimes</option>
<option class="22" value="7">Ardèche</option>
<option class="8" value="8">Ardennes</option>
<option class="16" value="9">Ariège</option>
<option class="8" value="10">Aube</option>
<option class="13" value="11">Aude</option>
<option class="16" value="12">Aveyron</option>
<option class="18" value="13">Bouches du rhône</option>
<option class="4" value="14">Calvados</option>
<option class="3" value="15">Cantal</option>
<option class="21" value="16">Charente</option>
<option class="21" value="17">Charente maritime</option>
<option class="7" value="18">Cher</option>
<option class="14" value="19">Corrèze</option>
<option class="5" value="21">Côte d'or</option>
<option class="6" value="22">Côtes d'Armor</option>
<option class="14" value="23">Creuse</option>
<option class="2" value="24">Dordogne</option>
<option class="10" value="25">Doubs</option>
<option class="22" value="26">Drôme</option>
<option class="11" value="27">Eure</option>
<option class="7" value="28">Eure et Loir</option>
<option class="6" value="29">Finistère</option>
<option class="13" value="30">Gard</option>
<option class="16" value="31">Haute garonne</option>
<option class="16" value="32">Gers</option>
<option class="2" value="33">Gironde</option>
<option class="13" value="34">Hérault</option>
<option class="6" value="35">Ile et Vilaine</option>
<option class="7" value="36">Indre</option>
<option class="7" value="37">Indre et Loire</option>
<option class="22" value="38">Isère</option>
<option class="10" value="39">Jura</option>
<option class="2" value="40">Landes</option>
<option class="7" value="41">Loir et Cher</option>
<option class="22" value="42">Loire</option>
<option class="3" value="43">Haute loire</option>
<option class="19" value="44">Loire Atlantique</option>
<option class="7" value="45">Loiret</option>
<option class="16" value="46">Lot</option>
<option class="2" value="47">Lot et Garonne</option>
<option class="13" value="48">Lozère</option>
<option class="19" value="49">Maine et Loire</option>
<option class="4" value="50">Manche</option>
<option class="8" value="51">Marne</option>
<option class="8" value="52">Haute Marne</option>
<option class="19" value="53">Mayenne</option>
<option class="15" value="54">Meurthe et Moselle</option>
<option class="15" value="55">Meuse</option>
<option class="6" value="56">Morbihan</option>
<option class="15" value="57">Moselle</option>
<option class="5" value="58">Nièvre</option>
<option class="17" value="59">Nord</option>
<option class="20" value="60">Oise</option>
<option class="4" value="61">Orne</option>
<option class="17" value="62">Pas de Calais</option>
<option class="3" value="63">Puy de Dôme</option>
<option class="2" value="64">Pyrénées Atlantiques</option>
<option class="16" value="65">Hautes Pyrénées</option>
<option class="13" value="66">Pyrénées Orientales</option>
<option class="1" value="67">Bas Rhin</option>
<option class="1" value="68">Haut Rhin</option>
<option class="22" value="69">Rhône</option>
<option class="10" value="70">Haute Saône</option>
<option class="5" value="71">Saône et Loire</option>
<option class="19" value="72">Sarthe</option>
<option class="22" value="73">Savoie</option>
<option class="22" value="74">Haute Savoie</option>
<option class="12" value="75">Paris</option>
<option class="11" value="76">Seine Maritime</option>
<option class="12" value="77">Seine et Marne</option>
<option class="12" value="78">Yvelines</option>
<option class="21" value="79">Deux Sèvres</option>
<option class="20" value="80">Somme</option>
<option class="16" value="81">Tarn</option>
<option class="16" value="82">Tarn et Garonne</option>
<option class="18" value="83">Var</option>
<option class="18" value="84">Vaucluse</option>
<option class="19" value="85">Vendée</option>
<option class="21" value="86">Vienne</option>
<option class="14" value="87">Haute Vienne</option>
<option class="10" value="88">Vosge</option>
<option class="5" value="89">Yonne</option>
<option class="10" value="90">Territoire de Belfort</option>
<option class="12" value="91">Essonne</option>
<option class="12" value="92">Haut de seine</option>
<option class="12" value="93">Seine Saint Denis</option>
<option class="12" value="94">Val de Marne</option>
<option class="12" value="95">Val d'Oise</option>
<option class="9" value="2a">Corse du Sud</option>
<option class="9" value="2b">Haute Corse</option>
</select>
<script src="js/jquery.js" type="text/javascript" charset="utf-8"></script>
 <script src="js/jquery.chained.js" type="text/javascript" charset="utf-8"></script>
 <script type="text/javascript" charset="utf-8">
               $(function () {
                   $("#departement").chained("#region");
               });
   </script>