Morceaux de scripts PHP bien utiles, participez ;)

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics


mowmow
WRInaute passionné
WRInaute passionné
 
Messages: 975
Inscription: Mer Nov 03, 2004 9:40

Morceaux de scripts PHP bien utiles, participez ;)

Message le Mer Aoû 30, 2006 11:33

Bonjour à tous,

Je vous propose de faire un petit regroupement de fonctions PHP, javascript ou autre langage, que vous utilisez souvent et que vous désirez partager avec d'autres développeurs ;)

Je commence avec une petite fonction permettant de faire une pagination à la mode phpBB (voir en bas à droite du forum par exemple).

===================================================
Sommaire :

* Script permettant la mise en forme d'une liste de pages (comme un forum par exemple) par mowmow

* Debug (print_r avancé) par La Chaise Sauvage

* Fonction de comparaison de chaine de caractères en trois modes (test d'égalité, présence du mot dans l'autre ou expression régulière) par Mumuri

* Fonction permettant de lancer une commande linux($cmd) et d'afficher le succès ou l'échec de l'opération par dadovb

* Fonction qui met en gras le texte $x de la chaine $var

* Fonction de mise en forme de texte pour utilisation dans une URL (Par exemple pour de l'URL Rewriting) par magic corp.

===================================================

Code :
Code: Tout sélectionner
function pagination($actual_page, $page_number, $url, $show = 3) {
   // Erreurs
   if($show % 2 == 0 || $show < 3) {
      return 'Erreur : $show ne doit pas être pair, égal à 0 ou égal à 1';
   }
   if($page_number < $actual_page) {
      return 'Erreur : la page actuelle est supérieure au nombre de pages.';
   }
   // Erreurs
   if($page_number < $show*4) {
      for($i = 1; $i <= $page_number; $i++) {
         if($i != $actual_page) {
            $debut[] = '<a href="'.str_replace('{id}', $i, $url).'">'.$i.'</a>';
         }
         else {
            $debut[] = $i;
         }
      }
      return implode(', ', $debut);
   }
   
   // Debut
   $debut_fin = $actual_page <= $show-1 ? $show : $actual_page < $show*2 ? $actual_page+1 : $show;
   $debut_fin = $actual_page == 1 ? $show : $debut_fin;
   for($i = 1; $i <= $debut_fin; $i++) {
      if($i != $actual_page) {
         $debut[] = '<a href="'.str_replace('{id}', $i, $url).'">'.$i.'</a>';
      }
      else {
         $debut[] = $i;
      }
   }
   
   // Milieu
   $milieu_verify = $actual_page-1 < $page_number - $show*2 && $actual_page+1 > $show*2 ? 1 : 0;
   $milieu_debut = $milieu_verify ? ($actual_page-floor($show/2)) : 1;
   $milieu_end = $milieu_verify ? ($actual_page+floor($show/2)) : 0;
   for($i = $milieu_debut; $i <= $milieu_end; $i++) {
      if($i != $actual_page) {
         $milieu[] = '<a href="'.str_replace('{id}', $i, $url).'">'.$i.'</a>';
      }
      else {
         $milieu[] = $i;
      }
   }
   // Fin
   $fin_debut = $actual_page >= $page_number-$show+1 ? $page_number-$show : $actual_page > $page_number-$show*2 ? $actual_page-1 : $page_number-$show+1;
   $fin_debut = $actual_page == $page_number ? $page_number-$show+1 : $fin_debut;
   $fin_fin = $page_number;
   for($i = $fin_debut; $i <= $fin_fin; $i++) {
      if($i != $actual_page) {
         $fin[] = '<a href="'.str_replace('{id}', $i, $url).'">'.$i.'</a>';
      }
      else {
         $fin[] = $i;
      }
   }
   // Résultat
   return implode(', ', $debut).($milieu ? ' ... '.implode(', ', $milieu).' ... ' :  ' ... ').implode(', ', $fin);
}


Utilisation :
$actual_page : Page actuelle dans la pagination
$page_number : Nombre de pages au total
$url : ce qui apparaîtra comme lien pour chaque page, exemple : /sommaire/theme/page-{id} => Précisez {id} dans votre url pour que l'id y soit affecté.
$show : Nombre de liens à afficher au début, au milieu et à la fin, doit être impair !

En pratique :
Code: Tout sélectionner
echo pagination($_GET['page'], ceil($count/$limit), '/mon_url/{id}.html', 3);


Pour tester :
Code: Tout sélectionner
echo pagination(10, 50, '/mon_url/{id}.html', 3);



Je ferais un petit sommaire dans ce premier post si les contributions sont nombreuses :) Je continuerais de poster quelques morceaux de scripts qui me sont bien utiles ;)

Bon partage :D
Dernière édition par mowmow le Jeu Aoû 31, 2006 12:15, édité 2 fois.

yanhl
WRInaute passionné
WRInaute passionné
 
Messages: 793
Inscription: Jeu Déc 04, 2003 12:11

Message le Mer Aoû 30, 2006 13:36

Perso quand j'ai besoin d'un truc assez générique, je cherche ici :
http://pear.php.net
http://www.phpclasses.org


mego
WRInaute impliqué
WRInaute impliqué
 
Messages: 328
Inscription: Mar Mar 07, 2006 10:14

Message le Mer Aoû 30, 2006 13:40

Je crois qu'un site dédié serait plus approprié, non ?
De plus il existe déjà des dizaines de sites faisant ce que tu proposes.


La Chaise sauvage
WRInaute passionné
WRInaute passionné
 
Messages: 690
Inscription: Lun Avr 11, 2005 10:37

Message le Mer Aoû 30, 2006 14:35

vous avez tout les deux raison, mais vous êtes un peu rudes...

les sites existant recensent surtout des codes plus ou moins "complets", des CMS, des annuaires, de grosses classes etc... moi en lisant son post, j'avais pensé à des petits "trucs" et autres astuces de la vie de tous les jours.. un peu dans le genre des "top 10 custom javascript functions" de dustin diaz http://www.dustindiaz.com/top-ten-javascript ... sauf qu'on n'est pas obligés de se limiter à 10 (..et puis que ce ne sera sûrement pas les "top ten of all times", surtout les miennes ^^)

par exemple, moi j'ai une petite fonction que j'ai appelée "debug", et qui fait grosso modo la même chose qu'un print_r(); mais en mettant le truc un peu plus en forme. je l'utilise quand je ne sais plus ce qu'il y a dans une variable.. ^^

Code: Tout sélectionner
function debug($obj,$visible=0) {
   $v = ($visible==1) ?  'visible' : 'hidden';
   echo '<a href="#" onclick="document.getElementById(\'debug\').style.visibility=\'visible\'" id="switch">debug</a>
   <pre id="debug" style="visibility:'.$v.'"><a href="#" onclick="document.getElementById(\'debug\').style.visibility=\'hidden\'">[X]</a>
   <code>';
   print_r($obj);
   echo '</code></pre>';
}



avec la ptite css qui va bien c'est encore mieux (mais pas obligatoire)

Code: Tout sélectionner
pre#debug {
   font-size:14px;
   color:#000000;
   background-color:#FFFFCC;
   border:#FFCC66 2px solid;
   padding:3px;
   width:500px;
   }
#debug a {
   font-family:Verdana;
   text-decoration:none;
   float:right;
   }


à utiliser sur un objet, un tableau.. enfin comme print_r, quoi, sauf que c'est un peu plus lisible à mon goût, et qu'on peut le cacher ou l'afficher d'un clic. l'argument optionnel sert à préciser si on veut afficher ou non le résultat du debug tout de suite, ou seulement quand on clique sur "debug"...

voilàvoilà.. j'espère que je ne vais pas me faire incendier ^^


mowmow
WRInaute passionné
WRInaute passionné
 
Messages: 975
Inscription: Mer Nov 03, 2004 9:40

Message le Mer Aoû 30, 2006 14:39

Voilà comme le dit "la chaise sauvage" c'est simplement des petits bouts de code qui rendent le développement plus simple, sans passer forcemment par un package complet de PEAR...

Grantome
WRInaute accro
WRInaute accro
 
Messages: 2899
Inscription: Ven Jan 16, 2004 19:47

Message le Mer Aoû 30, 2006 15:56

Code: Tout sélectionner
<?php
echo "Hello World !";
?>


seek
Nouveau WRInaute
 
Messages: 42
Inscription: Ven Nov 05, 2004 16:32

Message le Mer Aoû 30, 2006 15:57

Pour ma part je suis à la recherche d'un javascript qui permettrait de mettre un site en page de démarrage du browser et qui marcherait à la fois sous IE et Firefox.


Mumuri
WRInaute accro
WRInaute accro
 
Messages: 1792
Inscription: Mer Nov 03, 2004 10:50

Message le Mer Aoû 30, 2006 16:09

fonction de comparaison de chaine de caractére en trois modes (test d'égalité, présence du mot dans l'autre ou expréssion réguliére)

Code: Tout sélectionner
/**
regarde dans un tableau $interdits si $DossierCourant est "autorisé"
*/
function Est_Autorisé($DossierCourant,$Interdits){
    global $Goption;

    $drapeau = true;
    while ($drapeau && list(,$Dossier)=each($Interdits) ){
        if ( ComparaisonFichier($DossierCourant,$Dossier,$Goption))$drapeau = false;
    }
    reset($Interdits);
    return $drapeau;
}

/**
compare deux chaines
*/
function ComparaisonFichier($DossierCourant,$Dossier,$option=0){
    switch ($option){
        case 0:
            // faire une comparaison bit à bit
            return ($DossierCourant == $Dossier);
        break;

        case 1:
            // faire un filtre avec strpos
            $pos = strpos($mystring, $findme);
            if ($pos === false) {
                return false;
            } else {
                return true;
            }
        break;

        case 2:
            // faire un filtre avec les expressions réguliéres
            return ereg($Dossier,$DossierCourant);
        break;
    }
}



exemple d'appel
Code: Tout sélectionner
$Goption=0;// option de filtrage (laissez 0 si vous ne comprenez pas)
$ExtensionsInterdites= array('php','php3','html','htm');
if( Est_Autorisé("php",$ExtensionsInterdites))
echo "extension autorisé";
else
echo "extension interdite";

if( Est_Autorisé("gif",$ExtensionsInterdites))
echo "extension autorisé";
else
echo "extension interdite";



dadovb
WRInaute accro
WRInaute accro
 
Messages: 2038
Inscription: Mar Nov 22, 2005 9:50

Message le Mer Aoû 30, 2006 16:31

Code: Tout sélectionner
function exec_cmd($cmd,$koi){
//permet de lancer une commande linux($cmd) et d'afficher le succès ou l'échec de l'opération
   exec($cmd, $out, $err);
   echo "<p>".$koi.": $cmd.....";
   if($err){
      echo "<font color='red'>ECHEC</font></p>";
      echo "<font color='red'>".$out[0]."</font></p><br>";
      return false;
   }else{
      echo "<font color='green'>succes</font></p>";
      return true;
   }
}


...toute petite commande ....

Code: Tout sélectionner
function highlight($x,$var) {
//fonction qui met en gras le texte $x de la chaine $var
   if ($var != "") {
      $xtemp = "";
      $i=0;
      while($i<strlen($x)){
         if((($i + strlen($var)) <= strlen($x)) && (strcasecmp($var, substr($x, $i, strlen($var))) == 0)) {
         //this version bolds the text. you can replace the html tags with whatever you like.
            $xtemp .= "<b>" . substr($x, $i , strlen($var)) . "</b>";
            $i += strlen($var);
         }
         else {
            $xtemp .= $x{$i};
            $i++;
         }
      }
   $x = $xtemp;
   }
   return $x;
}


tout est dit en commentaires...

magic corp.
WRInaute impliqué
WRInaute impliqué
 
Messages: 425
Inscription: Jeu Juin 17, 2004 9:56

Message le Mer Aoû 30, 2006 19:40

Fonction de mise en forme de texte pour utilisation dans une URL (Par exemple pour de l'URL Rewriting)
Code: Tout sélectionner
function convert_for_uri($text) {
  // Définition du séparateur
  define("SEPARATOR", "-");

  $tofind = "àáâãäåòóôõöøèéêëçìíîïùúûüÿñ"; // Lettre accentuées
  $replac = "aaaaaaooooooeeeeciiiiuuuuyn"; // Equivalant non accentué

  // Mise en minuscule + suppression des lettres accentuées par leur équivalant non accentué
  $text = strtr(strtolower($text),$tofind,$replac);

  // Remplacement de caractère non alphanumérique par un séparateur
  $text = ereg_replace("[^a-z0-9]", SEPARATOR, $text);

  // Suppression des doubles séparateurs
  while (strstr($text, SEPARATOR . SEPARATOR))
    $text = str_replace(SEPARATOR . SEPARATOR, SEPARATOR, $text);

  // Retour avec suppression d’un possible séparateur en fin de chaîne
  return(ereg_replace(SEPARATOR . "$", "", $text));
}
Dernière édition par magic corp. le Mer Aoû 30, 2006 23:15, édité 1 fois.


mowmow
WRInaute passionné
WRInaute passionné
 
Messages: 975
Inscription: Mer Nov 03, 2004 9:40

Message le Mer Aoû 30, 2006 19:58

Pas mal l'utilisation de ereg_replace dans ta fonction magic corp :) Merci bien ;)


Tilt
WRInaute passionné
WRInaute passionné
 
Messages: 816
Inscription: Sam Mar 26, 2005 11:48

Message le Mer Aoû 30, 2006 23:03

Je vous propose d'organiser un concours: script le + utile, script le plus optimisé (léger en charge serveur), script le + innovant et, bien sûr, prix du meilleur script php. Non ?

Sir Dipp
WRInaute accro
WRInaute accro
 
Messages: 1025
Inscription: Lun Juil 21, 2003 17:53

Message le Jeu Aoû 31, 2006 8:02

Tilt a écrit:Je vous propose d'organiser un concours: script le + utile, script le plus optimisé (léger en charge serveur), script le + innovant et, bien sûr, prix du meilleur script php. Non ?


Dans ce cas je peux dire
Code: Tout sélectionner
<?php
echo'Hello World';
?>


Plus sécireusement faut donner une base, genre le meilleure script pour supprimes les accents, le meilleure script pour rendre les adresse cliquables etc.

A+


mowmow
WRInaute passionné
WRInaute passionné
 
Messages: 975
Inscription: Mer Nov 03, 2004 9:40

Message le Jeu Aoû 31, 2006 9:22

Pour les utilisateurs expérimentés je vous conseille également : http://tech.motion-twin.fr/

Et plus précisemment pour PHP : NSpod, PHPTal et leur librairie SQL

-http://tech.motion-twin.fr/php_sql.html
-http://tech.motion-twin.fr/php_spod.html
-http://phptal.motion-twin.com/

baptiste
WRInaute passionné
WRInaute passionné
 
Messages: 514
Inscription: Dim Avr 25, 2004 11:49

Message le Jeu Aoû 31, 2006 9:57

L’idée est bonne continuons. Mais une fois le poste lancé il va falloir créer un index des scripts.

Morceaux de scripts PHP bien utiles, participez ;)

Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités