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
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
Une question par forcement fréquente mais la réponse n'est pas clairement expliquée dans la doc :
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 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
il y a une erreur de code dans la FAQ
http://php.developpez.com/faq/?page=...ner_couleur_tr
"Pour alterner les couleurs, il suffit de faire ainsi : "
la variable $compteur doit être remplacée par la variable $i
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 $i = 0; while(condition) { $couleur = ($compteur % 2 == 0) ? "#CCCCCC" : "#FFFFFF"; echo '<tr bgcolor="'.$couleur.'"><td>texte</td></tr>'; $i++; }
donc
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 $i = 0; while(condition) { $couleur = ($i % 2 == 0) ? "#CCCCCC" : "#FFFFFF"; echo '<tr bgcolor="'.$couleur.'"><td>texte</td></tr>'; $i++; }
J'ai une proposition pour la question :
Explications et correction de l'erreur "headers already sent"
http://php.developpez.com/faq/?page=...s_already_sent
Dans la liste de ce qui cause l'envoi des en-têtes, il serait peut être intéressant d'y ajouter : "Les fichiers php encodés en UTF8 avec BOM"
En effet c'est un cas assez particulier, car aucun texte n'est renvoyé à l'écran et un débutant pourrait pas mal galérer pour trouver la solution. Surtout que la tendance va justement vers l'UTF8.
Zend Certified PHP Engineer
« Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana
Waouh ! J'avais commencé un petit texte, et au moment de faire mon copier-coller, je vois que je ne suis pas le seul à y avoir pensé !
Pour la description précise du problème, je renvoie vers Wikipedia qui est assez claire sur le sujet, et je ne citerais que ce passage :
J'ai eu à intervenir plusieurs fois chez des amis ou connaissances qui développent sous windows avant de charger leur site en FTP sur un système linux.Problèmes liés à l'utilisation de la marque d'ordre des octets
Beaucoup de logiciels Windows (incluant Windows Notepad) en ajoutent un aux fichiers UTF-8. Cependant, sur des systèmes de type Unix (qui utilisent beaucoup les fichiers textes pour la configuration) cette pratique n'est pas recommandée, car cela peut interférer avec le traitement adéquat de codes importants tels que le sha-bang au début d'un script interprété. Il peut également interférer avec le source pour les langages de programmation qui ne le reconnaissent pas. Par exemple, gcc reporte des stray characters au début du fichier source, et en PHP, si l'output buffering est désactivé, cela a pour effet subtil de faire que la page commence immédiatement à être envoyée au navigateur, et d'empêcher les custom headers d'être spécifiés par le script PHP. La représentation UTF-8 du BOM est la séquence d'octets EF BB BF, qui apparaît en codage ISO-8859-1 comme "" dans les éditeurs de textes et navigateurs mal préparés pour traiter l'UTF-8. Ils peuvent également échouer à appliquer la première règle d'une feuille CSS.
Le BOM et l'output buffering ne faisaient pas bon ménage (les vues Zend_View avec ce caractère explosaient le rendu), mais il leur était impossible de trouver cette erreur, qui est assez discrète pour qui n'en a pas eu l'expérience précédemment.
Pour compliquer la chose, ajoutons à cela que les éditeurs actuels (Notepad++ par exemple) masquent le BOM par défaut.
Le problème a déjà été rencontré plusieurs fois sur le forum, aussi serait-il judicieux de préciser cette source d'erreur.
Enfin, si ça peut aider, je peux apporter ma petite contribution sous la forme de ce mini-script qui repère les fichiers incriminés dans une arborescence.
La correction des fichiers incriminés peut se déduire de ce script, bien que personnellement je préfère le faire en Perl lorsque je dispose d'un accès ssh.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 <?php /** JML - findBom.php Ce script va parcourir toute l'arborescence à partir de son emplacement pour repérer les fichiers contenant le BOM utf8 La sortie est une table récapitulative des fichiers testés */ $path = realpath('./'); $objects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path), RecursiveIteratorIterator::SELF_FIRST); echo "<table>\n<tr><th>Fichier testé</th><th>Résultat</th></tr>\n"; foreach($objects as $name => $object){ if (!preg_match('/php|txt|p?html?$/', $name)) continue; echo "<tr>"; printf ("<td>%s</td>", $name); $content = file_get_contents($name); if (preg_match('/\x{feff}/u', $content, $match)) echo '<td style="color: red;">BOM</td>'; else echo '<td style="color: green;">OK</td>'; echo "</tr>\n"; } echo "</table>\n";
Qu'en pensez-vous ?
- Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
- Merci d'utiliser les balises de code (# dans l'éditeur)
- N'oubliez pas de vous servir des boutons , et
S.N.A.F.U
Bonjour a toutes et tous,
J'ai parcourus la FAQ pour voir si la question avait déjà était posée et à priori non (mais je ne sais pas si elle peut intéresser) .
Comment afficher un flottant avec un nombre de chiffre fini après la virgule ?
J'ai découvert récemment l'existence et la puissance des variables en php en voulant les utiliser pour mon site. Je suis amener à faire différentes opérations mathématiques dont des divisions. Or certaines de mes divisions me donnent des résultats avec un nombre infini de chiffre après la virgule (même si à l'affichage cela s'arrête à 10 je crois). Or dans mon cas je ne veux que 2 chiffres après la virgules et donc voici quel code utiliser
C'est un peu barbare donc voici un exemple:
Code : Sélectionner tout - Visualiser dans une fenêtre à part number_format(float $number [, int $decimal =0 ])
en utilisant number_format, on affichera 0.33 au lieu de 0.3333333333
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <?php $a = 1; $b = 3 $r = $a / $b echo number_format($r, 2);
Après il suffit juste de choisir le nombre que l'on veut après la virgule
J'espère que ma proposition sera utile
Si vous voulez suivre les différents championnats de football américain en France, en Europe et dans le Monde (en tout 32 pays différents), c'est sur www.fandefootus.fr
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager