Accueil
Accueil Le Club Delphi Kylix C C++ Java J2EE DotNET & C# Visual Basic Access Pascal Dev Web PHP ASP XML UML SQLSGBD Windows Linux Autres
logo

precedent    sommaire      


Auteur : doof
Version : 16/01/2006
Alterner des valeurs
/**
 * Class Alternate V2 by doof
 * Cette classe alterne des valeurs qu'on lui passe en parametre
 *
 * $instance = new Alternate('a', 'b', 'c');
 * echo $instance->get(); // affiche a
 * echo $instance->get(); // affiche b
 * echo $instance->get(); // affiche c
 * echo $instance->get(); // affiche a
 * ...
 */
class Alternate
{
   /***************************************************************************
   *Liste des valeurs
   *@var array
   **/
   var $item_list;

   /***************************************************************************
   *Nombre de valeurs dans la liste
   *@var int
   **/
   var $item_nbr;

   /***************************************************************************
   *Index de la valeur en cours dans la liste
   *@var int
   **/
   var $item;

   /***************************************************************************
   *Mode d'alternation
   *@var int
   **/
   var $mode;

   /***************************************************************************
   *Valeur de l'index precedant celui en cours
   *@var int
   **/
   var $lastitem = 0;

   /***************************************************************************
   *Sens dans lequel le mode ping-pong tourne actuellement, 0 = montant et 1 = descendant
   *@var int
   **/
   var $ping_mode = 0;

   /***************************************************************************
    *Constructeur, peut prendre soit plusieurs arguments qui sont les valeurs a alterner,
    *soit un tableau qui contient ces valeurs
    ****/
   function alternate()
   {
      $this->item_nbr = func_num_args()-1;
      if ($this->item_nbr == 0) {
         if (is_array(func_get_arg(0))) {
            $index=0;
            $tab = func_get_arg(0);
            ksort($tab);
            foreach ($tab as $val) {
               $this->item_list[$index++] = $val;
            }
            $this->item_nbr = sizeof($this->item_list)-1;
         } else {
            $this->item_list[0] = func_get_arg(0);
         }
      } else {
         $this->item_list = func_get_args();
      }
      $this->set_mode(0);
      $this->lastitem = $this->item_list[0];
   }

   /**************************************************************************
   *Définit le mode d'alternance
   *@param int $mode Le mode d'alternance 0 = linéaire 1 = ping-pong 2 = aléatoire
   *@param boolean $init Remet à zero la liste si TRUE
   **/
   function set_mode($mode, $init = TRUE)
   {
      if ($init == TRUE) {
         $this->init();
         $this->mode = $mode;
      } else {
         $this->item = $this->lastitem;
         $this->mode = $mode;
         $this->push();
      }
   }

   /**************************************************************************
   *Passe à la valeur suivante suivant le mode courant
   **/
   function push()
   {
      if ($this->item_nbr > 0) {
         $this->lastitem = $this->item;
         switch ($this->mode) {
         case 0: // Mode lineaire
            ($this->item < $this->item_nbr) ? $this->item++ : $this->init();
            break;
         case 1: // Mode Ping-pong
            if ($this->ping_mode == 0) {
               ($this->item < $this->item_nbr) ? ($this->item++) : ($this->ping_mode = 1);
            }
            if ($this->ping_mode == 1) {
               ($this->item > 0) ? ($this->item--) : ($this->item++ + $this->ping_mode = 0);
            }
            break;
         case 2: // Mode Random simple
               $this->item = mt_rand(0, $this->item_nbr);
            break;
         }
      }
   }

   /**************************************************************************
   *Ajoute une valeur dans la liste
   *@param string $value la valeur a rajouter
   *@param int $offset l'index, à la fin si FALSE ou valeur impossible
   **/
   function add($value, $offset = FALSE)
   {
      if (is_int($offset) && $offset >= 0 && $offset <= $this->item_nbr) {
         array_splice($this->item_list, $offset, 0, $value);
      } else {
         $this->item_list[] = $value;
      }
      $this->item_nbr++;
   }

   /**************************************************************************
   *Retourne la valeur en cours
   *@param boolean $push passe automatiquement à la valeur suivante si TRUE
   *@return string la valeur
   **/
   function get($push = TRUE)
   {
      $return = $this->item_list[$this->item];
      $push == TRUE ? $this->push() : FALSE;
      return $return;
   }

   /**************************************************************************
   *Remet à zero l'alternance
   **/
   function init()
   {
      $this->item = 0;
   }
}
Exemple d'utilisation
   //initialisation de la couleur de fond $bgcolor
   //alterne entre 3 valeurs mode ping-pong
   $bgcolor = new Alternate('#44aa44', '#ffff77', '#ee4444');
   $bgcolor->set_mode(1);
   
   //initialisation de la variable d'alignement $align
   //3 valeurs aussi en mode ping-pong
   $align = new alternate('left', 'center', 'right');
   $align->set_mode(1);
   //affichage du tableau
   echo '<table border="0" width="150">'."\n";
   for ($i = 0; $i <= 10; $i++) {
   echo "\t".'<tr><td bgcolor="'.$bgcolor->get( FALSE ).'" align="'.$align->get().'">'.$bgcolor->get().'</td></tr>'."\n";
   }
   echo '</table>';

Auteur : titoumimi
Version : 27/07/2006
Créer un "chemin de fer" (suite de lien donnant la position dans l'arborescence d'un site)
Supposons d'abord que vous avez une base de donnée avec une table pour vos pages (nommons la PAGES, parfaitement au hasard). Supposons ensuite que dans cette table, vous avez un champ Id_page (identifiant de la page en cours, un auto increment fera très bien l'affaire), un autre appelé Id_parent (l'ID de la page parent, le N+1 dans l'organigramme), et un champ Titre (contenant le titre de votre page).
La seule règle imposée sera que l'Id_parent de la page racine sera 0. Nous pouvons à présent passer au code :
function recur_chemin($idpage) {
	// on définit la variable pour éviter le warning
	$chemin_complet = "";
	// Si l'id de la page en cours est différent de 0 
	// (0 = page parente de la page racine = inexistante)
	if ($idpage != 0) {
		// on récupère les informations de la page en cours dans la DB
		$strSQL = "SELECT * FROM PAGES WHERE Id_page=".$idpage;
		$resultat = requete_SQL($strSQL);
		$tabl_result = mysql_fetch_array($resultat);
		
		$titrepage = $tabl_result['Titre'];
		$idparent = $tabl_result['Id_parent'];
		
		// création du lien vers la page en cours
		$chemin_page_en_cours = " -> <a href=\"index.php?id_p=".$idpage."\">".$titrepage."</a>";
		
		// Concaténation du lien de la page N-1 et
		// du lien de la page en cours
		$chemin_complet = recur_chemin($idparent).$chemin_page_en_cours;
	}
	//renvoie le chemin complet
	return $chemin_complet;
}
Il nous suffit maintenant d'appeler cette fonction à l'endroit indiqué comme suit :
$chemin_de_fer = recur_chemin($id_de_la_page_en_cours);
echo $chemin_de_fer;

Auteur : CrazyCat
Version : 03/07/2006
Génération d'un mot de passe
La petite fonction ci-dessous le réalise mais offre quelques options qui ne sont pas dépourvues d'intérêt:
  • Choix de la longueur du mot de passe (8 par défaut)
  • Choix du type de lettres (majuscules ou minuscules)
  • Possibilité d'épeler le mot de passe (désactivé par défaut)
<?
function mkpassword($len=8, $min=true, $spell=false) {
   $ok_chars = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "Alpha", "Bravo", "Charlie", "Delta", 
   	"Echo", "Foxtrot", "Golf", "Hotel", "India", "Juliet", "Kilo", "Lima", "Mike", "November", "Oscar", 
	"Papa", "Quebec", "Romeo", "Sierra", "Tango", "Uniform", "Victor", "Whisky", "X-ray", "Yankee", "Zulu");
   // Le tableau des caractères utilise le code phonétique international
   $password["string"] = "";
   $password["litteral"] = "";
   for ($i=0; $i<$len; $i  ) {
      $val = rand(0,count($ok_chars) - 1);
      $password["string"] .= $ok_chars[$val]{0} ;
      $password["litteral"] .= $ok_chars[$val]." ";
   }
   if ($min == true)
      $password["string"] = strtolower($password["string"]);
   $password["litteral"] = trim($password["litteral"]);
   if ($spell == true) {
      return $password;
   } else {
      return $password["string"];
   }
}
?>
La fonction peut être appelée de quatres manières différentes et renverra deux types de données :
/* Cas 1: appel simple */
$mypass = mkpassword();
// Renvoit une chaîne de 8 caractères, chiffres et lettres minuscules

/* Cas 2: choix de la longueur du mot de passe */
$mypass = mkpassword(16);
// renvoit une chaîne de 16 caractères, chiffres et lettres minuscules

/* Cas 3: lettres majuscules */
// *** Atention *** Il faut obligatoirement donner une longueur
$mypass = mkpassword(8, false);
// renvoit une chaîne de 8 caractères, chiffres et lettres majuscules

/* Cas 4: Mot de passe épelé */
$mypass = mkpassword(8, true, true);
// renvoit un tableau contenant le mot de passe et son épelation
echo $mypass["string"]." => ".$mypass["litteral"];

Auteur : titoumimi
Version : 27/07/2006
Générer un plan d'un site sous forme de listes imbriquées
En reprenant la même structure de base que précédement, nous allons maintenant générer un plan du site sous forme de listes imbriquées, qui se mettra à jour tout seul dès que la base sera modifiée :
// Affiche le plan du site
// Paramètres : Id de la page en cours (0 lors du premier passage) pour lister toutes les pages filles

function affiche_plan_site($id_page) {
	// Sélectionne l'ensemble des pages filles de la page courante
	$strSQL = "SELECT * FROM PAGES WHERE id_parent = ".$id_page;
	$resultat = requete_SQL($strSQL);
	// Si la requête a renvoyé des résultats
	if (mysql_affected_rows() !=0) {
		echo "<ul>\n";
		// Tant qu'il y a des pages filles, on affiche un lien vers elle
		// et pour chacune d'elle, on rappelle la fonction
		while ($tabl_result = mysql_fetch_array($resultat)) {
			echo "<li>\n";
			echo "<a href=\"index.php?id_p=".$tabl_result['Id_page']."\">";
			echo $tabl_result['Titre_'];
			echo "</a>\n";
			affiche_plan_site($tabl_result['Id_page']);
			echo "</li>\n";
		}
		echo "</ul>\n";
	}
}

Auteur : guitou12
Version : 27/07/2006
Récupération rapide des variables de formulaire/sessions/Url/Cookies
Récupération rapide des variables
/********************
	  RECUP VAR
*********************/
/** 
* Récupère les vars d'url, de session suivant les paramètres passés
* get (resp. post) convertit en majuscules les valeurs alors que get_lower (resp.post_lower) recupere la valeur brute
* @param $param Le type de récupération (get / post / session etc)
* @param $nom_var Le nom de la variable à récupérer
* @param $defaut_val La valeur par défaut de retour si la variable n'est pas définie
* @return La valeur de la variable
*/
function recup_var($param,$nom_var,$defaut_val)
{
	switch($param)
	{
		case 'get':
			if (isset ($_GET[$nom_var])) $res=$_GET[$nom_var]; else $res=$defaut_val; break;
		case 'post':
			if (isset ($_POST[$nom_var])) $res=$_POST[$nom_var]; else $res=$defaut_val; break;
		case 'session':
			if (isset ($_SESSION[$nom_var])) $res=$_SESSION[$nom_var]; else $res=$defaut_val; break;
               case 'cookie':
			if (isset ($_COOKIE[$nom_var])) $res=$_COOKIE[$nom_var]; else $res=$defaut_val; break;
	}
	return $res;
}

Auteur : torvalds17
Version : 24/11/2006
Transformation d'un nombre de chiffres (entier) en lettres
Ce code se limite à 999,999,999,999.
<?php

function convertitNombreEnLettres($nombreAConvertir)
{
	$tablePuissancesDeDix = array("", "mille", "millions", "milliards");// ce qu'on affichera apres chaque serie de trois
	$tableConversionEtapeDeux = array("", "dix", "vingt", "trente", "quarante", "cinquante", "soixante", "soixante", "quatre-vingt", "quatre-vingt");// equivalent du second chiffre de la serie de 3 (la dizaine)
	$tableConversionEtapeUnOuTrois = array("", "un", "deux", "trois", "quatre", "cinq", "six", "sept", "huit", "neuf");// equivalent du premier et du troisieme chiffre de la serie de 3
	$tableConversionDeLaDizaineQuiFaitChier = array("", "onze", "douze", "treize", "quatorze", "quinze", "seize");
	$nombreAConvertir = number_format($nombreAConvertir);// on formate le nombre "a l'anglaise" avec des virgules entre les milliers
	$tableauTemporaire = explode(',', $nombreAConvertir);// on passe les milliers dans un tableau
	for($i=0; $i<count($tableauTemporaire); $i++)// on parcourt le tableau, par milliers donc
	{
		for($j=0; $j<strlen($tableauTemporaire[$i]); $j++)// on parcourt les 3 caracteres (ou moins) du millier en cours
		{
			switch($j)
			{
				case strlen($tableauTemporaire[$i])-3://si on est dans les centaines
					if(substr($tableauTemporaire[$i], $j, 1) > 0)
					{
						if(substr($tableauTemporaire[$i], $j, 1) > 1)
							echo $tableConversionEtapeUnOuTrois[substr($tableauTemporaire[$i], $j, 1)];
						echo " cents ";
					}
					break;
				case strlen($tableauTemporaire[$i])-2:// si on est dans les dizaines
					if(substr($tableauTemporaire[$i], $j, 1) > 1)
						echo $tableConversionEtapeDeux[substr($tableauTemporaire[$i], $j, 1)];
					if(substr($tableauTemporaire[$i], $j, 1) == 1 || substr($tableauTemporaire[$i], $j, 1) == 7 || substr($tableauTemporaire[$i], $j, 1) == 9)
						if(substr($tableauTemporaire[$i], $j+1, 1) > 6)
							echo "-dix";
					break;
				case strlen($tableauTemporaire[$i])-1:// si on est dans les unites
					if(substr($tableauTemporaire[$i], $j, 1) == 1)
						echo " et ";
					if(substr($tableauTemporaire[$i], $j-1, 1) == 1 ||substr($tableauTemporaire[$i], $j-1, 1) == 7 || substr($tableauTemporaire[$i], $j-1, 1) == 9)
						if(substr($tableauTemporaire[$i], $j, 1) < 7)
							echo "-".$tableConversionDeLaDizaineQuiFaitChier[substr($tableauTemporaire[$i], $j, 1)];
						else
							echo "-".$tableConversionEtapeUnOuTrois[substr($tableauTemporaire[$i], $j, 1)];
					else
						echo "-".$tableConversionEtapeUnOuTrois[substr($tableauTemporaire[$i], $j, 1)];
					break;
			}
		}
		echo " ".$tablePuissancesDeDix[count($tableauTemporaire)-$i-1]." ";// à quelle multiple de 10^3 on est ?
	}
}

convertitNombreEnLettres(124036977);
?>

precedent    sommaire      

Consultez les autres pages sources


Les sources présentés sur cette pages sont libre de droits, et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright ©2006  Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérets. Cette page est déposée à la SACD.

Vos questions techniques : forum d'entraide Accueil - Publiez vos articles, tutoriels, cours et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones. Nous contacter - Copyright 2000..2005 www.developpez.com