-
Optimisation PHP et XHTML 1.1
Par Skreo dans Web development le 18 Mars 2006 à 16:47Bon j'ai pris des bonne résolutions pour cette année (un peu tard je sais ^^), je me suis mis au XHTML 1.1 Valid et j'ai décidé de coder désormais mes scripts php en classes, et en optimisant mieux.
Je sais je m'y mets un peu tard mais bon... J'ai passé l'autre jour Murties en XHTML 1.1 (classique, pas transitional) et c'est vrai que c'est plus propre avec des div et un beau css :D
Coté php, j'ai commencé un gros projet que je ne vous dévoilerai pas tout de suite, mais cette fois ci je le code entièrement en classes. Et j'ai découvert qu'il est préférable d'utiliser des ' (guillemet simple) plutôt que des " (guillemet double) pour définir une chaîne de caractères, pour la bonne raison que php cherche à chaque fois les variables utilisée dans les chaines à guillemets doubles, alors qu'il prend la chaîne au format brut lorsqu'elle est entre guillemets simples.
Par exemple :
<?php
// Php cherche les variables (ici $pseudo) dans la chaîne => plus lent
$mavar = "Bonjour $pseudo, comment ça va ?";
// Php affiche la chaine au format brut => plus rapide
$mavar = 'Bonjour '.$pseudo.', comment ça va ?';
?>C'est tout bête, mais bon à savoir :)
Partager cet article :
Tags : php, xhtml, optimisation
Suivre le flux RSS des commentaires de cet article
Revenir à la liste des articles
-
Commentaires
Oui, la contrainte vient toujours d'IE... C'est pour ça que je n'utilise pas encore les application/xhtml+xml. Je n'ai pas envie de m'embêter avec des vérifications php ^^
Pour les apostrophes, c'est vrai que ce n'est pas toujours plus rapide, mais dans la plupart des cas c'est plus lisible, surtout lorsqu'on veut afficher du code html.
Après c'est sûr que la rapidité d'exécution d'une apge de la page dépend surtout des ressources serveur, de l'optimisation des requêtes mysql, et de l'optimisation de toutes les fonctions et classes utilisées. Par exemple, ce que l'on peut remarquer, c'est que les fonctions preg comme preg_replace, sont beaucoup plus rapides (et performantes, car c'est du PCRE) que les fonctions ereg comme ereg_replace."Pour les apostrophes, c'est vrai que ce n'est pas toujours plus rapide, mais dans la plupart des cas c'est plus lisible, surtout lorsqu'on veut afficher du code html."
Sur developpez.com, le seul (je crois) test ou les guillemets sont plus rapide, c'est la :
pbnaigeon.developpez.com/...
Mais la différence est de 1 millième ou un cenitème de seconde...
Moi, j'utilise toujours les simples quotes.
Ah, et dans certains cas, print est plus rapide que echo :
www.estvideo.com/dew/inde...
J'ai fait un test moi-même entre "echo'toto',$tata;" et "echo'toto'.$tata;".
C'est plus rapide avec des virgules, car au lieu d'utiliser la concaténation, on utilise plusieurs arguments pour la "fonction".
J'ai lu aussi qu'il est plus rapide d'utiliser des include ou require que des fonctions.Au passage, le validome est un validateur bien meilleur (plus strict) que celui du W3C.
www.validome.org/
Pour cette page :
www.validome.org/validate...
Il y a un validateur qui valide plusieurs pages, maximum 200 :
validateur.ca/
Pour ce site :
validateur.ca/?q=http://s...
Il y en a un autre plus performant je trouve, mais qui ne valide pas plus de 100 pages :
www.htmlhelp.com/cgi-bin/...
Pour ce site
www.htmlhelp.com/cgi-bin/...Merci, ça m'a l'air pas mal du tout ces validateurs ^^ Par contre le validome, mieux vaut l'utiliser uniquement pour des petits sites. Car si tu essais sur un site avec un forum, tu te retrouves direct avec des milliers de pages...
Tu connaitrais pas par hasard un validateur qui fonctionne hors ligne, sous la forme d'un logiciel ou d'une extension firefox ?"Car si tu essais sur un site avec un forum, tu te retrouves direct avec des milliers de pages..."
Clair.
Pour mon site il ne marche pas, parce que j'ai pas de fichier robots.txt je crois.
Il faudra qu'un jour j'en mette un le temps de valider.
"Tu connaitrais pas par hasard un validateur qui fonctionne hors ligne, sous la forme d'un logiciel ou d'une extension firefox ?"
Il y a plein d'extensions Firefox :
HTML Validator (Hors-Ligne) : très pratique, je l'ai toujours, et en plus il y a aussi les défauts d'accessibilité.
extensions.geckozone.org/...
CSS Validator (En Ligne):
Ouvre une page du W3C qui valide les CSS de la page en cours.
Mouais... Je préfère Avoir WebDevelopper.
extensions.geckozone.org/...
Page Validator :
Idem, mais pour le HTML.
extensions.geckozone.org/...
RSS Validator :
Encore Idem, mais pour CSS
extensions.geckozone.org/...
Link Checker :
Pour les liens
extensions.geckozone.org/...
J'ai contribué sur WikiPedia et ajouté quelques validateurs. Il y en a des hors lignes je crois.
fr.wikipedia.org/wiki/HTM...
Je suis inscrit a del.ico.us et j'ai marqué plusieurs validateurs que j'ai trouvé.
Par contre ils ne sont pas tous avec les bons tags.
Tu peux voir tout en une seule page ici, il y en a :
sylvain.sab.free.fr/pages...
(cherche "xhtml", "valide", "validateur", etc...(Ctrl + F ;-) )
a plus
--
SylvainArf, je voulais dire RSS, pas CSS...
Quelques logiciels pour valider Hors-ligne :
www.htmlvalidator.com/ (payant je crois)
alexandre.alapetite.net/d...
homepage.mac.com/rcrews/s...
badame.vse.cz/validator/ (pas sur, l'url ne fonctionne plus chez moi)9bricedenice292911 Février 2007 à 18:53ça marche aussi avec le xhtml ?Ca dépend, de quel(s) module(s) parles-tu ?
De toute façon, je pense que la réponse est oui pour tous.14Jonath221015 Avril 2007 à 23:18Bonsoir,
voila, je souhaite afficher les résultat d'une requete SQl sur une page web.
dans cette requette, j'utilise dans la clause FROM une variable issue d'une page précedente $NumCompte. Le probléme est que lorque j'execute ce code, Le navigateur m'affiche : Erreur de syntaxe près de ".LaValeurDeLaVariableSaisie" à la ligne 1.
que faire? Si quelqu'un peut m'aider Ci-joint le code :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>CONSULTATION COMPTE</title>
</head>
<body>
<div style="text-align: center;">
<div style="text-align: center;"><img style="width: 996px; height: 225px;" alt="" src="ImagesSite/BanniereGSI002.bmp"><br>
</div>
<div style="text-align: left;">L'Etat de votre Compte au <?php $date = date("d-m-Y");
Print("$date");
?><br>
</div>
<?php
$NumCompte=$_POST['NumCompte'] ;
$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'banque';
// connection à la DB
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());
// requête SQL qui compte le nombre total d'enregistrement dans la table et qui
//récupère tous les enregistrements
$select = "SELECT * FROM '".$NumCompte."'";
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result);
// si on a récupéré un résultat on l'affiche.
if($total) {
// debut du tableau
echo '<table bgcolor="#FFFFFF">'."\n";
echo '<tr>';
echo '<td bgcolor="#99FF00"><b><u>Date</u></b></td>';
echo '<td bgcolor="#99FF00"><b><u>Libelle Opération</u></b></td>';
echo '<td bgcolor="#99FF00"><b><u>Debit en €uros (-)</u></b></td>';
echo '<td bgcolor="#99FF00"><b><u>Credit en €uros (+)</u></b></td>';
echo '</tr>'."\n";
while($row = mysql_fetch_array($result)) {
echo '<tr>';
echo '<td bgcolor="#FFFF33">'.$row["Date"].'</td>';
echo '<td bgcolor="#FFFF33">'.$row["Libellé d'opération"].'</td>';
echo '<td bgcolor="#FFFF33">'.$row["Débit"].'</td>';
echo '<td bgcolor="#FFFF33">'.$row["Crédit"].'</td>';
echo '</tr>'."\n";
}
echo '</table>'."\n";
// fin du tableau.
}
else echo 'Pas d\'enregistrements dans cette table...';
// on libère le résultat
mysql_free_result($result);
?>
</div>
</body>
</html>Aie ! Ton code html et php me fait mal aux yeux !
Mais bon là n'est pas la question tu vas me dire...
Dans ta requête SELECT * FROM '$NumCompte' , $NumCompte est le nom de la table MySQL dans laquelle tu vas chercher les données. Or le nom de ta variable suggère plutôt le numéro de compte d'un utilisateur... Si c'est bien ça, alors il faudrait plutôt faire quelque chose dans le genre :
$select = 'SELECT * FROM matable WHERE numcompte='.$NumCompte;
Et attention aux problèmes de sécurité ! Je te conseille de vérifier ta variable $_POST['NumCompte'] avant de l'utiliser dans une requête MySQL.
Si c'est un identifiant numérique, alors tu devrais faire quelque chose comme ça :
if(isset($_POST['NumCompte']) && is_numeric($_POST['NumCompte'])){
$NumCompte = $_POST['NumCompte'];
.... Exécution de la requête ...
}else{
echo 'Erreur !';
}
Ajouter un commentaire

Ca fait plaisir de voir quelqu'un qui se soucie du respect des standards.
Sache juste que le xhtml devrait être servi en tant qu'application/xhtml+xml et non text/html.
Par contre IE ne connait pas ce type de document.
Pour régler ca on utiliser strpos et $_SERVER['HTTP_ACCEPT'].
des liens :
www.hixie.ch/advocacy/xht...
www.uzine.net/article2143...
sebastienguillon.com/trad...
www.geckozone.org/forum/v...
Ah, et à propos des apostrophes/guillemets, ce n'est pas toujours plus rapide d'utiliser les apostrophes (moi aussi j'ai été surpris en lisant ça !) :
pbnaigeon.developpez.com/...