Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > PHP > Langage > Contribuez

Contribuez Proposez vos articles, cours, tutoriels, FAQ, sources, etc. pour PHP

Réponse
 
Outils de la discussion
Vieux 22/11/2007, 11h20   #16 (permalink)
Membre éprouvé
 
Avatar de ShinJava
 
Date d'inscription: septembre 2004
Messages: 419
Par défaut

Bonjour,
Il y a une petite faute dans la Faq PHP au chapitre 18.1 :
Types > Chaînes de caractères > Comment couper une chaîne de caractères trop longue ?

Voici le code en question :
Code :
//$str est la chaîne de caractères et $nb le nombre de caractères maximum à afficher.
function tronque($str, $nb = 150) 
{
    // Si le nombre de caractères présents dans la chaine est supérieur au nombre 
    // maximum, alors on découpe la chaine au nombre de caractères 
    if (strlen($str) > $nb) 
    {
        $str = substr($str, 0, $nb);
        $position_espace = strrpos($str, " "); //on récupère l'emplacement du dernier espace dans la chaine, pour ne pas découper un mot.
        $texte = substr($str, 0, $position_espace);  //on redécoupe à la fin du dernier mot
        $str = $str."..."; //puis on rajoute des ...
    }
    return $str; //on retourne la variable modifiée
}
La variable $texte n'est jamais reutilisée, du coup la fonction ne redécoupera pas forcement à la fin d'un dernier mot.
De plus, on pourrait très bien fusionner les 2 dernières lignes. Mais j'imagine que la dernière ligne est là pour bien expliquer à ceux qui ne sont pas encore à l'aise avec le PHP qu'on met les 3 petits point à la fin.
Donc à la place de :

Code :
        $texte = substr($str, 0, $position_espace);  //on redécoupe à la fin du dernier mot
        $str = $str."..."; //puis on rajoute des ...
On peut mettre : (correction du code originel)

Code :
        $str = substr($str, 0, $position_espace);  //on redécoupe à la fin du dernier mot
        $str = $str."..."; //puis on rajoute des ...
Ou : (petite optimisation)

Code :
        $str = substr($str, 0, $position_espace).'...';  //on redécoupe à la fin du dernier mot et on ajoute des ...
A vous de choisir ou à modifier si j'ai oublié quelque chose

Voila voila,
Bonne journée

++
ShinJava
__________________
Petit débutant deviendra grand... débutant
ShinJava est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 22/11/2007, 11h21   #17 (permalink)
Rédacteur en Chef
 
Avatar de Yogui
 
Date d'inscription: février 2004
Localisation: Yonne
Messages: 11 816
Par défaut

@ShinJava : En effet, merci
__________________
« The brain may devise laws for the blood, but a hot temper leaps o'er a cold decree. » W. Shakespeare, The Merchant of Venice, 143

Mes articles - Mon blog - Zend Certified Engineer (PHP + Zend Framework) - Ma Brute
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 04/12/2007, 14h43   #18 (permalink)
Membre éclairé
 
Avatar de alceste
 
Date d'inscription: mars 2006
Localisation: Nantes
Messages: 318
Par défaut Doctrine méthodes, obsolètes

Bonjour,

Je viens de me mettre à Doctrine, et j'en ai profité pour consulter la FAQ histoire de confirmé si j'avais compris la documentation correctement après l'avoir lu entièrement et peut-être même découvrir des petits trucs.
Je me suis aperçu que les méthodes utilisées dans la FAQ, sont obsolète, enfin au moins une, voir plus je ne me souviens plus lesquelles j'ai testé, en tout cas la méthode export() de la classe Doctrine dans la FAQ n'est plus d'actualité aujourd'hui.

http://php.developpez.com/faq/?page=doctrine
alceste est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 26/06/2008, 21h59   #19 (permalink)
Membre éclairé
 
Date d'inscription: septembre 2004
Localisation: Nord
Âge: 22
Messages: 352
Par défaut

Lors de calculs on obtiens rarement un nombre entier , hors la plus part du temps on a besoin d'un nombre entier pour stocker dans la base de donnée .

S'est pour cela qu'existe :floor() , ceil(), round()

Exemple
Code :
$nb=1.559243;  
$nb1=floor($nb);//Arrondit à l'entier inférieur 1
$nb2=ceil($nb);//Arrondit au nombre supérieur 2
$nb3=round($nb);//Arrondi un nombre à virgule flottante 2
round Peux aussi arrondir au centième prés.


