| |
|
Voir le sujet précédent :: Voir le sujet suivant
|
| Auteur |
Message |
| |
|
mowmow WRInaute passionné

Inscrit le: 03 Nov 2004 Messages: 962 Localisation: Zend Engine
|
Posté le : Mer Aoû 30, 2006 12:33 Sujet du message: Morceaux de scripts PHP bien utiles, participez ;) |
|
|
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: |
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: |
| echo pagination($_GET['page'], ceil($count/$limit), '/mon_url/{id}.html', 3); |
Pour tester :
| Code: |
| 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 
Dernière édition par mowmow le Jeu Aoû 31, 2006 13:15; édité 2 fois |
|
| |
|
 |
yanhl WRInaute passionné

Inscrit le: 04 Déc 2003 Messages: 792
|
|
| |
|
 |
mego WRInaute impliqué

Inscrit le: 07 Mar 2006 Messages: 323 Localisation: fr / es
|
Posté le : Mer Aoû 30, 2006 14:40 Sujet du message: Morceaux de scripts PHP bien utiles, participez ;) |
|
|
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é

Inscrit le: 11 Avr 2005 Messages: 655 Localisation: Saint Martin du Var
|
Posté le : Mer Aoû 30, 2006 15:35 Sujet du message: Morceaux de scripts PHP bien utiles, participez ;) |
|
|
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: |
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: |
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é

Inscrit le: 03 Nov 2004 Messages: 962 Localisation: Zend Engine
|
Posté le : Mer Aoû 30, 2006 15:39 Sujet du message: Morceaux de scripts PHP bien utiles, participez ;) |
|
|
| 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

Inscrit le: 16 Jan 2004 Messages: 2900
|
Posté le : Mer Aoû 30, 2006 16:56 Sujet du message: Morceaux de scripts PHP bien utiles, participez ;) |
|
|
| Code: |
<?php
echo "Hello World !";
?> |
|
|
| |
|
 |
seek Nouveau WRInaute
Inscrit le: 05 Nov 2004 Messages: 41
|
Posté le : Mer Aoû 30, 2006 16:57 Sujet du message: Morceaux de scripts PHP bien utiles, participez ;) |
|
|
| 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

Inscrit le: 03 Nov 2004 Messages: 1733 Localisation: bordeaux
|
Posté le : Mer Aoû 30, 2006 17:09 Sujet du message: Morceaux de scripts PHP bien utiles, participez ;) |
|
|
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: |
/**
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: |
$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

Inscrit le: 22 Nov 2005 Messages: 1136
|
Posté le : Mer Aoû 30, 2006 17:31 Sujet du message: Morceaux de scripts PHP bien utiles, participez ;) |
|
|
| Code: |
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: |
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é

Inscrit le: 17 Juin 2004 Messages: 422 Localisation: Suisse
|
Posté le : Mer Aoû 30, 2006 20:40 Sujet du message: Morceaux de scripts PHP bien utiles, participez ;) |
|
|
Fonction de mise en forme de texte pour utilisation dans une URL (Par exemple pour de l'URL Rewriting)
| Code: |
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 Jeu Aoû 31, 2006 0:15; édité 1 fois |
|
| |
|
 |
mowmow WRInaute passionné

Inscrit le: 03 Nov 2004 Messages: 962 Localisation: Zend Engine
|
Posté le : Mer Aoû 30, 2006 20:58 Sujet du message: Morceaux de scripts PHP bien utiles, participez ;) |
|
|
Pas mal l'utilisation de ereg_replace dans ta fonction magic corp Merci bien  |
|
| |
|
 |
Tilt WRInaute passionné

Inscrit le: 26 Mar 2005 Messages: 715
|
Posté le : Jeu Aoû 31, 2006 0:03 Sujet du message: Morceaux de scripts PHP bien utiles, participez ;) |
|
|
| 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

Inscrit le: 21 Juil 2003 Messages: 1021
|
Posté le : Jeu Aoû 31, 2006 9:02 Sujet du message: Morceaux de scripts PHP bien utiles, participez ;) |
|
|
| 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: |
<?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é

Inscrit le: 03 Nov 2004 Messages: 962 Localisation: Zend Engine
|
Posté le : Jeu Aoû 31, 2006 10:22 Sujet du message: Morceaux de scripts PHP bien utiles, participez ;) |
|
|
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 impliqué

Inscrit le: 25 Avr 2004 Messages: 497
|
Posté le : Jeu Aoû 31, 2006 10:57 Sujet du message: Morceaux de scripts PHP bien utiles, participez ;) |
|
|
| L’idée est bonne continuons. Mais une fois le poste lancé il va falloir créer un index des scripts. |
|
| |
|
 |
| |
|
|
|
|
Autres sujets de discussion :
|
|