--------------------------------------------

Comment ne pas avoir de résultat négatif :

Code :
$result=min(0,$result);
Il existe aussi max , qui permet de ne pas aller stocker des chiffres trop grand.

( Le premier exemple , je le cherchais , j'avais oublier round , donc j'ai chercher sans succès dans le FAQ)


EDIT : Merci Fladnag , je ne l'avais pas vu .

Dernière modification par paterson ; 28/06/2008 à 18h41
paterson est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 27/06/2008, 09h48   #20 (permalink)
Membre Expert
 
Date d'inscription: janvier 2004
Messages: 1 110
Par défaut

Citation:
Envoyé par paterson Voir le message
Lors de calculs on obtiens rarement un nombre entier , hors la plus part du temps on a besoin d'un nombre entier pour stocker dans la base de donnée .

S'est pour cela qu'existe :floor() , ceil(), round()

Exemple
Code :
$nb=1.559243;  
$nb1=floor($nb);//Arrondit à l'entier inférieur 1
$nb2=ceil($nb);//Arrondit au nombre supérieur 2
$nb3=round($nb);//Arrondi un nombre à virgule flottante 2
round Peux aussi arrondir au centième prés.
http://php.developpez.com/faq/index....mbres_arrondis
__________________
Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production)
Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error());
Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable.
Regle n°4 : RTFM !!
Regle n°5 : dites NON au langage SMS...
Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/
Fladnag est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 31/07/2008, 15h44   #21 (permalink)
Rédacteur/Modérateur
 
Avatar de Eusebe
 
Date d'inscription: mars 2006
Localisation: Aude
Âge: 31
Messages: 1 410
Par défaut

Y aurait-il une coquille dans la FAQ ?

Question : http://php.developpez.com/faq/?page=..._forcedownload
remplacer attachement par attachment ?

Voir le sujet :
http://www.developpez.net/forums/sho....php?p=3512971
Eusebe est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 31/07/2008, 16h38   #22 (permalink)
Rédacteur
 
Avatar de Eusebius
 
Date d'inscription: avril 2003
Localisation: Grenoble
Messages: 3 269
Par défaut

Citation:
Envoyé par Eusebe Voir le message
Y aurait-il une coquille dans la FAQ ?

Question : http://php.developpez.com/faq/?page=..._forcedownload
remplacer attachement par attachment ?

Voir le sujet :
http://www.developpez.net/forums/sho....php?p=3512971
Oui, ça a l'air.
(Pfff, et en plus on suit les mêmes topics, ça va aider tiens pour pas nous confondre !)
__________________

- Postez dans le bon sous-forum et utilisez les tags qui correspondent.
- Lisez la doc et les tutos. Vous avez la flemme ? N'attendez rien de moi.
Tous mes tutoriels
Pas de questions techniques par MP ni par e-mail, merci !
Prolog rules!
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 27/10/2008, 12h21   #23 (permalink)
Responsable
C et GTK+
 
Avatar de gege2061
 
Date d'inscription: juin 2004
Localisation: Tours - Paris
Âge: 25
Messages: 5 447
Par défaut

Une question par forcement fréquente mais la réponse n'est pas clairement expliquée dans la doc :

Citation:
Pourquoi isset renvoi toujours false ?

Comme précisé dans la documentation officiel, isset fonctionne uniquement avec les variables.

Pour les constantes, il faut utiliser defines.

Et pour les variables "magiques" (ie: gérée avec les fonctions magiques __set et __get), il faut définir la méthode __isset qui sera automatiquement appelée via la fonction isset. Exemple :

Code :
class Foo
{
  private $vars = array ();
 
  private function __set ($key, $value)
  {
    $this->vars[$key] = $value;
  }
 
  public function __get ($key)
  {
    return $this->vars[$key];
  }
 
  public function __isset ($key)
  {
    return isset ($this->vars[$key]);
  }
}
 
$foo = new foo ();
isset ($foo->bar); // Retourne false
$foo->bar = 'bar';
isset ($foo->bar); // Retourne true
 
__________________
Responsable GTK+
gege2061 est déconnecté   Envoyer un message privé Réponse avec citation
NEWS PHPFAQ PHPCOURS PHPSOURCES PHPLIVRES PHPSCRIPTS PHPOUTILS PHPCOMPARATIFSPHP TVZend Framework

Réponse

Précédent   Forum des développeurs > PHP > Langage > Contribuez



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide